diff --git a/apps/meteor/app/api/server/v1/channels.ts b/apps/meteor/app/api/server/v1/channels.ts index 8fe5e472a939..e55bb31e0787 100644 --- a/apps/meteor/app/api/server/v1/channels.ts +++ b/apps/meteor/app/api/server/v1/channels.ts @@ -270,7 +270,6 @@ API.v1.addRoute( return API.v1.unauthorized(); } - // @ts-expect-error recursive types are causing issues here const { cursor, totalCount } = Messages.findPaginated(ourQuery, { sort: sort || { ts: -1 }, skip: offset, diff --git a/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts b/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts index 3b96238a0051..224d6a2e0dc6 100644 --- a/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts +++ b/apps/meteor/app/apps/server/storage/AppGridFSSourceStorage.ts @@ -1,6 +1,6 @@ import { MongoInternals } from 'meteor/mongo'; -import { ObjectId } from 'mongodb'; -import type { GridFSBucket, GridFSBucketWriteStream } from 'mongodb'; +import type { GridFSBucketWriteStream } from 'mongodb'; +import { ObjectId, GridFSBucket } from 'mongodb'; import type { IAppStorageItem } from '@rocket.chat/apps-engine/server/storage'; import { AppSourceStorage } from '@rocket.chat/apps-engine/server/storage'; @@ -14,7 +14,6 @@ export class AppGridFSSourceStorage extends AppSourceStorage { constructor() { super(); - const { GridFSBucket } = MongoInternals.NpmModules.mongodb.module; const { db } = MongoInternals.defaultRemoteCollectionDriver().mongo; this.bucket = new GridFSBucket(db, { diff --git a/apps/meteor/app/livechat/server/api/lib/inquiries.ts b/apps/meteor/app/livechat/server/api/lib/inquiries.ts index 070eb6d606e2..b9ea900cc196 100644 --- a/apps/meteor/app/livechat/server/api/lib/inquiries.ts +++ b/apps/meteor/app/livechat/server/api/lib/inquiries.ts @@ -58,7 +58,6 @@ export async function findInquiries({ ], }; - // @ts-ignore - LivechatInquiry has a ref to messages const { cursor, totalCount } = LivechatInquiry.findPaginated(filter, options); const [inquiries, total] = await Promise.all([cursor.toArray(), totalCount]); diff --git a/apps/meteor/app/livechat/server/api/lib/transfer.ts b/apps/meteor/app/livechat/server/api/lib/transfer.ts index dcbc0570c475..d01d85402cae 100644 --- a/apps/meteor/app/livechat/server/api/lib/transfer.ts +++ b/apps/meteor/app/livechat/server/api/lib/transfer.ts @@ -13,7 +13,6 @@ export async function findLivechatTransferHistory({ rid: string; pagination: { offset: number; count: number; sort: Record }; }): Promise> { - // @ts-ignore - Messages destroys everything it touches const { cursor, totalCount } = Messages.findPaginated( { rid, t: 'livechat_transfer_history' }, { diff --git a/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts b/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts index 874e27010a63..59e059acbfe4 100644 --- a/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts +++ b/apps/meteor/app/livechat/server/business-hour/AbstractBusinessHour.ts @@ -2,6 +2,7 @@ import moment from 'moment-timezone'; import type { ILivechatBusinessHour, ILivechatDepartment } from '@rocket.chat/core-typings'; import type { ILivechatBusinessHoursModel, IUsersModel } from '@rocket.chat/model-typings'; import { LivechatBusinessHours, Users } from '@rocket.chat/models'; +import type { UpdateFilter } from 'mongodb'; import type { IWorkHoursCronJobsWrapper } from '../../../../server/models/raw/LivechatBusinessHours'; @@ -62,7 +63,9 @@ export abstract class AbstractBusinessHourType { businessHourData.active = Boolean(businessHourData.active); businessHourData = this.convertWorkHours(businessHourData); if (businessHourData._id) { - await this.BusinessHourRepository.updateOne({ _id: businessHourData._id }, { $set: businessHourData }); + await this.BusinessHourRepository.updateOne({ _id: businessHourData._id }, { + $set: businessHourData, + } as UpdateFilter); // TODO: Remove this cast when TypeScript is updated return businessHourData._id; } const { insertedId } = await this.BusinessHourRepository.insertOne(businessHourData); diff --git a/apps/meteor/app/ui/client/lib/ChatMessages.ts b/apps/meteor/app/ui/client/lib/ChatMessages.ts index 329717af30fa..088eab6969ba 100644 --- a/apps/meteor/app/ui/client/lib/ChatMessages.ts +++ b/apps/meteor/app/ui/client/lib/ChatMessages.ts @@ -379,16 +379,15 @@ export class ChatMessages { readMessage.readNow(rid); readMessage.refreshUnreadMark(rid); - const message = await onClientBeforeSendMessage({ + const message = (await onClientBeforeSendMessage({ _id: Random.id(), rid, tshow, tmid, msg, - }); + })) as IMessage; try { - // @ts-ignore await this.processMessageSend(message); this.quotedMessages.clear(); } catch (error) { @@ -405,8 +404,7 @@ export class ChatMessages { try { if (message.attachments && message.attachments?.length > 0) { - // @ts-ignore - await this.processMessageEditing({ _id: this.editing.id, rid, msg: '' }); + await this.processMessageEditing({ _id: this.editing.id, rid, msg: '' } as IMessage); return; } diff --git a/apps/meteor/ee/server/lib/registerServiceModels.ts b/apps/meteor/ee/server/lib/registerServiceModels.ts index 3d75c96b9296..cb4ef969603c 100644 --- a/apps/meteor/ee/server/lib/registerServiceModels.ts +++ b/apps/meteor/ee/server/lib/registerServiceModels.ts @@ -28,28 +28,24 @@ import { EmailInboxRaw } from '../../../server/models/raw/EmailInbox'; import { PbxEventsRaw } from '../../../server/models/raw/PbxEvents'; // TODO add trash param to appropiate model instances -export function registerServiceModels(db: Db, trash?: Collection): void { +export function registerServiceModels(db: Db, trash?: Collection>): void { registerModel('IRolesModel', () => new RolesRaw(db)); registerModel('IRoomsModel', () => new RoomsRaw(db)); - registerModel('ISettingsModel', () => new SettingsRaw(db, trash as unknown as Collection>)); - registerModel( - 'ISubscriptionsModel', - () => new SubscriptionsRaw(db, trash as unknown as Collection>), - ); + registerModel('ISettingsModel', () => new SettingsRaw(db, trash as Collection>)); + registerModel('ISubscriptionsModel', () => new SubscriptionsRaw(db, trash as Collection>)); registerModel('ITeamModel', () => new TeamRaw(db)); registerModel('ITeamMemberModel', () => new TeamMemberRaw(db)); registerModel('IUsersModel', () => new UsersRaw(db)); - // @ts-ignore-error registerModel('IMessagesModel', () => new MessagesRaw(db)); registerModel( 'ILivechatInquiryModel', - () => new LivechatInquiryRaw(db, trash as unknown as Collection>), + () => new LivechatInquiryRaw(db, trash as Collection>), ); registerModel( 'ILivechatDepartmentAgentsModel', - () => new LivechatDepartmentAgentsRaw(db, trash as unknown as Collection>), + () => new LivechatDepartmentAgentsRaw(db, trash as Collection>), ); registerModel('IUsersSessionsModel', () => new UsersSessionsRaw(db)); registerModel('IPermissionsModel', () => new PermissionsRaw(db)); diff --git a/apps/meteor/ee/server/models/raw/LivechatRooms.ts b/apps/meteor/ee/server/models/raw/LivechatRooms.ts index 65c17086027a..f0513cb51a01 100644 --- a/apps/meteor/ee/server/models/raw/LivechatRooms.ts +++ b/apps/meteor/ee/server/models/raw/LivechatRooms.ts @@ -23,7 +23,6 @@ declare module '@rocket.chat/model-typings' { } } -// Note: Expect a circular dependency error here 😓 export class LivechatRoomsRawEE extends LivechatRoomsRaw implements ILivechatRoomsModel { async unsetAllPredictedVisitorAbandonment(): Promise { return this.updateMany( diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 54582245e97e..eb746048eea0 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -40,7 +40,7 @@ "jaeger-client": "^3.19.0", "mem": "^8.1.1", "moleculer": "^0.14.21", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "nats": "^2.6.1", "pino": "^7.11.0", "sodium-native": "^3.3.0", diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 28030345fb7d..4fdeb2fbc304 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -333,7 +333,7 @@ "moleculer": "^0.14.21", "moment": "^2.29.4", "moment-timezone": "^0.5.34", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "mongodb-memory-server": "^7.6.3", "nats": "^2.6.1", "node-dogstatsd": "^0.0.7", diff --git a/apps/meteor/server/models/raw/BaseRaw.ts b/apps/meteor/server/models/raw/BaseRaw.ts index cf4cc19c1c8d..53c74b0d2999 100644 --- a/apps/meteor/server/models/raw/BaseRaw.ts +++ b/apps/meteor/server/models/raw/BaseRaw.ts @@ -23,7 +23,7 @@ import type { DeleteOptions, } from 'mongodb'; import { ObjectId } from 'mongodb'; -import type { IRocketChatRecord, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; +import type { RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { IBaseModel, DefaultFields, ResultFields, FindPaginated, InsertionModel } from '@rocket.chat/model-typings'; import { getCollectionName } from '@rocket.chat/models'; @@ -42,7 +42,12 @@ type ModelOptions = { collection?: CollectionOptions; }; -export abstract class BaseRaw = undefined> implements IBaseModel { +export abstract class BaseRaw< + T extends { _id: string }, + C extends DefaultFields = undefined, + TDeleted extends RocketChatRecordDeleted = RocketChatRecordDeleted, +> implements IBaseModel +{ public readonly defaultFields: C; public readonly col: Collection; @@ -60,7 +65,7 @@ export abstract class BaseRaw = undefined> impleme * @param trash Trash collection instance * @param options Model options */ - constructor(private db: Db, protected name: string, protected trash?: Collection>, options?: ModelOptions) { + constructor(private db: Db, protected name: string, protected trash?: Collection, options?: ModelOptions) { this.collectionName = options?.collectionNameResolver ? options.collectionNameResolver(name) : getCollectionName(name); this.col = this.db.collection(this.collectionName, options?.collection || {}); @@ -75,8 +80,8 @@ export abstract class BaseRaw = undefined> impleme this.preventSetUpdatedAt = options?.preventSetUpdatedAt ?? false; } - protected modelIndexes(): IndexDescription[] | void { - // noop + protected modelIndexes(): IndexDescription[] | undefined { + return undefined; } getCollectionName(): string { @@ -104,7 +109,9 @@ export abstract class BaseRaw = undefined> impleme private ensureDefaultFields

(options: FindOptions

): FindOptions

; - private ensureDefaultFields

(options?: any): FindOptions

| undefined | FindOptions { + private ensureDefaultFields

( + options?: FindOptions

& { fields?: FindOptions

['projection'] }, + ): FindOptions

| FindOptions | undefined { if (options?.fields) { warnFields("Using 'fields' in models is deprecated.", options); } @@ -128,24 +135,24 @@ export abstract class BaseRaw = undefined> impleme return this.col.findOneAndUpdate(query, update, options || {}); } - async findOneById(_id: string, options?: FindOptions | undefined): Promise; + async findOneById(_id: T['_id'], options?: FindOptions): Promise; - async findOneById

(_id: string, options?: FindOptions

): Promise

; + async findOneById

(_id: T['_id'], options?: FindOptions

): Promise

; - async findOneById(_id: string, options?: any): Promise { - const query = { _id } as unknown as Filter; + async findOneById(_id: T['_id'], options?: any): Promise { + const query: Filter = { _id } as Filter; if (options) { return this.findOne(query, options); } return this.findOne(query); } - async findOne(query?: Filter | string, options?: undefined): Promise; + async findOne(query?: Filter | T['_id'], options?: undefined): Promise; - async findOne

(query: Filter | string, options: FindOptions

): Promise

; + async findOne

(query: Filter | T['_id'], options: FindOptions

): Promise

; - async findOne

(query: Filter | string = {}, options?: any): Promise | WithId

| null> { - const q = typeof query === 'string' ? ({ _id: query } as unknown as Filter) : query; + async findOne

(query: Filter | T['_id'] = {}, options?: any): Promise | WithId

| null> { + const q: Filter = typeof query === 'string' ? ({ _id: query } as Filter) : query; const optionsDef = this.doNotMixInclusionAndExclusionFields(options); if (optionsDef) { return this.col.findOne(q, optionsDef); @@ -153,22 +160,18 @@ export abstract class BaseRaw = undefined> impleme return this.col.findOne(q); } - // findUsersInRoles(): void { - // throw new Error('[overwrite-function] You must overwrite this function in the extended classes'); - // } - find(query?: Filter): FindCursor>; find

(query: Filter, options?: FindOptions

): FindCursor

; - find

(query: Filter | undefined = {}, options?: FindOptions

): FindCursor> | FindCursor> { + find

(query: Filter = {}, options?: FindOptions

): FindCursor> | FindCursor> { const optionsDef = this.doNotMixInclusionAndExclusionFields(options); return this.col.find(query, optionsDef); } findPaginated

(query: Filter, options?: FindOptions

): FindPaginated>>; - findPaginated(query: Filter | undefined = {}, options?: any): FindPaginated>> { + findPaginated(query: Filter = {}, options?: any): FindPaginated>> { const optionsDef = this.doNotMixInclusionAndExclusionFields(options); const cursor = optionsDef ? this.col.find(query, optionsDef) : this.col.find(query); @@ -181,7 +184,7 @@ export abstract class BaseRaw = undefined> impleme } /** - * @deprecated use updateOne or updateAny instead + * @deprecated use {@link updateOne} or {@link updateAny} instead */ update( filter: Filter, @@ -220,7 +223,7 @@ export abstract class BaseRaw = undefined> impleme }); // TODO reavaluate following type casting - return this.col.insertMany(docs as unknown as Array>, options || {}); + return this.col.insertMany(docs as unknown as OptionalUnlessRequiredId[], options || {}); } insertOne(doc: InsertionModel, options?: InsertOneOptions): Promise> { @@ -235,8 +238,8 @@ export abstract class BaseRaw = undefined> impleme return this.col.insertOne(doc as unknown as OptionalUnlessRequiredId, options || {}); } - removeById(_id: string): Promise { - return this.deleteOne({ _id } as unknown as Filter); + removeById(_id: T['_id']): Promise { + return this.deleteOne({ _id } as Filter); } async deleteOne(filter: Filter, options?: DeleteOptions & { bypassDocumentValidation?: boolean }): Promise { @@ -247,25 +250,21 @@ export abstract class BaseRaw = undefined> impleme return this.col.deleteOne(filter); } - const doc = (await this.findOne(filter)) as unknown as (IRocketChatRecord & T) | undefined; + const doc = await this.findOne(filter); if (doc) { const { _id, ...record } = doc; - const trash = { + const trash: TDeleted = { ...record, _deletedAt: new Date(), __collection__: this.name, - } as RocketChatRecordDeleted; + } as unknown as TDeleted; // since the operation is not atomic, we need to make sure that the record is not already deleted/inserted - await this.trash?.updateOne( - { _id } as Filter>, - { $set: trash }, - { - upsert: true, - }, - ); + await this.trash?.updateOne({ _id } as Filter, { $set: trash } as UpdateFilter, { + upsert: true, + }); } if (options) { @@ -284,26 +283,22 @@ export abstract class BaseRaw = undefined> impleme const cursor = this.find(filter); - const ids: string[] = []; + const ids: T['_id'][] = []; for await (const doc of cursor) { - const { _id, ...record } = doc as unknown as IRocketChatRecord & T; + const { _id, ...record } = doc as T; - const trash = { + const trash: TDeleted = { ...record, _deletedAt: new Date(), __collection__: this.name, - } as RocketChatRecordDeleted; + } as unknown as TDeleted; - ids.push(_id); + ids.push(_id as T['_id']); // since the operation is not atomic, we need to make sure that the record is not already deleted/inserted - await this.trash?.updateOne( - { _id } as Filter>, - { $set: trash }, - { - upsert: true, - }, - ); + await this.trash?.updateOne({ _id } as Filter, { $set: trash } as UpdateFilter, { + upsert: true, + }); } if (options) { @@ -313,17 +308,16 @@ export abstract class BaseRaw = undefined> impleme } // Trash - trashFind

>( - query: Filter>, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): FindCursor>> | undefined { + trashFind

( + query: Filter, + options?: FindOptions

, + ): FindCursor> | undefined { if (!this.trash) { return undefined; } - const { trash } = this; if (options) { - return trash.find( + return this.trash.find( { __collection__: this.name, ...query, @@ -331,36 +325,34 @@ export abstract class BaseRaw = undefined> impleme options, ); } - return trash.find({ + + return this.trash.find({ __collection__: this.name, ...query, }); } - trashFindOneById(_id: string): Promise | null>; + trashFindOneById(_id: TDeleted['_id']): Promise; - trashFindOneById

( - _id: string, - options: FindOptions

? RocketChatRecordDeleted : P>, - ): Promise

; + trashFindOneById

(_id: TDeleted['_id'], options: FindOptions

): Promise

; - async trashFindOneById

>( - _id: string, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): Promise | RocketChatRecordDeleted> | null> { + async trashFindOneById

( + _id: TDeleted['_id'], + options?: FindOptions

, + ): Promise | null> { const query = { _id, __collection__: this.name, - } as Filter>; + } as Filter

; if (!this.trash) { return null; } if (options) { - return this.trash.findOne(query, options); + return (this.trash as Collection

).findOne(query, options); } - return this.trash.findOne(query); + return (this.trash as Collection

).findOne(query); } private setUpdatedAt(record: UpdateFilter | InsertionModel): void { @@ -370,20 +362,20 @@ export abstract class BaseRaw = undefined> impleme setUpdatedAt(record); } - trashFindDeletedAfter(deletedAt: Date): FindCursor>>; + trashFindDeletedAfter(deletedAt: Date): FindCursor>; - trashFindDeletedAfter

>( + trashFindDeletedAfter

( deletedAt: Date, - query?: Filter>, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): FindCursor>> { + query?: Filter, + options?: FindOptions

, + ): FindCursor> { const q = { __collection__: this.name, _deletedAt: { $gt: deletedAt, }, ...query, - } as Filter>; + } as Filter; if (!this.trash) { throw new Error('Trash is not enabled for this collection'); @@ -395,18 +387,18 @@ export abstract class BaseRaw = undefined> impleme return this.trash.find(q); } - trashFindPaginatedDeletedAfter

>( + trashFindPaginatedDeletedAfter

( deletedAt: Date, - query?: Filter>, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): FindPaginated>>> { - const q = { + query?: Filter, + options?: FindOptions

, + ): FindPaginated>> { + const q: Filter = { __collection__: this.name, _deletedAt: { $gt: deletedAt, }, ...query, - } as Filter>; + } as Filter; if (!this.trash) { throw new Error('Trash is not enabled for this collection'); diff --git a/apps/meteor/server/models/raw/LivechatInquiry.ts b/apps/meteor/server/models/raw/LivechatInquiry.ts index ea2d65953bf2..db70a888b385 100644 --- a/apps/meteor/server/models/raw/LivechatInquiry.ts +++ b/apps/meteor/server/models/raw/LivechatInquiry.ts @@ -5,7 +5,6 @@ import { LivechatInquiryStatus } from '@rocket.chat/core-typings'; import { BaseRaw } from './BaseRaw'; -// @ts-ignore Circular reference on field 'attachments' export class LivechatInquiryRaw extends BaseRaw implements ILivechatInquiryModel { constructor(db: Db, trash?: Collection>) { super(db, 'livechat_inquiry', trash); diff --git a/apps/meteor/server/models/raw/LivechatRooms.js b/apps/meteor/server/models/raw/LivechatRooms.js index 4beb24ec6393..b8bffcc4b615 100644 --- a/apps/meteor/server/models/raw/LivechatRooms.js +++ b/apps/meteor/server/models/raw/LivechatRooms.js @@ -3,6 +3,9 @@ import { escapeRegExp } from '@rocket.chat/string-helpers'; import { BaseRaw } from './BaseRaw'; import { getValue } from '../../../app/settings/server/raw'; +/** + * @extends BaseRaw + */ export class LivechatRoomsRaw extends BaseRaw { constructor(db, trash) { super(db, 'room', trash); diff --git a/apps/meteor/server/models/raw/LivechatTrigger.ts b/apps/meteor/server/models/raw/LivechatTrigger.ts index ce9a00edd6a2..de719769b2b9 100644 --- a/apps/meteor/server/models/raw/LivechatTrigger.ts +++ b/apps/meteor/server/models/raw/LivechatTrigger.ts @@ -1,6 +1,6 @@ import type { ILivechatTrigger, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { ILivechatTriggerModel } from '@rocket.chat/model-typings'; -import type { Collection, FindCursor, Db, IndexDescription, UpdateResult } from 'mongodb'; +import type { Collection, FindCursor, Db, IndexDescription, UpdateFilter, UpdateResult } from 'mongodb'; import { BaseRaw } from './BaseRaw'; @@ -18,6 +18,6 @@ export class LivechatTriggerRaw extends BaseRaw implements ILi } updateById(_id: string, data: ILivechatTrigger): Promise { - return this.updateOne({ _id }, { $set: data }); + return this.updateOne({ _id }, { $set: data } as UpdateFilter); // TODO: remove this cast when TypeScript is updated } } diff --git a/apps/meteor/server/models/raw/LivechatVisitors.ts b/apps/meteor/server/models/raw/LivechatVisitors.ts index 7e4b88e712fc..be045f495070 100644 --- a/apps/meteor/server/models/raw/LivechatVisitors.ts +++ b/apps/meteor/server/models/raw/LivechatVisitors.ts @@ -236,11 +236,12 @@ export class LivechatVisitorsRaw extends BaseRaw implements IL } } - const update = { + const update: UpdateFilter = { $set: { [`livechatData.${key}`]: value, }, - }; + } as UpdateFilter; // TODO: Remove this cast when TypeScript is updated + // TypeScript is not smart enough to infer that `messages.${string}` matches keys of `ILivechatVisitor`; return this.updateOne(query, update); } diff --git a/apps/meteor/server/models/raw/Messages.ts b/apps/meteor/server/models/raw/Messages.ts index 36d27fbb7d68..159cc4702afc 100644 --- a/apps/meteor/server/models/raw/Messages.ts +++ b/apps/meteor/server/models/raw/Messages.ts @@ -17,7 +17,6 @@ import { escapeRegExp } from '@rocket.chat/string-helpers'; import { BaseRaw } from './BaseRaw'; import { escapeExternalFederationEventId } from '../../../app/federation-v2/server/infrastructure/rocket-chat/adapters/MessageConverter'; -// @ts-ignore Circular reference on field 'attachments' export class MessagesRaw extends BaseRaw implements IMessagesModel { constructor(db: Db, trash?: Collection>) { super(db, 'message', trash); @@ -347,7 +346,7 @@ export class MessagesRaw extends BaseRaw implements IMessagesModel { { $set: { [`reactions.${reaction}.federationReactionEventIds.${escapeExternalFederationEventId(federationEventId)}`]: username, - }, + } as any, }, ); } diff --git a/apps/meteor/server/models/raw/Sessions.ts b/apps/meteor/server/models/raw/Sessions.ts index 04e0044a71ae..afa1bbf98cb2 100644 --- a/apps/meteor/server/models/raw/Sessions.ts +++ b/apps/meteor/server/models/raw/Sessions.ts @@ -1,4 +1,4 @@ -import type { ISessionsModel, ModelOptionalId } from '@rocket.chat/model-typings'; +import type { ISessionsModel } from '@rocket.chat/model-typings'; import type { AggregationCursor, AnyBulkWriteOperation, @@ -10,6 +10,7 @@ import type { Filter, IndexDescription, UpdateResult, + OptionalId, } from 'mongodb'; import type { ISession, @@ -1592,7 +1593,7 @@ export class SessionsRaw extends BaseRaw implements ISessionsModel { return this.updateMany({ userId, loginToken }, updateObj); } - async createBatch(sessions: ModelOptionalId[]): Promise { + async createBatch(sessions: OptionalId[]): Promise { if (!sessions || sessions.length === 0) { return; } diff --git a/apps/meteor/server/models/raw/VideoConference.ts b/apps/meteor/server/models/raw/VideoConference.ts index 4185ed2da507..40e6c9a89850 100644 --- a/apps/meteor/server/models/raw/VideoConference.ts +++ b/apps/meteor/server/models/raw/VideoConference.ts @@ -211,7 +211,8 @@ export class VideoConferenceRaw extends BaseRaw implements IVid $set: { [`messages.${messageType}`]: messageId, }, - }); + } as UpdateFilter); // TODO: Remove this cast when TypeScript is updated + // TypeScript is not smart enough to infer that `messages.${'start' | 'end'}` matches two keys of `VideoConference` } public async updateUserReferences(userId: IUser['_id'], username: IUser['username'], name: IUser['name']): Promise { diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index b98189fce975..a5a663ebe1a7 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -28,7 +28,7 @@ "fibers": "^5.0.3", "mem": "^8.1.1", "moleculer": "^0.14.21", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "nats": "^2.4.0", "pino": "^8.4.2", "polka": "^0.5.2", diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index eadb0aff00e6..45da39790304 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -27,7 +27,7 @@ "fibers": "^5.0.3", "mem": "^8.1.1", "moleculer": "^0.14.21", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "nats": "^2.4.0", "pino": "^8.4.2", "polka": "^0.5.2" diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index b2d86d03de2f..1e394e3326d0 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -28,7 +28,7 @@ "fibers": "^5.0.3", "jaeger-client": "^3.19.0", "moleculer": "^0.14.21", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "nats": "^2.4.0", "pino": "^7.11.0", "polka": "^0.5.2", diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 80dfc154de75..ea988d827009 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -26,7 +26,7 @@ "eventemitter3": "^4.0.7", "fibers": "^5.0.3", "moleculer": "^0.14.21", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "nats": "^2.4.0", "pino": "^8.4.2", "polka": "^0.5.2" diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index 4b1f019dbc59..1ef7f676cd84 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -26,7 +26,7 @@ "fibers": "^5.0.3", "mem": "^8.1.1", "moleculer": "^0.14.21", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "nats": "^2.4.0", "pino": "^8.4.2", "polka": "^0.5.2" diff --git a/packages/agenda/package.json b/packages/agenda/package.json index e2a0613c8048..9a6e99121900 100644 --- a/packages/agenda/package.json +++ b/packages/agenda/package.json @@ -9,7 +9,7 @@ "debug": "~4.1.1", "human-interval": "^2.0.0", "moment-timezone": "~0.5.27", - "mongodb": "^4.3.1" + "mongodb": "^4.12.1" }, "devDependencies": { "@types/debug": "^4", diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index fdb28e8f031b..bcb71a29a73a 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -5,7 +5,7 @@ "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "eslint": "^8.22.0", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "prettier": "^2.7.1", "typescript": "~4.5.5" }, diff --git a/packages/core-typings/src/IRocketChatRecord.ts b/packages/core-typings/src/IRocketChatRecord.ts index bed6d114761d..7cb9606b2268 100644 --- a/packages/core-typings/src/IRocketChatRecord.ts +++ b/packages/core-typings/src/IRocketChatRecord.ts @@ -1,10 +1,12 @@ +import type { WithId } from 'mongodb'; + export interface IRocketChatRecord { _id: string; _updatedAt: Date; } -export type RocketChatRecordDeleted = T & - IRocketChatRecord & { - _deletedAt: Date; - __collection__: string; - }; +export type RocketChatRecordDeleted = WithId & { + _updatedAt: Date; + _deletedAt: Date; + __collection__: string; +}; diff --git a/packages/core-typings/src/federation/v1/FederationKey.ts b/packages/core-typings/src/federation/v1/FederationKey.ts index 4a2225766468..665fc0c4894a 100644 --- a/packages/core-typings/src/federation/v1/FederationKey.ts +++ b/packages/core-typings/src/federation/v1/FederationKey.ts @@ -1,4 +1,5 @@ export type FederationKey = { + _id: string; type: 'private' | 'public'; key: string; }; diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 024d295148f9..f023cae9064b 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -7,7 +7,7 @@ "@types/node-rsa": "^1.1.1", "eslint": "^8.22.0", "jest": "^27.5.1", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "ts-jest": "^27.1.5", "typescript": "~4.5.5" }, diff --git a/packages/model-typings/src/models/IBaseModel.ts b/packages/model-typings/src/models/IBaseModel.ts index 9639e4bd8a77..c56d133018c9 100644 --- a/packages/model-typings/src/models/IBaseModel.ts +++ b/packages/model-typings/src/models/IBaseModel.ts @@ -5,6 +5,7 @@ import type { DeleteOptions, DeleteResult, Document, + EnhancedOmit, Filter, FindCursor, FindOneAndUpdateOptions, @@ -13,7 +14,7 @@ import type { InsertOneOptions, InsertOneResult, ModifyResult, - ObjectId, + OptionalId, UpdateFilter, UpdateOptions, UpdateResult, @@ -21,20 +22,6 @@ import type { } from 'mongodb'; import type { RocketChatRecordDeleted } from '@rocket.chat/core-typings'; -type EnhancedOmit = string | number extends keyof T - ? T // T has indexed type e.g. { _id: string; [k: string]: any; } or it is "any" - : T extends any - ? Pick> // discriminated unions - : never; - -type ExtractIdType = TSchema extends { _id: infer U } // user has defined a type for _id - ? Record extends U - ? Exclude> - : unknown extends U - ? ObjectId - : U - : ObjectId; - export type DefaultFields = Record | Record | void; export type ResultFields = Defaults extends void ? Base @@ -42,8 +29,7 @@ export type ResultFields = Defaults extends void ? Pick : Omit; -export type ModelOptionalId = EnhancedOmit & { _id?: ExtractIdType }; -export type InsertionModel = EnhancedOmit, '_updatedAt'> & { +export type InsertionModel = EnhancedOmit, '_updatedAt'> & { _updatedAt?: Date; }; @@ -52,24 +38,24 @@ export type FindPaginated = { totalCount: Promise; }; -export interface IBaseModel = undefined> { +export interface IBaseModel< + T extends { _id: string }, + C extends DefaultFields = undefined, + TDeleted extends RocketChatRecordDeleted = RocketChatRecordDeleted, +> { col: Collection; getCollectionName(): string; findOneAndUpdate(query: Filter, update: UpdateFilter | T, options?: FindOneAndUpdateOptions): Promise>; - findOneById(_id: string, options?: FindOptions | undefined): Promise; - findOneById

(_id: string, options?: FindOptions

): Promise

; - findOneById(_id: string, options?: any): Promise; - - findOne(query?: Filter | string, options?: undefined): Promise; - findOne

(query: Filter | string, options: FindOptions

): Promise

; - findOne

(query: Filter | string, options?: any): Promise | WithId

| null>; + findOneById(_id: T['_id'], options?: FindOptions | undefined): Promise; + findOneById

(_id: T['_id'], options?: FindOptions

): Promise

; + findOneById(_id: T['_id'], options?: any): Promise; - // findUsersInRoles(): void { - // throw new Error('[overwrite-function] You must overwrite this function in the extended classes'); - // } + findOne(query?: Filter | T['_id'], options?: undefined): Promise; + findOne

(query: Filter | T['_id'], options: FindOptions

): Promise

; + findOne

(query: Filter | T['_id'], options?: any): Promise | WithId

| null>; find(query?: Filter): FindCursor>; find

(query: Filter, options: FindOptions

): FindCursor

; @@ -92,43 +78,40 @@ export interface IBaseModel = undefined> { insertOne(doc: InsertionModel, options?: InsertOneOptions): Promise>; - removeById(_id: string): Promise; + removeById(_id: T['_id']): Promise; deleteOne(filter: Filter, options?: DeleteOptions & { bypassDocumentValidation?: boolean }): Promise; deleteMany(filter: Filter, options?: DeleteOptions): Promise; // Trash - trashFind

>( - query: Filter>, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): FindCursor>> | undefined; + trashFind

( + query: Filter, + options?: FindOptions

, + ): FindCursor> | undefined; - trashFindOneById(_id: string): Promise | null>; + trashFindOneById(_id: TDeleted['_id']): Promise; - trashFindOneById

( - _id: string, - options: FindOptions

? RocketChatRecordDeleted : P>, - ): Promise

; + trashFindOneById

(_id: TDeleted['_id'], options: FindOptions

): Promise

; - trashFindOneById

>( - _id: string, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): Promise | RocketChatRecordDeleted> | null>; + trashFindOneById

( + _id: TDeleted['_id'], + options?: FindOptions

, + ): Promise | TDeleted> | null>; - trashFindDeletedAfter(deletedAt: Date): FindCursor>>; + trashFindDeletedAfter(deletedAt: Date): FindCursor>; - trashFindDeletedAfter

>( + trashFindDeletedAfter

( deletedAt: Date, - query?: Filter>, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): FindCursor>>; + query?: Filter, + options?: FindOptions

, + ): FindCursor>; - trashFindPaginatedDeletedAfter

>( + trashFindPaginatedDeletedAfter

( deletedAt: Date, - query?: Filter>, - options?: FindOptions

? RocketChatRecordDeleted : P>, - ): FindPaginated>>>; + query?: Filter, + options?: FindOptions

, + ): FindPaginated>>; watch(pipeline?: object[]): ChangeStream; } diff --git a/packages/model-typings/src/models/ISessionsModel.ts b/packages/model-typings/src/models/ISessionsModel.ts index b01c581f5845..3db184f736ce 100644 --- a/packages/model-typings/src/models/ISessionsModel.ts +++ b/packages/model-typings/src/models/ISessionsModel.ts @@ -1,4 +1,4 @@ -import type { BulkWriteResult, Document, UpdateResult, FindCursor } from 'mongodb'; +import type { BulkWriteResult, Document, UpdateResult, FindCursor, OptionalId } from 'mongodb'; import type { ISession, UserSessionAggregationResult, @@ -9,7 +9,7 @@ import type { DeviceManagementSession, } from '@rocket.chat/core-typings'; -import type { IBaseModel, ModelOptionalId } from './IBaseModel'; +import type { IBaseModel } from './IBaseModel'; export type DestructuredDate = { year: number; month: number; day: number }; export type DestructuredDateWithType = { @@ -144,5 +144,5 @@ export interface ISessionsModel extends IBaseModel { logoutBy?: IUser['_id']; }): Promise; - createBatch(sessions: ModelOptionalId[]): Promise; + createBatch(sessions: OptionalId[]): Promise; } diff --git a/packages/models/src/proxify.ts b/packages/models/src/proxify.ts index 9f9422445b9d..3c75897b38fd 100644 --- a/packages/models/src/proxify.ts +++ b/packages/models/src/proxify.ts @@ -5,7 +5,7 @@ const models = new Map>(); function handler(namespace: string): ProxyHandler { return { - get: (_target: T, prop: string): any => { + get: (_target: T, prop: keyof IBaseModel): any => { if (!models.has(namespace) && lazyModels.has(namespace)) { const getModel = lazyModels.get(namespace); if (getModel) { @@ -13,13 +13,18 @@ function handler(namespace: string): ProxyHandler { } } - // @ts-ignore - return models.get(namespace)[prop]; + const model = models.get(namespace); + + if (!model) { + throw new Error(`Model ${namespace} not found`); + } + + return model[prop]; }, }; } -export function registerModel(name: string, instance: IBaseModel | (() => IBaseModel)): void { +export function registerModel>(name: string, instance: TModel | (() => TModel)): void { if (typeof instance === 'function') { lazyModels.set(name, instance); } else { diff --git a/packages/presence/package.json b/packages/presence/package.json index 3e506bde2de1..7284cca56af9 100644 --- a/packages/presence/package.json +++ b/packages/presence/package.json @@ -31,6 +31,6 @@ "dependencies": { "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/models": "workspace:^", - "mongodb": "^4.3.1" + "mongodb": "^4.12.1" } } diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 1083efaad4be..22f7b933cd46 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -7,7 +7,7 @@ "@types/jest": "^27.4.1", "eslint": "^8.22.0", "jest": "^27.5.1", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "ts-jest": "^27.1.5", "typescript": "~4.5.5" }, diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index f117f2227f76..67215fb46120 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -13,7 +13,7 @@ "@types/use-sync-external-store": "^0.0.3", "eslint": "^8.22.0", "jest": "^27.5.1", - "mongodb": "^4.3.1", + "mongodb": "^4.12.1", "react": "~17.0.2", "ts-jest": "^27.1.5", "typescript": "~4.5.5", diff --git a/yarn.lock b/yarn.lock index b0c23be701ee..4e22f8a94955 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,6 +35,871 @@ __metadata: languageName: node linkType: hard +"@aws-crypto/ie11-detection@npm:^2.0.0": + version: 2.0.2 + resolution: "@aws-crypto/ie11-detection@npm:2.0.2" + dependencies: + tslib: ^1.11.1 + checksum: 713293deea8eefd3ab43dc05e62228571d27754e7293f8ec2fd8a0c693fbbfc55213e6599387776e3cdbc951965dc62e24e92b9c4a853e4a50d00ae6a9f6b2bd + languageName: node + linkType: hard + +"@aws-crypto/sha256-browser@npm:2.0.0": + version: 2.0.0 + resolution: "@aws-crypto/sha256-browser@npm:2.0.0" + dependencies: + "@aws-crypto/ie11-detection": ^2.0.0 + "@aws-crypto/sha256-js": ^2.0.0 + "@aws-crypto/supports-web-crypto": ^2.0.0 + "@aws-crypto/util": ^2.0.0 + "@aws-sdk/types": ^3.1.0 + "@aws-sdk/util-locate-window": ^3.0.0 + "@aws-sdk/util-utf8-browser": ^3.0.0 + tslib: ^1.11.1 + checksum: 7bc1ff042d0c53a46c0fc3824bd97fb3ed1df7dc030b8a995889471052860b8c8ade469c97866fafd8249a3144d0f48b0f1054f357e2b403606009381c4b8f0e + languageName: node + linkType: hard + +"@aws-crypto/sha256-js@npm:2.0.0": + version: 2.0.0 + resolution: "@aws-crypto/sha256-js@npm:2.0.0" + dependencies: + "@aws-crypto/util": ^2.0.0 + "@aws-sdk/types": ^3.1.0 + tslib: ^1.11.1 + checksum: e4abf9baec6bed19d380f92a999a41ac5bdd8890dfd45971d29054c298854c5b7087e7de633413f2e64618ef8238ccf4c0b75797c73063c74bbba3cb5d8b2581 + languageName: node + linkType: hard + +"@aws-crypto/sha256-js@npm:^2.0.0": + version: 2.0.2 + resolution: "@aws-crypto/sha256-js@npm:2.0.2" + dependencies: + "@aws-crypto/util": ^2.0.2 + "@aws-sdk/types": ^3.110.0 + tslib: ^1.11.1 + checksum: 9125ec65a2b05fce908ac2289ba97b995a299f2d717684804211df8e8bcffd8cd9b8861582240655b88f2255c46fcee34026f75c057ffb22f44b6a76cd43f65a + languageName: node + linkType: hard + +"@aws-crypto/supports-web-crypto@npm:^2.0.0": + version: 2.0.2 + resolution: "@aws-crypto/supports-web-crypto@npm:2.0.2" + dependencies: + tslib: ^1.11.1 + checksum: 03d04d29292dc1b76db9bc6becd05f52fa79adee0ec084f971b0767f7e73250dd0422bea57636015f8c27f38aefcd1d9c58800a4749cf35339296c8d670f3ccb + languageName: node + linkType: hard + +"@aws-crypto/util@npm:^2.0.0, @aws-crypto/util@npm:^2.0.2": + version: 2.0.2 + resolution: "@aws-crypto/util@npm:2.0.2" + dependencies: + "@aws-sdk/types": ^3.110.0 + "@aws-sdk/util-utf8-browser": ^3.0.0 + tslib: ^1.11.1 + checksum: 13cb33a39005b09c062398d361043c2224bc8ba42b1432bad52e15bc4bf9ffad4facdddc394b3cc71b3fb8d86a7ec325fd1afa107b5fde0dab84a7e32d311d7f + languageName: node + linkType: hard + +"@aws-sdk/abort-controller@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/abort-controller@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: eda64e8f93885a20b889374c6ae068799f9ee5ef91850a9c07e29465734a83c33b4bd37d961a61a2ff0c64ed18651a9878db40b1d7bb39aef4338a9167bfb605 + languageName: node + linkType: hard + +"@aws-sdk/client-cognito-identity@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.218.0" + dependencies: + "@aws-crypto/sha256-browser": 2.0.0 + "@aws-crypto/sha256-js": 2.0.0 + "@aws-sdk/client-sts": 3.218.0 + "@aws-sdk/config-resolver": 3.215.0 + "@aws-sdk/credential-provider-node": 3.218.0 + "@aws-sdk/fetch-http-handler": 3.215.0 + "@aws-sdk/hash-node": 3.215.0 + "@aws-sdk/invalid-dependency": 3.215.0 + "@aws-sdk/middleware-content-length": 3.215.0 + "@aws-sdk/middleware-endpoint": 3.215.0 + "@aws-sdk/middleware-host-header": 3.215.0 + "@aws-sdk/middleware-logger": 3.215.0 + "@aws-sdk/middleware-recursion-detection": 3.215.0 + "@aws-sdk/middleware-retry": 3.215.0 + "@aws-sdk/middleware-serde": 3.215.0 + "@aws-sdk/middleware-signing": 3.215.0 + "@aws-sdk/middleware-stack": 3.215.0 + "@aws-sdk/middleware-user-agent": 3.215.0 + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/node-http-handler": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/smithy-client": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/url-parser": 3.215.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.215.0 + "@aws-sdk/util-defaults-mode-node": 3.215.0 + "@aws-sdk/util-endpoints": 3.216.0 + "@aws-sdk/util-user-agent-browser": 3.215.0 + "@aws-sdk/util-user-agent-node": 3.215.0 + "@aws-sdk/util-utf8-browser": 3.188.0 + "@aws-sdk/util-utf8-node": 3.208.0 + tslib: ^2.3.1 + checksum: 54c15fa5cf9179eb806ae3bec4b0b936e28a955a2fa750ba99fe687e9580618dd6190726caf770db4fa23aed35dd022406b1d3eb9112c6a04d61edacdda3c501 + languageName: node + linkType: hard + +"@aws-sdk/client-sso-oidc@npm:3.216.0": + version: 3.216.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.216.0" + dependencies: + "@aws-crypto/sha256-browser": 2.0.0 + "@aws-crypto/sha256-js": 2.0.0 + "@aws-sdk/config-resolver": 3.215.0 + "@aws-sdk/fetch-http-handler": 3.215.0 + "@aws-sdk/hash-node": 3.215.0 + "@aws-sdk/invalid-dependency": 3.215.0 + "@aws-sdk/middleware-content-length": 3.215.0 + "@aws-sdk/middleware-endpoint": 3.215.0 + "@aws-sdk/middleware-host-header": 3.215.0 + "@aws-sdk/middleware-logger": 3.215.0 + "@aws-sdk/middleware-recursion-detection": 3.215.0 + "@aws-sdk/middleware-retry": 3.215.0 + "@aws-sdk/middleware-serde": 3.215.0 + "@aws-sdk/middleware-stack": 3.215.0 + "@aws-sdk/middleware-user-agent": 3.215.0 + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/node-http-handler": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/smithy-client": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/url-parser": 3.215.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.215.0 + "@aws-sdk/util-defaults-mode-node": 3.215.0 + "@aws-sdk/util-endpoints": 3.216.0 + "@aws-sdk/util-user-agent-browser": 3.215.0 + "@aws-sdk/util-user-agent-node": 3.215.0 + "@aws-sdk/util-utf8-browser": 3.188.0 + "@aws-sdk/util-utf8-node": 3.208.0 + tslib: ^2.3.1 + checksum: b1bce1b9594f2a0c19aabe934ee5d53becfff4f4244ce907393621d8e990df0625d0fe3ba3e1c7dba48946f43bd451d2c969b5e9fa9ee1b8504298706677bf30 + languageName: node + linkType: hard + +"@aws-sdk/client-sso@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/client-sso@npm:3.218.0" + dependencies: + "@aws-crypto/sha256-browser": 2.0.0 + "@aws-crypto/sha256-js": 2.0.0 + "@aws-sdk/config-resolver": 3.215.0 + "@aws-sdk/fetch-http-handler": 3.215.0 + "@aws-sdk/hash-node": 3.215.0 + "@aws-sdk/invalid-dependency": 3.215.0 + "@aws-sdk/middleware-content-length": 3.215.0 + "@aws-sdk/middleware-endpoint": 3.215.0 + "@aws-sdk/middleware-host-header": 3.215.0 + "@aws-sdk/middleware-logger": 3.215.0 + "@aws-sdk/middleware-recursion-detection": 3.215.0 + "@aws-sdk/middleware-retry": 3.215.0 + "@aws-sdk/middleware-serde": 3.215.0 + "@aws-sdk/middleware-stack": 3.215.0 + "@aws-sdk/middleware-user-agent": 3.215.0 + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/node-http-handler": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/smithy-client": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/url-parser": 3.215.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.215.0 + "@aws-sdk/util-defaults-mode-node": 3.215.0 + "@aws-sdk/util-endpoints": 3.216.0 + "@aws-sdk/util-user-agent-browser": 3.215.0 + "@aws-sdk/util-user-agent-node": 3.215.0 + "@aws-sdk/util-utf8-browser": 3.188.0 + "@aws-sdk/util-utf8-node": 3.208.0 + tslib: ^2.3.1 + checksum: 2ef01b0cf87ca4af9fb728e01674a765b84111a6e4030f8aa4dff3dbacc2a3c55861bdb3d992be84e49b625e50d497aa0f611e7e0c1de844392ee3089b9fe879 + languageName: node + linkType: hard + +"@aws-sdk/client-sts@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/client-sts@npm:3.218.0" + dependencies: + "@aws-crypto/sha256-browser": 2.0.0 + "@aws-crypto/sha256-js": 2.0.0 + "@aws-sdk/config-resolver": 3.215.0 + "@aws-sdk/credential-provider-node": 3.218.0 + "@aws-sdk/fetch-http-handler": 3.215.0 + "@aws-sdk/hash-node": 3.215.0 + "@aws-sdk/invalid-dependency": 3.215.0 + "@aws-sdk/middleware-content-length": 3.215.0 + "@aws-sdk/middleware-endpoint": 3.215.0 + "@aws-sdk/middleware-host-header": 3.215.0 + "@aws-sdk/middleware-logger": 3.215.0 + "@aws-sdk/middleware-recursion-detection": 3.215.0 + "@aws-sdk/middleware-retry": 3.215.0 + "@aws-sdk/middleware-sdk-sts": 3.215.0 + "@aws-sdk/middleware-serde": 3.215.0 + "@aws-sdk/middleware-signing": 3.215.0 + "@aws-sdk/middleware-stack": 3.215.0 + "@aws-sdk/middleware-user-agent": 3.215.0 + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/node-http-handler": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/smithy-client": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/url-parser": 3.215.0 + "@aws-sdk/util-base64": 3.208.0 + "@aws-sdk/util-body-length-browser": 3.188.0 + "@aws-sdk/util-body-length-node": 3.208.0 + "@aws-sdk/util-defaults-mode-browser": 3.215.0 + "@aws-sdk/util-defaults-mode-node": 3.215.0 + "@aws-sdk/util-endpoints": 3.216.0 + "@aws-sdk/util-user-agent-browser": 3.215.0 + "@aws-sdk/util-user-agent-node": 3.215.0 + "@aws-sdk/util-utf8-browser": 3.188.0 + "@aws-sdk/util-utf8-node": 3.208.0 + fast-xml-parser: 4.0.11 + tslib: ^2.3.1 + checksum: 1619e054c23ef3b103fe1427faad454f6dced3e8daf98c91bc2bfd93386864ae25df90b13a3e8cbe4a9d75670e42815ce414401294c99de0b3cd475d3e85167e + languageName: node + linkType: hard + +"@aws-sdk/config-resolver@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/config-resolver@npm:3.215.0" + dependencies: + "@aws-sdk/signature-v4": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-config-provider": 3.208.0 + "@aws-sdk/util-middleware": 3.215.0 + tslib: ^2.3.1 + checksum: d2ec1ca0da965a0baa4610a43186654dbacdab697b826ff9ebaff3004e4cd472a17e4757ea3eac463dd88390a8ae8475090b7d88cd2a2a5cdcb99a4dbf3835d4 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-cognito-identity@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.218.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.218.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: bb7a9e9d4212dd2b393e23ecc6be6691eaea762bf8f882188fea9d426725617ea0d8d66d70e7a7c82c99baff3fab1c0f8819a7829fc329a1923e57c3ee55ac4d + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-env@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.215.0" + dependencies: + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: fa878a7dc53e964aa6228b5879c419b6e8aebc74b1e560df8980ec51b40a998d0a43eab8c5ab366c6afae831b43d88310e776cea3f5cfdb4755067cbefde1be4 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-imds@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/credential-provider-imds@npm:3.215.0" + dependencies: + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/url-parser": 3.215.0 + tslib: ^2.3.1 + checksum: 341e1c1af4a3908e635558791b67346bba31ff0d6b6c5a44e1b4af912eda3163ec1edc8933c9f5e123979b0e179a160505a2407efff15c9597e91521783167b7 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-ini@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.218.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.215.0 + "@aws-sdk/credential-provider-imds": 3.215.0 + "@aws-sdk/credential-provider-sso": 3.218.0 + "@aws-sdk/credential-provider-web-identity": 3.215.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: d48d601c89bb35330ddd3a9c976cad6caaf484468ac5819d21d34550a653b8ff54de616973e4b79b09f3e12d404582d4e4b46977eac465411d1bae79a7db370d + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-node@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.218.0" + dependencies: + "@aws-sdk/credential-provider-env": 3.215.0 + "@aws-sdk/credential-provider-imds": 3.215.0 + "@aws-sdk/credential-provider-ini": 3.218.0 + "@aws-sdk/credential-provider-process": 3.215.0 + "@aws-sdk/credential-provider-sso": 3.218.0 + "@aws-sdk/credential-provider-web-identity": 3.215.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: da8da825da1fca84fdb8ca3d9958be1059a3b93c868e19b0c4d6a8c628de881cf95701beec3fd107218c37e7726587197ab5a5cdf437d5c628436d17506cb1d1 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-process@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.215.0" + dependencies: + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 5e8f70e94fc4ec0d347e96b65bd18faba93c9ff7b30f9f24268789bcaa121905295c7fc575ca29842484a6315b3772214dac2621b1b85184c4ded9f924aec5c8 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-sso@npm:3.218.0": + version: 3.218.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.218.0" + dependencies: + "@aws-sdk/client-sso": 3.218.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/token-providers": 3.216.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 1d6b26776c83d7256336f89b33ae1a5cf7ba252af6ea54b2daaa9c5ce77a1d7b7afb08a49ef10dccbb900f12b40522e87b6561f5128b2869530f8a86ad2c6654 + languageName: node + linkType: hard + +"@aws-sdk/credential-provider-web-identity@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.215.0" + dependencies: + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: f012d3789817c42487a66058c7efadc95aa17afa02a7c652821c79195e18f20884e6b02c9b74e2a2260682f49349f7a8e9b524d3b0e1db4cace8a01a7f7dacf3 + languageName: node + linkType: hard + +"@aws-sdk/credential-providers@npm:^3.186.0": + version: 3.218.0 + resolution: "@aws-sdk/credential-providers@npm:3.218.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.218.0 + "@aws-sdk/client-sso": 3.218.0 + "@aws-sdk/client-sts": 3.218.0 + "@aws-sdk/credential-provider-cognito-identity": 3.218.0 + "@aws-sdk/credential-provider-env": 3.215.0 + "@aws-sdk/credential-provider-imds": 3.215.0 + "@aws-sdk/credential-provider-ini": 3.218.0 + "@aws-sdk/credential-provider-node": 3.218.0 + "@aws-sdk/credential-provider-process": 3.215.0 + "@aws-sdk/credential-provider-sso": 3.218.0 + "@aws-sdk/credential-provider-web-identity": 3.215.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 75200e3d75b38435780192232ca7b0daf79b7538e6e8327783e8b4fb9e0f82f783f9cb679cf1642a07feef4bf34a0c8951e27d4d1969afdcf9a59ded50905bba + languageName: node + linkType: hard + +"@aws-sdk/fetch-http-handler@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/fetch-http-handler@npm:3.215.0" + dependencies: + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/querystring-builder": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-base64": 3.208.0 + tslib: ^2.3.1 + checksum: 7031944b65100023fdee709d4c38845fc5fe7ab01d3fabdd8fb13c32a326811c1ddcc201f6171fe5847b4bebd171a6a37c77068c5439ee29acf38078e16ef556 + languageName: node + linkType: hard + +"@aws-sdk/hash-node@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/hash-node@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-buffer-from": 3.208.0 + tslib: ^2.3.1 + checksum: 8d50f46c195b48304ba69107adf31e3380a1952920c373031c5ed31f936300c24b492ad477ae3e868a73834cffc78177294bee2a683904133ca516ebb3b64bef + languageName: node + linkType: hard + +"@aws-sdk/invalid-dependency@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/invalid-dependency@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: f3ba901c3884c943909ec344bd5e17cdb13a5246a53d1e8e33fda036f45cb944dcfb52ef948d04d1d27cf514ef711ef65d1f2c3cc5048624b8fc49493d72837f + languageName: node + linkType: hard + +"@aws-sdk/is-array-buffer@npm:3.201.0": + version: 3.201.0 + resolution: "@aws-sdk/is-array-buffer@npm:3.201.0" + dependencies: + tslib: ^2.3.1 + checksum: 295450b417a9ab0b734050afff6c53aaed8a33dccd3ede60bf67fdec21f675d14ab8edc24f4e1d12aa4e99f9ccaf794aaaaff270c296c1ee38f73ea7ba7f59ce + languageName: node + linkType: hard + +"@aws-sdk/middleware-content-length@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-content-length@npm:3.215.0" + dependencies: + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 7f41e88463faa0134be2c57bae62cd3c48fd2e6973d987e10a72f3c5cabc238cf5f59a9a8d6e92f5989e460f668f03c3b034fe54192391314de2431f77681aae + languageName: node + linkType: hard + +"@aws-sdk/middleware-endpoint@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-endpoint@npm:3.215.0" + dependencies: + "@aws-sdk/middleware-serde": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/signature-v4": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/url-parser": 3.215.0 + "@aws-sdk/util-config-provider": 3.208.0 + "@aws-sdk/util-middleware": 3.215.0 + tslib: ^2.3.1 + checksum: cf57854b88ca43874e25dd4d160525a9cf0844319fb20bfdbfe6100570724ecafaf1c0014c803ee477ad85fd2a2b80686ec8e7b2ae69118ac3453b05f4bffc0f + languageName: node + linkType: hard + +"@aws-sdk/middleware-host-header@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.215.0" + dependencies: + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 461158ce46c5ca089d12a63b37ed064cc584b48d6b49523c11bcb690fdf811fb3d5603554d5f92c58dcf26d4948308cd7433d7a26c20a934d07e816cbf67a3a3 + languageName: node + linkType: hard + +"@aws-sdk/middleware-logger@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-logger@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 7d90e2195e68e1e7c04f52f8b8bdbbcc800f879200082892668477d17ae064beb6e7352540f262758b004d40560039426f6971396569c79eb9b4a51cba701081 + languageName: node + linkType: hard + +"@aws-sdk/middleware-recursion-detection@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.215.0" + dependencies: + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 0bf6eda1208cc39ac92ce25b82c8cddae990c960096d5cffc57646d8fddfa5e3bcfff44cf6a99e1a60b613f48bdc015a6e056c55b790a996db7b3dddf47867eb + languageName: node + linkType: hard + +"@aws-sdk/middleware-retry@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-retry@npm:3.215.0" + dependencies: + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/service-error-classification": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-middleware": 3.215.0 + tslib: ^2.3.1 + uuid: ^8.3.2 + checksum: 6b5d5d9a370e2c46df14654f38ae9aab639dc429f216155556706352dc607c24ad79ff5c03533c8f5e40134e6d5209ce77b3856e0ba49c93ce93255da7b3c6fe + languageName: node + linkType: hard + +"@aws-sdk/middleware-sdk-sts@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-sdk-sts@npm:3.215.0" + dependencies: + "@aws-sdk/middleware-signing": 3.215.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/signature-v4": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: bace7de141bef58b491d837e00ad4e0acbf6c4f79b8af80e0665dc36aa0cf31a21aa18101a1390096af11a76c5ffacf25995c1cf998874576b35ffd1a5146b3f + languageName: node + linkType: hard + +"@aws-sdk/middleware-serde@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-serde@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 45caf42bc4aaa6e1c7fd16fd8f219c0629c939c3adfb8274b6a6fed1e62ff1237ee208e387352655580a9a6c8d7fef704cff1f6f51b5bc237b98fee7b193a959 + languageName: node + linkType: hard + +"@aws-sdk/middleware-signing@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-signing@npm:3.215.0" + dependencies: + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/signature-v4": 3.215.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-middleware": 3.215.0 + tslib: ^2.3.1 + checksum: a1c8c9b1a0cbde5f64ce5779f8e05494ffeed07bb7e6fe454baf9accf92bd5758dbb09cf0b5ae3f03d081e193af6197ff24659746d390d7e0c2f959f9014c073 + languageName: node + linkType: hard + +"@aws-sdk/middleware-stack@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-stack@npm:3.215.0" + dependencies: + tslib: ^2.3.1 + checksum: dc9c99969d178857ab975387f6326eb3c65fe1679087de719ea3dd25a3973bea310778ae45c61891de9cc41ce640f483dc9ff4f62af6669f3124029277f870aa + languageName: node + linkType: hard + +"@aws-sdk/middleware-user-agent@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.215.0" + dependencies: + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 054f10a197876acc32d1903575855870edc9f5fe1fd7809dda47210e1b0717c7604e3cd916b34df7aa9f5cbe1ad9fa85934913ec51109a2740e3aed450587633 + languageName: node + linkType: hard + +"@aws-sdk/node-config-provider@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/node-config-provider@npm:3.215.0" + dependencies: + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: a23677a836a43bd0d4dd00cab64c42d1c69eafe8ccb833ea08a7b43ab0e891ad67a96757610fdd48a6d1cd749c29aaa1de14d894468c9e79e987e13d979c4382 + languageName: node + linkType: hard + +"@aws-sdk/node-http-handler@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/node-http-handler@npm:3.215.0" + dependencies: + "@aws-sdk/abort-controller": 3.215.0 + "@aws-sdk/protocol-http": 3.215.0 + "@aws-sdk/querystring-builder": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 7b87cce3393553b9b2cd494aea49075fdafb8c7d9b4d61c44928e7e50f3f2909c6f57547ed504ce7b36b8dc17cc8fc8f0e882a7894898bb3cd5decc9e3de2d65 + languageName: node + linkType: hard + +"@aws-sdk/property-provider@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/property-provider@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 0cb519ff8db962b2e65867b4ae5af12b0b517ace1e6f5d5f0a0f65790d087d734004b91454a2b97d842fc7799b0f0ebe4da7209360f627eac6c07af7e6ddb55b + languageName: node + linkType: hard + +"@aws-sdk/protocol-http@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/protocol-http@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: fd1d6db6168c3129b5311b42937f56731de5b536c11ffed08f8f7e3e1bbda1732e2632f642e601dd4af32722b78d179827772ae4564cea03553395dfa01e02d2 + languageName: node + linkType: hard + +"@aws-sdk/querystring-builder@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/querystring-builder@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-uri-escape": 3.201.0 + tslib: ^2.3.1 + checksum: 68584d4de16eea7c649bad71b938716917e53aa42aca9a9298a7a21b2dd2195d3e0e5719f0f4a16e448d18f4db6d8ae2ea4229dff4f6a8807712a81097b7aa4c + languageName: node + linkType: hard + +"@aws-sdk/querystring-parser@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/querystring-parser@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: cfccb89aecadea63c3937e3db06690f2927aa32c8d98dd265151d971ee3221b570b715768a419777bf27a18f3c13509adbeccfbffd9e9d00ff90fbe648e36b22 + languageName: node + linkType: hard + +"@aws-sdk/service-error-classification@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/service-error-classification@npm:3.215.0" + checksum: 470cfec61df10efa304f61d44b75a8fc12fc6ded0c42dc36b7c8cbecc6b7290042e6a6b10ef28acf9e15534c234fd31475d1d0ee45522f8e49267f5eb6d8055e + languageName: node + linkType: hard + +"@aws-sdk/shared-ini-file-loader@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/shared-ini-file-loader@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: b0fcdc3bf81928d3822a5e7e7c088d5ce3c07b6fe4a29692a142226d3829fd1c8ee312cf5b8ee2056893cc6e4686df886641f7cd30e27e4bbd9fcb7ee6b21377 + languageName: node + linkType: hard + +"@aws-sdk/signature-v4@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/signature-v4@npm:3.215.0" + dependencies: + "@aws-sdk/is-array-buffer": 3.201.0 + "@aws-sdk/types": 3.215.0 + "@aws-sdk/util-hex-encoding": 3.201.0 + "@aws-sdk/util-middleware": 3.215.0 + "@aws-sdk/util-uri-escape": 3.201.0 + tslib: ^2.3.1 + checksum: 2bf3912bdf51c116abd2c3dcbbfdd669758b264066d4dd18353b984aaea2532ba6caef95043d1a58acf225a9ee59709c8593226f2acd779ad556c77b12fe0e4b + languageName: node + linkType: hard + +"@aws-sdk/smithy-client@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/smithy-client@npm:3.215.0" + dependencies: + "@aws-sdk/middleware-stack": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 4fd6d5631b738d7e7edf957335fb60c743025812183f3def0b4f83469bff95297c3c870fea790152731da9f3bd80aca4634722f6303774ae4b80a95cc17ad568 + languageName: node + linkType: hard + +"@aws-sdk/token-providers@npm:3.216.0": + version: 3.216.0 + resolution: "@aws-sdk/token-providers@npm:3.216.0" + dependencies: + "@aws-sdk/client-sso-oidc": 3.216.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/shared-ini-file-loader": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: a54490666866fa389043e450692b137f1ffab39dbf10927b09ea52c813330dc06dd0e589a6adb653d3e8e974c484656f3234103bb3ca097b634a15d8cbb6f8c9 + languageName: node + linkType: hard + +"@aws-sdk/types@npm:3.215.0, @aws-sdk/types@npm:^3.1.0, @aws-sdk/types@npm:^3.110.0": + version: 3.215.0 + resolution: "@aws-sdk/types@npm:3.215.0" + checksum: 7b1301af4444c6d949175337546093946e22c572b40474ada534bd9a4ab37e15f5aabdeca139328b7ea45a6dd1d1a86de89097adbbb07e31365bb3e84254ea38 + languageName: node + linkType: hard + +"@aws-sdk/url-parser@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/url-parser@npm:3.215.0" + dependencies: + "@aws-sdk/querystring-parser": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 50221b570ddeb9255be9a7d1afbf9114cdba126dfa48b0c7cf7b0f55e5ca6581e6fa08bc119c7cc3fcceb43d9761bfe9a0e4e7e8a09b3cf010bb1518f0a8cd92 + languageName: node + linkType: hard + +"@aws-sdk/util-base64@npm:3.208.0": + version: 3.208.0 + resolution: "@aws-sdk/util-base64@npm:3.208.0" + dependencies: + "@aws-sdk/util-buffer-from": 3.208.0 + tslib: ^2.3.1 + checksum: 2ccab3453a3a3636f3f1397441574b3adb984e1ba3865030393108327ed7304cf80c9b31d69691e6aba85cfe6a611a881bbb724e544324240763bb4e96630ed9 + languageName: node + linkType: hard + +"@aws-sdk/util-body-length-browser@npm:3.188.0": + version: 3.188.0 + resolution: "@aws-sdk/util-body-length-browser@npm:3.188.0" + dependencies: + tslib: ^2.3.1 + checksum: 1b08bd1e63ec843ee336f51d894c49bf3c4c2f96e50d1711a12f7d0c5b6f7a15b490e366fec55b63e77036002994bac12927b29de2eb9ac91e4f152b1af78e58 + languageName: node + linkType: hard + +"@aws-sdk/util-body-length-node@npm:3.208.0": + version: 3.208.0 + resolution: "@aws-sdk/util-body-length-node@npm:3.208.0" + dependencies: + tslib: ^2.3.1 + checksum: 986b42b358656dec4e75c231213331c4f01785f9ab17c8b87b6e268b6880818a96117f1785cef9786e6c0f7e2c1332c80e8388a43bfd83e8c7224ad059a72733 + languageName: node + linkType: hard + +"@aws-sdk/util-buffer-from@npm:3.208.0": + version: 3.208.0 + resolution: "@aws-sdk/util-buffer-from@npm:3.208.0" + dependencies: + "@aws-sdk/is-array-buffer": 3.201.0 + tslib: ^2.3.1 + checksum: 00bfa4d4494d3a1eb128e19104994d1aca8b3802e9aa218cecafb1ed3ff2ecf5c946485e06aa97ae312458842b0f31a6484dc945232f7cb0e357ba341cb2e53e + languageName: node + linkType: hard + +"@aws-sdk/util-config-provider@npm:3.208.0": + version: 3.208.0 + resolution: "@aws-sdk/util-config-provider@npm:3.208.0" + dependencies: + tslib: ^2.3.1 + checksum: 97b0414b120b4eb53001f3ab2135ee94937e47bd7bd0d0de7c6a7e00a282eaa78cd84be2bfd3e389340f0c0b2f7ba60da9a403f084721970ee55b779ecf7a451 + languageName: node + linkType: hard + +"@aws-sdk/util-defaults-mode-browser@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/util-defaults-mode-browser@npm:3.215.0" + dependencies: + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + bowser: ^2.11.0 + tslib: ^2.3.1 + checksum: ed8a21c3d614f9b8ac64d2565c7106265d6fed0b8cda0e0b31b44f7be2fc3013aa79a9b5c113e7b016272c88d5547a07907a2f9ba626961f2b2d626866520c7e + languageName: node + linkType: hard + +"@aws-sdk/util-defaults-mode-node@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/util-defaults-mode-node@npm:3.215.0" + dependencies: + "@aws-sdk/config-resolver": 3.215.0 + "@aws-sdk/credential-provider-imds": 3.215.0 + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/property-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: 2dccee67d6fcc10ca5f93090b04851b561b638dacc9de1dedfc127323cdd0bd3f5bc8c5e27a87c90564b20805b8e9ba3992bebc023d76ce3d12e6f70005c7547 + languageName: node + linkType: hard + +"@aws-sdk/util-endpoints@npm:3.216.0": + version: 3.216.0 + resolution: "@aws-sdk/util-endpoints@npm:3.216.0" + dependencies: + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + checksum: e8e41cd2be036654ba2484647ad08bba770ffac1c264d613e5630fa922a414efee0a4fbafc6313dcd16484bfbddac99bed1413f126ce2f2d03d5a6be99d293a1 + languageName: node + linkType: hard + +"@aws-sdk/util-hex-encoding@npm:3.201.0": + version: 3.201.0 + resolution: "@aws-sdk/util-hex-encoding@npm:3.201.0" + dependencies: + tslib: ^2.3.1 + checksum: a27f3365dfb1e6ece79ea34fd6e2c4540eb0084536d7300ff0ff42a7334ddf07f21958c6cfd0bbeb71361ee408e16deae2c82b7c7378b048b8e81a52c75f190a + languageName: node + linkType: hard + +"@aws-sdk/util-locate-window@npm:^3.0.0": + version: 3.208.0 + resolution: "@aws-sdk/util-locate-window@npm:3.208.0" + dependencies: + tslib: ^2.3.1 + checksum: 7518c110c4fa27c5e1d2d173647f1c58fc6ea244d25733c08ac441d3a2650b050ce06cecbe56b80a9997d514c9f7515b3c529c84c1e04b29aa0265d53af23c52 + languageName: node + linkType: hard + +"@aws-sdk/util-middleware@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/util-middleware@npm:3.215.0" + dependencies: + tslib: ^2.3.1 + checksum: 19400d2560d70dbc0ec2087f4a76cb67ed28921028f851041da47cc55d00cc97520a5f2f0cbc1bd3a982f08d158073a32a4fa5cce5fe5459d0f734f0c20717e8 + languageName: node + linkType: hard + +"@aws-sdk/util-uri-escape@npm:3.201.0": + version: 3.201.0 + resolution: "@aws-sdk/util-uri-escape@npm:3.201.0" + dependencies: + tslib: ^2.3.1 + checksum: 8bd751459eaab75a9b61801f3484cfa5c4e0133381ace6ec901cb9b92b1fee99beb4ef9c0f87ade59425a882ed3a280255d9b2fd8da6a6286e49efb9af8f0d55 + languageName: node + linkType: hard + +"@aws-sdk/util-user-agent-browser@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.215.0" + dependencies: + "@aws-sdk/types": 3.215.0 + bowser: ^2.11.0 + tslib: ^2.3.1 + checksum: 29a66adec383886ded80abfb41e5c66f4c07d52af5a995aa084a8eae9f4af22caf73cf2e4dbebc86c080da5b8778fed178d941f819b18a9caa082aac62cfb3d6 + languageName: node + linkType: hard + +"@aws-sdk/util-user-agent-node@npm:3.215.0": + version: 3.215.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.215.0" + dependencies: + "@aws-sdk/node-config-provider": 3.215.0 + "@aws-sdk/types": 3.215.0 + tslib: ^2.3.1 + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: 3f91d4bb57c4725fff15a1ef1b15b16026c38f02975af1b7567bc34fce4ef881968e1a871358f0d42f597a4ddb5c306e5bb9286809d075975715525b21f3213b + languageName: node + linkType: hard + +"@aws-sdk/util-utf8-browser@npm:3.188.0, @aws-sdk/util-utf8-browser@npm:^3.0.0": + version: 3.188.0 + resolution: "@aws-sdk/util-utf8-browser@npm:3.188.0" + dependencies: + tslib: ^2.3.1 + checksum: dacd27164aa0835888434e080b67f04510e2281560540ff73496f2d0aa73b0b7f830ec08491b35c3a51bf6214615579182aff8727e151e54a74a97a197a2ac31 + languageName: node + linkType: hard + +"@aws-sdk/util-utf8-node@npm:3.208.0": + version: 3.208.0 + resolution: "@aws-sdk/util-utf8-node@npm:3.208.0" + dependencies: + "@aws-sdk/util-buffer-from": 3.208.0 + tslib: ^2.3.1 + checksum: 0f4c1d0d3f6eb40d92bc7163c6dcf97f90b3a8be05df46ba4f9bb7723a3e6acabf2cb0f2486411b03d22e8fcccae9e757ed02afad384ff5f44a3a659a78c5752 + languageName: node + linkType: hard + "@babel/code-frame@npm:7.12.11": version: 7.12.11 resolution: "@babel/code-frame@npm:7.12.11" @@ -5337,7 +6202,7 @@ __metadata: fibers: ^5.0.3 mem: ^8.1.1 moleculer: ^0.14.21 - mongodb: ^4.3.1 + mongodb: ^4.12.1 nats: ^2.4.0 pino: ^8.4.2 polka: ^0.5.2 @@ -5360,7 +6225,7 @@ __metadata: human-interval: ^2.0.0 jest: ^27.5.1 moment-timezone: ~0.5.27 - mongodb: ^4.3.1 + mongodb: ^4.12.1 ts-jest: ^27.1.4 typescript: ~4.5.5 languageName: unknown @@ -5449,7 +6314,7 @@ __metadata: fibers: ^5.0.3 mem: ^8.1.1 moleculer: ^0.14.21 - mongodb: ^4.3.1 + mongodb: ^4.12.1 nats: ^2.4.0 pino: ^8.4.2 polka: ^0.5.2 @@ -5481,7 +6346,7 @@ __metadata: "@rocket.chat/message-parser": 0.31.22 "@rocket.chat/ui-kit": 0.31.22 eslint: ^8.22.0 - mongodb: ^4.3.1 + mongodb: ^4.12.1 prettier: ^2.7.1 typescript: ~4.5.5 languageName: unknown @@ -5536,7 +6401,7 @@ __metadata: fibers: ^5.0.3 jaeger-client: ^3.19.0 moleculer: ^0.14.21 - mongodb: ^4.3.1 + mongodb: ^4.12.1 nats: ^2.4.0 pino: ^7.11.0 pino-pretty: ^7.6.1 @@ -6222,7 +7087,7 @@ __metadata: moleculer: ^0.14.21 moment: ^2.29.4 moment-timezone: ^0.5.34 - mongodb: ^4.3.1 + mongodb: ^4.12.1 mongodb-memory-server: ^7.6.3 nats: ^2.6.1 node-dogstatsd: ^0.0.7 @@ -6316,7 +7181,7 @@ __metadata: "@types/node-rsa": ^1.1.1 eslint: ^8.22.0 jest: ^27.5.1 - mongodb: ^4.3.1 + mongodb: ^4.12.1 ts-jest: ^27.1.5 typescript: ~4.5.5 languageName: unknown @@ -6397,7 +7262,7 @@ __metadata: eventemitter3: ^4.0.7 fibers: ^5.0.3 moleculer: ^0.14.21 - mongodb: ^4.3.1 + mongodb: ^4.12.1 nats: ^2.4.0 pino: ^8.4.2 polka: ^0.5.2 @@ -6422,7 +7287,7 @@ __metadata: babel-jest: ^29.0.3 eslint: ^8.21.0 jest: ^29.0.3 - mongodb: ^4.3.1 + mongodb: ^4.12.1 typescript: ~4.5.5 languageName: unknown linkType: soft @@ -6449,7 +7314,7 @@ __metadata: ajv: ^8.11.0 eslint: ^8.22.0 jest: ^27.5.1 - mongodb: ^4.3.1 + mongodb: ^4.12.1 ts-jest: ^27.1.5 typescript: ~4.5.5 languageName: unknown @@ -6489,7 +7354,7 @@ __metadata: fibers: ^5.0.3 mem: ^8.1.1 moleculer: ^0.14.21 - mongodb: ^4.3.1 + mongodb: ^4.12.1 nats: ^2.4.0 pino: ^8.4.2 polka: ^0.5.2 @@ -6626,7 +7491,7 @@ __metadata: "@types/use-sync-external-store": ^0.0.3 eslint: ^8.22.0 jest: ^27.5.1 - mongodb: ^4.3.1 + mongodb: ^4.12.1 react: ~17.0.2 ts-jest: ^27.1.5 typescript: ~4.5.5 @@ -12482,6 +13347,13 @@ __metadata: languageName: node linkType: hard +"bowser@npm:^2.11.0": + version: 2.11.0 + resolution: "bowser@npm:2.11.0" + checksum: 29c3f01f22e703fa6644fc3b684307442df4240b6e10f6cfe1b61c6ca5721073189ca97cdeedb376081148c8518e33b1d818a57f781d70b0b70e1f31fb48814f + languageName: node + linkType: hard + "boxen@npm:1.3.0, boxen@npm:^1.2.1": version: 1.3.0 resolution: "boxen@npm:1.3.0" @@ -12733,6 +13605,15 @@ __metadata: languageName: node linkType: hard +"bson@npm:^4.7.0": + version: 4.7.0 + resolution: "bson@npm:4.7.0" + dependencies: + buffer: ^5.6.0 + checksum: 83e7b64afdad5a505073a7e6206e7b345f59e7888fbcb1948fba72b6101a1baf58b7499314f8e24b650567665f7973eda048aabbb1ddcfbadfba7d6c6b0f5e83 + languageName: node + linkType: hard + "buffer-alloc-unsafe@npm:^1.1.0": version: 1.1.0 resolution: "buffer-alloc-unsafe@npm:1.1.0" @@ -17654,6 +18535,17 @@ __metadata: languageName: node linkType: hard +"fast-xml-parser@npm:4.0.11": + version: 4.0.11 + resolution: "fast-xml-parser@npm:4.0.11" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: d8a08e4d5597e0fc00a86735195872eeb03008913e298830941516f3766e16ee555e2d431acc92e1dda887938edc445252ec5b59494aab60a8389888bd13719c + languageName: node + linkType: hard + "fast-xml-parser@npm:^3.19.0": version: 3.21.1 resolution: "fast-xml-parser@npm:3.21.1" @@ -25402,6 +26294,16 @@ __metadata: languageName: node linkType: hard +"mongodb-connection-string-url@npm:^2.5.4": + version: 2.6.0 + resolution: "mongodb-connection-string-url@npm:2.6.0" + dependencies: + "@types/whatwg-url": ^8.2.1 + whatwg-url: ^11.0.0 + checksum: 1d662f0ecfe96f7a400f625c244b2e52914c98f3562ee7d19941127578b5f8237624433bdcea285a654041b945b518803512989690c74548aec5860c5541c605 + languageName: node + linkType: hard + "mongodb-memory-server-core@npm:7.6.3": version: 7.6.3 resolution: "mongodb-memory-server-core@npm:7.6.3" @@ -25468,6 +26370,24 @@ __metadata: languageName: node linkType: hard +"mongodb@npm:^4.12.1": + version: 4.12.1 + resolution: "mongodb@npm:4.12.1" + dependencies: + "@aws-sdk/credential-providers": ^3.186.0 + bson: ^4.7.0 + mongodb-connection-string-url: ^2.5.4 + saslprep: ^1.0.3 + socks: ^2.7.1 + dependenciesMeta: + "@aws-sdk/credential-providers": + optional: true + saslprep: + optional: true + checksum: 84590484b2c93bce849ec1e334b064e983444ed73942061c91e09556348c80db9d4a40544b927cd795bdfbfc51d1b713a7df5ced4ecf13cd00fab5e3c3e32ada + languageName: node + linkType: hard + "mongodb@npm:^4.3.1": version: 4.7.0 resolution: "mongodb@npm:4.7.0" @@ -30913,7 +31833,7 @@ __metadata: jaeger-client: ^3.19.0 mem: ^8.1.1 moleculer: ^0.14.21 - mongodb: ^4.3.1 + mongodb: ^4.12.1 nats: ^2.6.1 npm-run-all: ^4.1.5 pino: ^7.11.0 @@ -31860,6 +32780,16 @@ __metadata: languageName: node linkType: hard +"socks@npm:^2.7.1": + version: 2.7.1 + resolution: "socks@npm:2.7.1" + dependencies: + ip: ^2.0.0 + smart-buffer: ^4.2.0 + checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + languageName: node + linkType: hard + "sodium-native@npm:^3.3.0": version: 3.3.0 resolution: "sodium-native@npm:3.3.0" @@ -32835,7 +33765,7 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^1.0.4": +"strnum@npm:^1.0.4, strnum@npm:^1.0.5": version: 1.0.5 resolution: "strnum@npm:1.0.5" checksum: 651b2031db5da1bf4a77fdd2f116a8ac8055157c5420f5569f64879133825915ad461513e7202a16d7fec63c54fd822410d0962f8ca12385c4334891b9ae6dd2 @@ -33937,7 +34867,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": +"tslib@npm:^1.11.1, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd