diff --git a/app/definitions/rest/helpers/PaginatedRequest.ts b/app/definitions/rest/helpers/PaginatedRequest.ts deleted file mode 100644 index 3543675e392..00000000000 --- a/app/definitions/rest/helpers/PaginatedRequest.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type PaginatedRequest = { - count?: number; - offset?: number; - sort?: `{ "${S}": ${1 | -1} }` | string; -} & T; diff --git a/app/definitions/rest/helpers/PaginatedResult.ts b/app/definitions/rest/helpers/PaginatedResult.ts deleted file mode 100644 index ea153093cee..00000000000 --- a/app/definitions/rest/helpers/PaginatedResult.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type PaginatedResult = { - count: number; - offset: number; - total: number; -} & T; diff --git a/app/definitions/rest/helpers/index.ts b/app/definitions/rest/helpers/index.ts index 285b25c0907..d36aa7c23d3 100644 --- a/app/definitions/rest/helpers/index.ts +++ b/app/definitions/rest/helpers/index.ts @@ -1,16 +1,16 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { type Endpoints } from '../v1'; +// POC: This file implements rest-typings patterns adapted to work with our current Endpoints structure. +// Once all endpoint definitions are migrated to use @rocket.chat/rest-typings Endpoints +// (which uses /v1/ prefix paths), we can replace this with direct imports from the package. +import type { KeyOfEach } from '@rocket.chat/core-typings'; +import type { ReplacePlaceholders } from '@rocket.chat/rest-typings'; -type ReplacePlaceholders = string extends TPath - ? TPath - : TPath extends `${infer Start}:${infer _Param}/${infer Rest}` - ? `${Start}${string}/${ReplacePlaceholders}` - : TPath extends `${infer Start}:${infer _Param}` - ? `${Start}${string}` - : TPath; +import { type Endpoints } from '../v1'; -type KeyOfEach = T extends any ? keyof T : never; +// Re-export utility types from rest-typings that we can use directly +export type { ReplacePlaceholders } from '@rocket.chat/rest-typings'; +// GetParams and GetResult - matching rest-typings implementation type GetParams = TOperation extends (...args: any) => any ? Parameters[0] extends void ? void @@ -26,7 +26,7 @@ type OperationsByPathPatternAndMethod< ? { pathPattern: TPathPattern; method: TMethod; - path: ReplacePlaceholders; + path: ReplacePlaceholders; params: GetParams; result: GetResult; } @@ -38,11 +38,10 @@ type OperationsByPathPattern = TPathPatter type Operations = OperationsByPathPattern; -type Method = Operations['method']; - +// Core types matching rest-typings structure +export type Method = Operations['method']; export type PathPattern = Operations['pathPattern']; - -type Path = Operations['path']; +export type Path = Operations['path']; // @@ -56,22 +55,108 @@ export type Serialized = T extends Date } : null; +// MatchPathPattern - matching rest-typings implementation export type MatchPathPattern = TPath extends any ? Extract['pathPattern'] : never; -export type OperationResult< - TMethod extends Method, - TPathPattern extends PathPattern -> = TMethod extends keyof Endpoints[TPathPattern] ? GetResult : never; +// JoinPathPattern - utility from rest-typings for combining path patterns +export type JoinPathPattern< + TBasePath extends string, + TSubPathPattern extends string +> = Extract< + PathPattern, + `${TBasePath}${TSubPathPattern extends '' ? TSubPathPattern : `/${TSubPathPattern}`}` | TSubPathPattern +>; + +// UrlParams - extracts URL parameters from path patterns (from rest-typings) +export type UrlParams = string extends T + ? Record + : T extends `${string}:${infer Param}/${infer Rest}` + ? { + [k in Param | keyof UrlParams]: string; + } + : T extends `${string}:${infer Param}` + ? { + [k in Param]: string; + } + : undefined | Record; + +// MethodOf - gets methods available for a path pattern (from rest-typings) +export type MethodOf = TPathPattern extends any + ? keyof Endpoints[TPathPattern] + : never; + +// PathFor - matching rest-typings implementation pattern +type MethodToPathMap = { + [TOperation in Operations as TOperation['method']]: TOperation['path']; +}; -export type PathFor = TMethod extends any ? Extract['path'] : never; +export type PathFor = MethodToPathMap[TMethod]; +// PathWithParamsFor and PathWithoutParamsFor - additional utilities from rest-typings +// These check if the operation function has parameters (matching rest-typings pattern) +type MethodToPathWithParamsMap = { + [TOperation in Operations as TOperation['params'] extends void + ? never + : TOperation['method']]: TOperation['path']; +}; + +type MethodToPathWithoutParamsMap = { + [TOperation in Operations as TOperation['params'] extends void + ? TOperation['method'] + : undefined extends TOperation['params'] + ? TOperation['method'] + : never]: TOperation['path']; +}; + +export type PathWithParamsFor = MethodToPathWithParamsMap[TMethod extends keyof MethodToPathWithParamsMap + ? TMethod + : never]; + +export type PathWithoutParamsFor = MethodToPathWithoutParamsMap[TMethod extends keyof MethodToPathWithoutParamsMap + ? TMethod + : never]; + +// OperationParams and OperationResult - matching rest-typings implementation export type OperationParams< TMethod extends Method, TPathPattern extends PathPattern > = TMethod extends keyof Endpoints[TPathPattern] ? GetParams : never; +export type OperationResult< + TMethod extends Method, + TPathPattern extends PathPattern +> = TMethod extends keyof Endpoints[TPathPattern] ? GetResult : never; + +// ParamsFor and ResultFor - using MethodToPathPatternToParamsMap pattern from rest-typings +type MethodToPathPatternToParamsMap = { + [TMethod in Method]: { + [TPathPattern in keyof Endpoints]: TMethod extends keyof Endpoints[TPathPattern] + ? Endpoints[TPathPattern][TMethod] extends infer TOperation + ? TOperation extends (...args: any) => any + ? Parameters[0] + : never + : never + : never; + }; +}; + +type MethodToPathPatternToResultMap = { + [TMethod in Method]: { + [TPathPattern in keyof Endpoints]: TMethod extends keyof Endpoints[TPathPattern] + ? Endpoints[TPathPattern][TMethod] extends infer TOperation + ? TOperation extends (...args: any) => any + ? ReturnType + : never + : never + : never; + }; +}; + +export type ParamsFor = + MethodToPathPatternToParamsMap[TMethod][TPathPattern]; + type SuccessResult = T & { success: true }; type FailureResult = { @@ -87,8 +172,10 @@ type UnauthorizedResult = { error: T | 'unauthorized'; }; +// ResultFor wraps the base result with success/error handling (SDK-specific) +// Uses MethodToPathPatternToResultMap pattern from rest-typings export type ResultFor = - | SuccessResult> + | SuccessResult | FailureResult | UnauthorizedResult; diff --git a/app/definitions/rest/v1/autotranslate.ts b/app/definitions/rest/v1/autotranslate.ts index ed39817ac4c..9a453912229 100644 --- a/app/definitions/rest/v1/autotranslate.ts +++ b/app/definitions/rest/v1/autotranslate.ts @@ -1,5 +1,15 @@ -export type AutoTranslateEndpoints = { - 'autotranslate.translateMessage': { - POST: (params: { messageId: string; targetLanguage: string }) => void; - }; +import type { Endpoints } from '@rocket.chat/rest-typings'; + +type ExtractAutoTranslateEndpoints = { + [K in keyof T as K extends `/v1/autotranslate.${string}` ? K : never]: T[K]; }; + +type RestTypingsAutoTranslateEndpoints = ExtractAutoTranslateEndpoints; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptAutoTranslateEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; +}; + +export type AutoTranslateEndpoints = AdaptAutoTranslateEndpoints; diff --git a/app/definitions/rest/v1/channels.ts b/app/definitions/rest/v1/channels.ts index c02e76cdac9..d4071827879 100644 --- a/app/definitions/rest/v1/channels.ts +++ b/app/definitions/rest/v1/channels.ts @@ -1,119 +1,9 @@ -import { type ITeam } from '../../ITeam'; -import type { IMessageFromServer } from '../../IMessage'; -import type { IServerRoom } from '../../IRoom'; -import type { IUser } from '../../IUser'; -import { type IGetRoomRoles } from '../../IRole'; -import { type IServerAttachment } from '../../IAttachment'; -import { type PaginatedRequest } from '../helpers/PaginatedRequest'; +import type { ChannelsEndpoints as RestTypingsChannelsEndpoints } from '@rocket.chat/rest-typings'; -export type ChannelsEndpoints = { - 'channels.files': { - GET: (params: { roomId: IServerRoom['_id']; offset: number; sort: string | { uploadedAt: number } }) => { - files: IServerAttachment[]; - count: number; - offset: number; - total: number; - }; - }; - 'channels.members': { - GET: (params: { - roomId: IServerRoom['_id']; - offset?: number; - count?: number; - filter?: boolean; - status?: string[]; - }) => PaginatedRequest<{ - members: IUser[]; - }>; - }; - 'channels.history': { - GET: (params: { roomId: string; count: number; latest?: string }) => { - messages: IMessageFromServer[]; - }; - }; - 'channels.archive': { - POST: (params: { roomId: string }) => void; - }; - 'channels.unarchive': { - POST: (params: { roomId: string }) => void; - }; - 'channels.create': { - POST: (params: { - name: string; - members: string[]; - readOnly: boolean; - extraData: { - broadcast: boolean; - encrypted: boolean; - teamId?: string; - }; - }) => { - group: Partial; - }; - }; - 'channels.convertToTeam': { - POST: (params: { channelId: string } | { channelName: string } | { channelId: string; channelName: string }) => { - team: ITeam; - }; - }; - 'channels.info': { - GET: (params: { roomId: string }) => { channel: IServerRoom }; - }; - 'channels.counters': { - GET: (params: { roomId: string }) => { - joined: boolean; - members: number; - unreads: number; - unreadsFrom: Date; - msgs: number; - latest: Date; - userMentions: number; - }; - }; - 'channels.join': { - POST: (params: { roomId: string; joinCode: string | null }) => { channel: IServerRoom }; - }; - 'channels.close': { - POST: (params: { roomId: string }) => {}; - }; - 'channels.kick': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.delete': { - POST: (params: { roomId: string }) => {}; - }; - 'channels.leave': { - POST: (params: { roomId: string }) => {}; - }; - 'channels.addModerator': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.removeModerator': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.addOwner': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.removeOwner': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.addLeader': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.removeLeader': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'channels.roles': { - GET: (params: { roomId: string }) => { roles: IGetRoomRoles[] }; - }; - 'channels.messages': { - GET: (params: { - roomId: IServerRoom['_id']; - query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }; - offset: number; - sort: { ts: number }; - }) => { - messages: IMessageFromServer[]; - }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptChannelsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type ChannelsEndpoints = AdaptChannelsEndpoints; diff --git a/app/definitions/rest/v1/chat.ts b/app/definitions/rest/v1/chat.ts index f611c829423..46e0b500c67 100644 --- a/app/definitions/rest/v1/chat.ts +++ b/app/definitions/rest/v1/chat.ts @@ -1,96 +1,9 @@ -import type { EncryptedContent, IMessage, IMessageFromServer, IReadReceipts } from '../../IMessage'; -import type { IServerRoom } from '../../IRoom'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; +import type { ChatEndpoints as RestTypingsChatEndpoints } from '@rocket.chat/rest-typings'; -export type ChatEndpoints = { - 'chat.getMessage': { - GET: (params: { msgId: IMessage['_id'] }) => { - message: IMessage; - }; - }; - 'chat.followMessage': { - POST: (params: { mid: IMessage['_id'] }) => void; - }; - 'chat.unStarMessage': { - POST: (params: { messageId: IMessage['_id'] }) => void; - }; - 'chat.starMessage': { - POST: (params: { messageId: IMessage['_id'] }) => void; - }; - 'chat.unfollowMessage': { - POST: (params: { mid: IMessage['_id'] }) => void; - }; - 'chat.unPinMessage': { - POST: (params: { messageId: IMessage['_id'] }) => void; - }; - 'chat.pinMessage': { - POST: (params: { messageId: IMessage['_id'] }) => void; - }; - 'chat.reportMessage': { - POST: (params: { messageId: IMessage['_id']; description: string }) => void; - }; - 'chat.getDiscussions': { - GET: (params: { roomId: IServerRoom['_id']; text?: string; offset: number; count: number }) => { - messages: IMessageFromServer[]; - total: number; - count: number; - }; - }; - 'chat.getThreadsList': { - GET: (params: { - rid: IServerRoom['_id']; - type?: 'unread' | 'following' | 'all'; - text?: string; - offset: number; - count: number; - }) => PaginatedResult<{ - threads: IMessage[]; - total: number; - }>; - }; - 'chat.syncThreadsList': { - GET: (params: { rid: IServerRoom['_id']; updatedSince: string }) => { - threads: { - update: IMessage[]; - remove: IMessage[]; - }; - }; - }; - 'chat.delete': { - POST: (params: { msgId: string; roomId: string }) => { - _id: string; - ts: string; - message: Pick; - }; - }; - 'chat.react': { - POST: (params: { emoji: string; messageId: string }) => void; - }; - 'chat.ignoreUser': { - GET: (params: { rid: string; userId: string; ignore: boolean }) => {}; - }; - 'chat.search': { - GET: (params: { roomId: IServerRoom['_id']; searchText: string; count: number; offset: number }) => { - messages: IMessageFromServer[]; - }; - }; - 'chat.update': { - POST: (params: { roomId: IServerRoom['_id']; msgId: string; text?: string; content?: EncryptedContent }) => { - messages: IMessageFromServer; - }; - }; - 'chat.getMessageReadReceipts': { - GET: (params: { messageId: string }) => { receipts: IReadReceipts[] }; - }; - 'chat.postMessage': { - POST: (params: { roomId: string; text: string }) => { - message: IMessage; - success: boolean; - }; - }; - 'chat.getPinnedMessages': { - GET: (params: { roomId: IServerRoom['_id']; offset: number; count: number }) => { - messages: IMessageFromServer[]; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptChatEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; - }; -}; + +export type ChatEndpoints = AdaptChatEndpoints; diff --git a/app/definitions/rest/v1/commands.ts b/app/definitions/rest/v1/commands.ts index 375ce9fb735..a77c67355a9 100644 --- a/app/definitions/rest/v1/commands.ts +++ b/app/definitions/rest/v1/commands.ts @@ -1,23 +1,15 @@ -import { type IPreviewItem } from '../../ISlashCommand'; +import type { Endpoints } from '@rocket.chat/rest-typings'; -export type CommandsEndpoints = { - 'commands.preview': { - GET: (params: { command: string; params: string; roomId: string }) => { - preview?: { - i18nTitle: string; - items: IPreviewItem[]; - }; - }; - POST: (params: { - command: string; - params: string; - roomId: string; - previewItem: IPreviewItem; - triggerId: string; - tmid?: string; - }) => {}; - }; - 'commands.run': { - POST: (params: { command: string; roomId: string; params: string; triggerId?: string; tmid?: string }) => {}; - }; +type ExtractCommandsEndpoints = { + [K in keyof T as K extends `/v1/commands.${string}` ? K : never]: T[K]; }; + +type RestTypingsCommandsEndpoints = ExtractCommandsEndpoints; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptCommandsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; +}; + +export type CommandsEndpoints = AdaptCommandsEndpoints; diff --git a/app/definitions/rest/v1/customUserStatus.ts b/app/definitions/rest/v1/customUserStatus.ts index db5e76ee4f7..4c602fded73 100644 --- a/app/definitions/rest/v1/customUserStatus.ts +++ b/app/definitions/rest/v1/customUserStatus.ts @@ -1,7 +1,15 @@ -export type CustomUserStatusEndpoints = { - 'custom-user-status.list': { - GET: (params: { query: string }) => { - statuses: unknown[]; - }; - }; +import type { Endpoints } from '@rocket.chat/rest-typings'; + +type ExtractCustomUserStatusEndpoints = { + [K in keyof T as K extends `/v1/custom-user-status.${string}` ? K : never]: T[K]; }; + +type RestTypingsCustomUserStatusEndpoints = ExtractCustomUserStatusEndpoints; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptCustomUserStatusEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; +}; + +export type CustomUserStatusEndpoints = AdaptCustomUserStatusEndpoints; diff --git a/app/definitions/rest/v1/directory.ts b/app/definitions/rest/v1/directory.ts index 125b5ad65f2..fa300648f7a 100644 --- a/app/definitions/rest/v1/directory.ts +++ b/app/definitions/rest/v1/directory.ts @@ -1,13 +1,15 @@ -import { type IServerRoom } from '../../IRoom'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; - -export type DirectoryEndpoint = { - directory: { - GET: (params: { - query: { [key: string]: string }; - count: number; - offset: number; - sort: { [key: string]: number }; - }) => PaginatedResult<{ result: IServerRoom[]; count: number }>; - }; +import type { Endpoints } from '@rocket.chat/rest-typings'; + +type ExtractDirectoryEndpoint = { + [K in keyof T as K extends `/v1/directory` ? K : never]: T[K]; +}; + +type RestTypingsDirectoryEndpoint = ExtractDirectoryEndpoint; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptDirectoryEndpoint = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type DirectoryEndpoint = AdaptDirectoryEndpoint; diff --git a/app/definitions/rest/v1/dm.ts b/app/definitions/rest/v1/dm.ts index 18ece05d5ee..60dd7b48d7d 100644 --- a/app/definitions/rest/v1/dm.ts +++ b/app/definitions/rest/v1/dm.ts @@ -1,21 +1,9 @@ -import type { IServerRoom } from '../../IRoom'; -import type { IUser } from '../../IUser'; +import type { DmEndpoints as RestTypingsDmEndpoints } from '@rocket.chat/rest-typings'; -export type DmEndpoints = { - 'dm.create': { - POST: ( - params: ( - | { - username: Exclude; - } - | { - usernames: string; - } - ) & { - excludeSelf?: boolean; - } - ) => { - room: IServerRoom & { rid: IServerRoom['_id'] }; - }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptDmEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type DmEndpoints = AdaptDmEndpoints; diff --git a/app/definitions/rest/v1/e2e.ts b/app/definitions/rest/v1/e2e.ts index c4b8878ff22..a41da59776a 100644 --- a/app/definitions/rest/v1/e2e.ts +++ b/app/definitions/rest/v1/e2e.ts @@ -1,37 +1,12 @@ -import { type IUser } from '../../IUser'; +import type { E2eEndpoints as RestTypingsE2eEndpoints } from '@rocket.chat/rest-typings'; -export type E2eEndpoints = { - 'e2e.setUserPublicAndPrivateKeys': { - POST: (params: { public_key: string; private_key: string; force?: boolean }) => void; - }; - 'e2e.getUsersOfRoomWithoutKey': { - GET: (params: { rid: string }) => { - users: Pick[]; - }; - }; - 'e2e.updateGroupKey': { - POST: (params: { uid: string; rid: string; key: string }) => {}; - }; - 'e2e.acceptSuggestedGroupKey': { - POST: (params: { rid: string }) => {}; - }; - 'e2e.rejectSuggestedGroupKey': { - POST: (params: { rid: string }) => {}; - }; - 'e2e.fetchUsersWaitingForGroupKey': { - GET: (params: { roomIds: string[] }) => { - usersWaitingForE2EKeys: any; - }; - }; - 'e2e.provideUsersSuggestedGroupKeys': { - POST: (params: { usersSuggestedGroupKeys: any }) => void; - }; - 'e2e.setRoomKeyID': { - POST: (params: { rid: string; keyID: string }) => {}; - }; - 'e2e.fetchMyKeys': { - GET: () => { public_key: string; private_key: string }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptE2eEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; +}; + +export type E2eEndpoints = AdaptE2eEndpoints & { 'e2e.resetRoomKey': { POST: (params: { rid: string; e2eKey: string; e2eKeyId: string }) => void; }; diff --git a/app/definitions/rest/v1/emojiCustom.ts b/app/definitions/rest/v1/emojiCustom.ts index 788f6270aa9..ca140539506 100644 --- a/app/definitions/rest/v1/emojiCustom.ts +++ b/app/definitions/rest/v1/emojiCustom.ts @@ -1,21 +1,9 @@ -import type { ICustomEmojiDescriptor } from '../../ICustomEmojiDescriptor'; -import { type PaginatedRequest } from '../helpers/PaginatedRequest'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; +import type { EmojiCustomEndpoints as RestTypingsEmojiCustomEndpoints } from '@rocket.chat/rest-typings'; -export type EmojiCustomEndpoints = { - 'emoji-custom.all': { - GET: (params: PaginatedRequest<{ query: string }, 'name'>) => { - emojis: ICustomEmojiDescriptor[]; - } & PaginatedResult; - }; - 'emoji-custom.list': { - GET: (params: { updatedSince: string }) => { - emojis?: { - update: ICustomEmojiDescriptor[]; - }; - }; - }; - 'emoji-custom.delete': { - POST: (params: { emojiId: ICustomEmojiDescriptor['_id'] }) => void; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptEmojiCustomEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type EmojiCustomEndpoints = AdaptEmojiCustomEndpoints; diff --git a/app/definitions/rest/v1/groups.ts b/app/definitions/rest/v1/groups.ts index 93ac8c9f43f..bf6c5ba33c7 100644 --- a/app/definitions/rest/v1/groups.ts +++ b/app/definitions/rest/v1/groups.ts @@ -1,93 +1,9 @@ -import { type ITeam } from '../../ITeam'; -import type { IMessageFromServer } from '../../IMessage'; -import type { IServerRoom } from '../../IRoom'; -import type { IUser } from '../../IUser'; -import { type IGetRoomRoles } from '../../IRole'; -import { type IServerAttachment } from '../../IAttachment'; -import { type PaginatedRequest } from '../helpers/PaginatedRequest'; +import type { GroupsEndpoints as RestTypingsGroupsEndpoints } from '@rocket.chat/rest-typings'; -export type GroupsEndpoints = { - 'groups.files': { - GET: (params: { roomId: IServerRoom['_id']; offset: number; sort: string | { uploadedAt: number } }) => { - files: IServerAttachment[]; - count: number; - offset: number; - total: number; - }; - }; - 'groups.members': { - GET: (params: { - roomId: IServerRoom['_id']; - offset?: number; - count?: number; - filter?: string; - status?: string[]; - }) => PaginatedRequest<{ - members: IUser[]; - }>; - }; - 'groups.history': { - GET: (params: { roomId: string; count: number; latest?: string }) => { - messages: IMessageFromServer[]; - }; - }; - 'groups.archive': { - POST: (params: { roomId: string }) => void; - }; - 'groups.unarchive': { - POST: (params: { roomId: string }) => void; - }; - 'groups.create': { - POST: (params: { - name: string; - members: string[]; - readOnly: boolean; - extraData: { - broadcast: boolean; - encrypted: boolean; - teamId?: string; - }; - }) => { - group: Partial; - }; - }; - 'groups.convertToTeam': { - POST: (params: { roomId: string; roomName: string }) => { team: ITeam }; - }; - 'groups.counters': { - GET: (params: { roomId: string }) => { - joined: boolean; - members: number; - unreads: number; - unreadsFrom: Date; - msgs: number; - latest: Date; - userMentions: number; - }; - }; - 'groups.close': { - POST: (params: { roomId: string }) => {}; - }; - 'groups.kick': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'groups.delete': { - POST: (params: { roomId: string }) => {}; - }; - 'groups.leave': { - POST: (params: { roomId: string }) => {}; - }; - 'groups.roles': { - GET: (params: { roomId: string }) => { roles: IGetRoomRoles[] }; - }; - 'groups.messages': { - GET: (params: { - roomId: IServerRoom['_id']; - query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }; - offset: number; - sort: { ts: number }; - }) => { - messages: IMessageFromServer[]; - }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptGroupsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type GroupsEndpoints = AdaptGroupsEndpoints; diff --git a/app/definitions/rest/v1/im.ts b/app/definitions/rest/v1/im.ts index c4a7ad3a4a8..063cc79bc9c 100644 --- a/app/definitions/rest/v1/im.ts +++ b/app/definitions/rest/v1/im.ts @@ -1,75 +1,9 @@ -import type { IMessageFromServer } from '../../IMessage'; -import type { IServerRoom, RoomID, RoomType } from '../../IRoom'; -import type { IUser } from '../../IUser'; -import { type IServerAttachment } from '../../IAttachment'; -import { type PaginatedRequest } from '../helpers/PaginatedRequest'; +import type { ImEndpoints as RestTypingsImEndpoints } from '@rocket.chat/rest-typings'; -export type ImEndpoints = { - 'im.create': { - POST: ( - params: ( - | { - username: Exclude; - } - | { - usernames: string; - } - ) & { - excludeSelf?: boolean; - } - ) => { - room: { - t: RoomType; - rid: RoomID; - _id: RoomID; - usernames: IServerRoom['usernames']; - }; - }; - }; - 'im.files': { - GET: (params: { roomId: IServerRoom['_id']; offset: number; sort: string | { uploadedAt: number } }) => { - files: IServerAttachment[]; - count: number; - offset: number; - total: number; - }; - }; - 'im.members': { - GET: (params: { - roomId: IServerRoom['_id']; - offset?: number; - count?: number; - filter?: string; - status?: string[]; - }) => PaginatedRequest<{ - members: IUser[]; - }>; - }; - 'im.history': { - GET: (params: { roomId: string; count: number; latest?: string }) => { - messages: IMessageFromServer[]; - }; - }; - 'im.close': { - POST: (params: { roomId: string }) => {}; - }; - 'im.kick': { - POST: (params: { roomId: string; userId: string }) => {}; - }; - 'im.delete': { - POST: (params: { roomId: string }) => {}; - }; - 'im.leave': { - POST: (params: { roomId: string }) => {}; - }; - 'im.messages': { - GET: (params: { - roomId: IServerRoom['_id']; - query: { 'mentions._id': { $in: string[] } } | { 'starred._id': { $in: string[] } } | { pinned: boolean }; - offset: number; - sort: { ts: number }; - }) => { - messages: IMessageFromServer[]; - }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptImEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type ImEndpoints = AdaptImEndpoints; diff --git a/app/definitions/rest/v1/invites.ts b/app/definitions/rest/v1/invites.ts index e7779198494..f0e3c5ff488 100644 --- a/app/definitions/rest/v1/invites.ts +++ b/app/definitions/rest/v1/invites.ts @@ -1,25 +1,9 @@ -import type { IInvite } from '../../IInvite'; -import type { IServerRoom } from '../../IRoom'; +import type { InvitesEndpoints as RestTypingsInvitesEndpoints } from '@rocket.chat/rest-typings'; -export type InvitesEndpoints = { - listInvites: { - GET: () => Array; - }; - 'removeInvite/:_id': { - DELETE: () => void; - }; - '/v1/useInviteToken': { - POST: (params: { token: string }) => { - room: { - rid: IServerRoom['_id']; - prid: IServerRoom['prid']; - fname: IServerRoom['fname']; - name: IServerRoom['name']; - t: IServerRoom['t']; - }; - }; - }; - '/v1/validateInviteToken': { - POST: (params: { token: string }) => { valid: boolean }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptInvitesEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type InvitesEndpoints = AdaptInvitesEndpoints; diff --git a/app/definitions/rest/v1/moderation.ts b/app/definitions/rest/v1/moderation.ts index b0fe15d629e..a53d49a7f8b 100644 --- a/app/definitions/rest/v1/moderation.ts +++ b/app/definitions/rest/v1/moderation.ts @@ -1,5 +1,9 @@ -export type ModerationEndpoints = { - 'moderation.reportUser': { - POST: (params: { userId: string; description: string }) => void; - }; +import type { ModerationEndpoints as RestTypingsModerationEndpoints } from '@rocket.chat/rest-typings'; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptModerationEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type ModerationEndpoints = AdaptModerationEndpoints; diff --git a/app/definitions/rest/v1/omnichannel.ts b/app/definitions/rest/v1/omnichannel.ts index 0f3162d195e..e4d8ce8ad34 100644 --- a/app/definitions/rest/v1/omnichannel.ts +++ b/app/definitions/rest/v1/omnichannel.ts @@ -1,254 +1,9 @@ -import { type ICannedResponse } from '../../ICannedResponse'; -import { type ILivechatAgent } from '../../ILivechatAgent'; -import { type ILivechatDepartment } from '../../ILivechatDepartment'; -import { type ILivechatDepartmentAgents } from '../../ILivechatDepartmentAgents'; -import { type ILivechatMonitor } from '../../ILivechatMonitor'; -import { type ILivechatTag } from '../../ILivechatTag'; -import { type ILivechatVisitor, type ILivechatVisitorDTO } from '../../ILivechatVisitor'; -import { type IMessage } from '../../IMessage'; -import { type IOmnichannelRoom, type IServerRoom } from '../../IRoom'; -import { type ISetting } from '../../ISetting'; -import { type PaginatedRequest } from '../helpers/PaginatedRequest'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; +import type { OmnichannelEndpoints as RestTypingsOmnichannelEndpoints } from '@rocket.chat/rest-typings'; -type booleanString = 'true' | 'false'; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; -export type OmnichannelEndpoints = { - 'livechat/appearance': { - GET: () => { - appearance: ISetting[]; - }; - }; - 'livechat/config/routing': { - GET: () => { - config: { - previewRoom: boolean; - showConnecting: boolean; - showQueue: boolean; - showQueueLink: boolean; - returnQueue: boolean; - enableTriggerAction: boolean; - autoAssignAgent: boolean; - }; - }; - }; - 'livechat/visitors.info': { - GET: (params: { visitorId: string }) => { - visitor: ILivechatVisitor; - }; - }; - 'livechat/room.onHold': { - POST: (params: { roomId: IServerRoom['_id'] }) => void; - }; - 'livechat/monitors.list': { - GET: (params: PaginatedRequest<{ text: string }>) => PaginatedResult<{ - monitors: ILivechatMonitor[]; - }>; - }; - 'livechat/tags.list': { - GET: (params: PaginatedRequest<{ text: string }, 'name'>) => PaginatedResult<{ - tags: ILivechatTag[]; - }>; - }; - 'livechat/department': { - GET: ( - params: PaginatedRequest<{ - text: string; - onlyMyDepartments?: booleanString; - enabled?: boolean; - excludeDepartmentId?: string; - }> - ) => PaginatedResult<{ - departments: ILivechatDepartment[]; - }>; - POST: (params: { department: Partial; agents: string[] }) => { - department: ILivechatDepartment; - agents: any[]; - }; - }; - 'livechat/department/:_id': { - GET: (params: { onlyMyDepartments?: booleanString; includeAgents?: booleanString }) => { - department: ILivechatDepartment | null; - agents?: any[]; - }; - PUT: (params: { department: Partial[]; agents: any[] }) => { - department: ILivechatDepartment; - agents: any[]; - }; - DELETE: () => void; - }; - 'livechat/department.autocomplete': { - GET: (params: { selector: string; onlyMyDepartments: booleanString }) => { - items: ILivechatDepartment[]; - }; - }; - 'livechat/department/:departmentId/agents': { - GET: (params: { sort: string }) => PaginatedResult<{ agents: ILivechatDepartmentAgents[] }>; - POST: (params: { upsert: string[]; remove: string[] }) => void; - }; - 'livechat/department/:departmentId/?includeAgents=false': { - GET: () => PaginatedResult<{ department: ILivechatDepartment }>; - }; - 'livechat/departments.available-by-unit/:id': { - GET: (params: PaginatedRequest<{ text: string }>) => PaginatedResult<{ - departments: ILivechatDepartment[]; - }>; - }; - 'livechat/departments.by-unit/': { - GET: (params: PaginatedRequest<{ text: string }>) => PaginatedResult<{ - departments: ILivechatDepartment[]; - }>; - }; - - 'livechat/departments.by-unit/:id': { - GET: (params: PaginatedRequest<{ text: string }>) => PaginatedResult<{ - departments: ILivechatDepartment[]; - }>; - }; - - 'livechat/department.listByIds': { - GET: (params: { ids: string[]; fields?: Record }) => { departments: ILivechatDepartment[] }; - }; - - 'livechat/custom-fields': { - GET: (params: PaginatedRequest<{ text: string }>) => PaginatedResult<{ - customFields: [ - { - _id: string; - label: string; - visibility?: string; - scope?: string; - } - ]; - }>; - }; - - 'livechat/inquiries.queued': { - GET: () => PaginatedResult<{ - inquiries: IOmnichannelRoom[]; - }>; - }; - - 'livechat/inquiries.queuedForUser': { - GET: () => PaginatedResult<{ - inquiries: IOmnichannelRoom[]; - }>; - }; - - 'livechat/inquiries.take': { - POST: (params: { inquiryId: string }) => void; - }; - - 'livechat/inquiries.returnAsInquiry': { - POST: (params: { roomId: string; departmentId?: string }) => boolean; - }; - - 'livechat/rooms': { - GET: (params: { - guest: string; - fname: string; - servedBy: string[]; - status: string; - department: string; - from: string; - to: string; - customFields: any; - current: number; - itemsPerPage: number; - tags: string[]; - }) => PaginatedResult<{ - rooms: IOmnichannelRoom[]; - }>; - }; - 'livechat/:rid/messages': { - GET: (params: PaginatedRequest<{ query: string }>) => PaginatedResult<{ - messages: IMessage[]; - }>; - }; - 'livechat/users/agent': { - GET: (params: PaginatedRequest<{ text?: string }>) => PaginatedResult<{ - users: { - _id: string; - emails: { - address: string; - verified: boolean; - }[]; - status: string; - name: string; - username: string; - statusLivechat: string; - livechat: { - maxNumberSimultaneousChat: number; - }; - }[]; - }>; - }; - - 'livechat/visitor': { - POST: (params: { visitor: ILivechatVisitorDTO }) => { visitor: ILivechatVisitor }; - }; - - 'livechat/visitor/:token': { - GET: (params: { token: string }) => { visitor: ILivechatVisitor }; - DELETE: (params: { token: string }) => { visitor: { _id: string; ts: string } }; - }; - - 'livechat/visitor/:token/room': { - GET: (params: { token: string }) => { rooms: IOmnichannelRoom[] }; - }; - - 'livechat/visitor.callStatus': { - POST: (params: { token: string; callStatus: string; rid: string; callId: string }) => { - token: string; - callStatus: string; - }; - }; - - 'livechat/visitor.status': { - POST: (params: { token: string; status: string }) => { token: string; status: string }; - }; - - 'livechat/queue': { - GET: (params: { - agentId?: ILivechatAgent['_id']; - includeOfflineAgents?: boolean; - departmentId?: ILivechatAgent['_id']; - offset: number; - count: number; - sort: string | { uploadedAt: number }; - }) => { - queue: { - chats: number; - department: { _id: string; name: string }; - user: { _id: string; username: string; status: string }; - }[]; - count: number; - offset: number; - total: number; - }; - }; - - 'livechat/agents/:uid/departments?enabledDepartmentsOnly=true': { - GET: () => { departments: ILivechatDepartment[] }; - }; - - 'canned-responses': { - GET: (params: PaginatedRequest<{ scope?: string; departmentId?: string; text?: string }>) => PaginatedResult<{ - cannedResponses: ICannedResponse[]; - }>; - }; - - 'livechat/room.saveInfo': { - POST: (params: { - guestData: { _id: string; name?: string; email?: string; phone?: string; livechatData?: Record }; - roomData: { - _id: string; - topic?: string; - tags?: string[]; - livechatData?: Record; - priorityId?: string; - slaId?: string; - }; - }) => void; - }; +type AdaptOmnichannelEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type OmnichannelEndpoints = AdaptOmnichannelEndpoints; diff --git a/app/definitions/rest/v1/permissions.ts b/app/definitions/rest/v1/permissions.ts index 8be22d1c59a..69f2ba623ed 100644 --- a/app/definitions/rest/v1/permissions.ts +++ b/app/definitions/rest/v1/permissions.ts @@ -1,17 +1,9 @@ -import { type IPermission } from '../../IPermission'; +import type { PermissionsEndpoints as RestTypingsPermissionsEndpoints } from '@rocket.chat/rest-typings'; -type PermissionsUpdateProps = { permissions: { _id: string; roles: string[] }[] }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; -export type PermissionsEndpoints = { - 'permissions.listAll': { - GET: (params: { updatedSince?: string }) => { - update: IPermission[]; - remove: IPermission[]; - }; - }; - 'permissions.update': { - POST: (params: PermissionsUpdateProps) => { - permissions: IPermission[]; - }; - }; +type AdaptPermissionsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type PermissionsEndpoints = AdaptPermissionsEndpoints; diff --git a/app/definitions/rest/v1/push.ts b/app/definitions/rest/v1/push.ts index f00f737bb0d..e6d04aa2dbd 100644 --- a/app/definitions/rest/v1/push.ts +++ b/app/definitions/rest/v1/push.ts @@ -1,24 +1,15 @@ -type TPushInfo = { - pushGatewayEnabled: boolean; - defaultPushGateway: boolean; - success: boolean; +import type { Endpoints } from '@rocket.chat/rest-typings'; + +type ExtractPushEndpoints = { + [K in keyof T as K extends `/v1/push.${string}` ? K : never]: T[K]; }; -export type PushEndpoints = { - 'push.token': { - POST: (params: { value: string; type: string; appName: string }) => { - result: { - id: string; - token: string; - appName: string; - userId: string; - }; - }; - }; - 'push.info': { - GET: () => TPushInfo; - }; - 'push.test': { - POST: () => { tokensCount: number }; - }; +type RestTypingsPushEndpoints = ExtractPushEndpoints; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptPushEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type PushEndpoints = AdaptPushEndpoints; diff --git a/app/definitions/rest/v1/roles.ts b/app/definitions/rest/v1/roles.ts index d77473a211d..fc8d302ab83 100644 --- a/app/definitions/rest/v1/roles.ts +++ b/app/definitions/rest/v1/roles.ts @@ -1,82 +1,32 @@ -import { type IRole } from '../../IRole'; -import { type RocketChatRecordDeleted } from '../../IRocketChatRecord'; -import { type IRoleUser, type IUser } from '../../IUser'; +import type { RolesEndpoints as RestTypingsRolesEndpoints } from '@rocket.chat/rest-typings'; -type RoleCreateProps = Pick & Partial>; +import { type IRole as ILocalIRole } from '../../IRole'; +import { type IRoleUser as ILocalIRoleUser } from '../../IUser'; -type RoleUpdateProps = { roleId: IRole['_id']; name: IRole['name'] } & Partial; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; -type RoleDeleteProps = { roleId: IRole['_id'] }; - -type RoleAddUserToRoleProps = { - username: string; - roleName: string; - roomId?: string; +type AdaptRolesEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; -type RoleRemoveUserFromRoleProps = { - username: string; - roleName: string; - roomId?: string; - scope?: string; -}; +type RoleCreateProps = Pick & Partial>; -type RoleSyncProps = { - updatedSince?: string; -}; +type RoleUpdateProps = { roleId: ILocalIRole['_id']; name: ILocalIRole['name'] } & Partial; -export type RolesEndpoints = { - 'roles.list': { - GET: () => { - roles: IRole[]; - }; - }; - 'roles.sync': { - GET: (params: RoleSyncProps) => { - roles: { - update: IRole[]; - remove: RocketChatRecordDeleted[]; - }; - }; - }; +export type RolesEndpoints = AdaptRolesEndpoints & { 'roles.create': { POST: (params: RoleCreateProps) => { - role: IRole; - }; - }; - - 'roles.addUserToRole': { - POST: (params: RoleAddUserToRoleProps) => { - role: IRole; + role: ILocalIRole; }; }; - - 'roles.getUsersInRole': { - GET: (params: { roomId: string; role: string; offset: number; count: number }) => { - users: IUser[]; - total: number; - }; - }; - 'roles.update': { POST: (role: RoleUpdateProps) => { - role: IRole; - }; - }; - - 'roles.delete': { - POST: (prop: RoleDeleteProps) => void; - }; - - 'roles.removeUserFromRole': { - POST: (props: RoleRemoveUserFromRoleProps) => { - role: IRole; + role: ILocalIRole; }; }; - 'roles.getUsersInPublicRoles': { GET: () => { - users: IRoleUser[]; + users: ILocalIRoleUser[]; success: boolean; }; }; diff --git a/app/definitions/rest/v1/rooms.ts b/app/definitions/rest/v1/rooms.ts index fdb75dbc5d0..e6602c1ef99 100644 --- a/app/definitions/rest/v1/rooms.ts +++ b/app/definitions/rest/v1/rooms.ts @@ -1,64 +1,13 @@ -import type { IMessage } from '../../IMessage'; -import type { IRoomNotifications, IServerRoom } from '../../IRoom'; -import type { IUser } from '../../IUser'; +import type { RoomsEndpoints as RestTypingsRoomsEndpoints } from '@rocket.chat/rest-typings'; -export type RoomsEndpoints = { - 'rooms.autocomplete.channelAndPrivate': { - GET: (params: { selector: string }) => { - items: IServerRoom[]; - }; - }; - 'rooms.autocomplete.channelAndPrivate.withPagination': { - GET: (params: { selector: string; offset?: number; count?: number; sort?: string }) => { - items: IServerRoom[]; - count: number; - offset: number; - total: number; - }; - }; - 'rooms.autocomplete.availableForTeams': { - GET: (params: { name: string }) => { - items: IServerRoom[]; - }; - }; - 'rooms.info': { - GET: (params: { roomId: string } | { roomName: string }) => { - room: IServerRoom; - }; - }; - 'rooms.createDiscussion': { - POST: (params: { - prid: IServerRoom['_id']; - pmid?: IMessage['_id']; - t_name: IServerRoom['fname']; - users?: IUser['username'][]; - encrypted?: boolean; - reply?: string; - }) => { - discussion: IServerRoom; - }; - }; - 'rooms.favorite': { - POST: (params: { roomId: string; favorite: boolean }) => {}; - }; - 'rooms.saveNotification': { - POST: (params: { roomId: string; notifications: IRoomNotifications }) => {}; - }; - 'rooms.muteUser': { - POST: (params: { roomId: string; userId: string }) => { - success: boolean; - }; - }; - 'rooms.unmuteUser': { - POST: (params: { rid: string; userId: string }) => { - success: boolean; - }; - }; - 'rooms.invite': { - POST: (params: { roomId: string; action: 'accept' | 'reject' }) => void; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptRoomsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; +export type RoomsEndpoints = AdaptRoomsEndpoints; + export type TRoomsMediaResponse = { file: { _id: string; url: string }; }; diff --git a/app/definitions/rest/v1/settings.ts b/app/definitions/rest/v1/settings.ts index 6841c718768..c6b5b2356d9 100644 --- a/app/definitions/rest/v1/settings.ts +++ b/app/definitions/rest/v1/settings.ts @@ -1,5 +1,13 @@ -import { type ISetting, type ISettingColor } from '../../ISetting'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; +import type { LoginServiceConfiguration } from '@rocket.chat/core-typings'; +import type { SettingsEndpoints as RestTypingsSettingsEndpoints } from '@rocket.chat/rest-typings'; + +import type { ISetting, ISettingColor } from '../../ISetting'; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptSettingsEndpoints = { + [K in keyof T as K extends `/v1/settings/:_id` ? `settings/:_id` : RemoveV1Prefix]: T[K]; +}; type SettingsUpdateProps = SettingsUpdatePropDefault | SettingsUpdatePropsActions | SettingsUpdatePropsColor; @@ -7,11 +15,27 @@ type SettingsUpdatePropsActions = { execute: boolean; }; -export type OauthCustomConfiguration = { +export const isSettingsUpdatePropsActions = (props: Partial): props is SettingsUpdatePropsActions => + 'execute' in props; + +type SettingsUpdatePropsColor = { + editor: ISettingColor['editor']; + value: ISetting['value']; +}; + +export const isSettingsUpdatePropsColor = (props: Partial): props is SettingsUpdatePropsColor => + 'editor' in props && 'value' in props; + +type SettingsUpdatePropDefault = { + value: ISetting['value']; +}; + +export const isSettingsUpdatePropDefault = (props: Partial): props is SettingsUpdatePropDefault => + 'value' in props; + +export type OauthCustomConfiguration = LoginServiceConfiguration & { _id: string; - clientId?: string; custom: unknown; - service?: string; serverURL: unknown; tokenPath: unknown; identityPath: unknown; @@ -34,70 +58,30 @@ export type OauthCustomConfiguration = { mergeRoles: unknown; accessTokenParam: unknown; showButton: unknown; - - appId: unknown; - consumerKey?: string; - clientConfig: unknown; buttonLabelText: unknown; buttonLabelColor: unknown; buttonColor: unknown; }; -export const isOauthCustomConfiguration = (config: any): config is OauthCustomConfiguration => Boolean(config); - -export const isSettingsUpdatePropsActions = (props: Partial): props is SettingsUpdatePropsActions => - 'execute' in props; - -type SettingsUpdatePropsColor = { - editor: ISettingColor['editor']; - value: ISetting['value']; -}; - -export const isSettingsUpdatePropsColor = (props: Partial): props is SettingsUpdatePropsColor => - 'editor' in props && 'value' in props; - -type SettingsUpdatePropDefault = { - value: ISetting['value']; -}; - -export const isSettingsUpdatePropDefault = (props: Partial): props is SettingsUpdatePropDefault => - 'value' in props; - -export type SettingsEndpoints = { - 'settings.public': { - GET: () => PaginatedResult & { - settings: Array; - }; - }; +export const isOauthCustomConfiguration = (config: any): config is OauthCustomConfiguration => + config && + typeof config === 'object' && + typeof config._id === 'string' && + typeof config.loginStyle === 'string' && + (config.loginStyle === 'popup' || config.loginStyle === 'redirect'); +export type SettingsEndpoints = AdaptSettingsEndpoints & { 'settings.oauth': { GET: () => { services: Partial[]; }; }; - 'settings.addCustomOAuth': { - POST: (params: { name: string }) => void; - }; - - settings: { - GET: () => { - settings: ISetting[]; - }; - }; - + // Override settings/:_id to use local types (ISetting, SettingsUpdateProps) instead of rest-typings types + // This ensures compatibility with the existing codebase while maintaining type safety 'settings/:_id': { GET: () => Pick; POST: (params: SettingsUpdateProps) => void; }; - - 'service.configurations': { - GET: () => { - configurations: Array<{ - appId: string; - secret: string; - }>; - }; - }; }; diff --git a/app/definitions/rest/v1/subscriptions.ts b/app/definitions/rest/v1/subscriptions.ts index 57f9258f285..f25bd99f8c1 100644 --- a/app/definitions/rest/v1/subscriptions.ts +++ b/app/definitions/rest/v1/subscriptions.ts @@ -1,8 +1,9 @@ -export type SubscriptionsEndpoints = { - 'subscriptions.unread': { - POST: (params: { firstUnreadMessage: { _id: string } } | { roomId: string }) => {}; - }; - 'subscriptions.read': { - POST: (params: { rid: string; readThreads?: boolean }) => {}; - }; +import type { SubscriptionsEndpoints as RestTypingsSubscriptionsEndpoints } from '@rocket.chat/rest-typings'; + +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptSubscriptionsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type SubscriptionsEndpoints = AdaptSubscriptionsEndpoints; diff --git a/app/definitions/rest/v1/teams.ts b/app/definitions/rest/v1/teams.ts index 73acf9d6083..927c3de096b 100644 --- a/app/definitions/rest/v1/teams.ts +++ b/app/definitions/rest/v1/teams.ts @@ -1,41 +1,9 @@ -import { type IServerRoom } from '../../IRoom'; -import { type IServerTeamUpdateRoom, type ITeam, type TEAM_TYPE } from '../../ITeam'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; +import type { TeamsEndpoints as RestTypingsTeamsEndpoints } from '@rocket.chat/rest-typings'; -export type TeamsEndpoints = { - 'teams.removeRoom': { - POST: (params: { roomId: string; teamId: string }) => { room: IServerRoom }; - }; - 'teams.listRoomsOfUser': { - GET: (params: { teamId: string; userId: string }) => PaginatedResult<{ rooms: IServerRoom[] }>; - }; - 'teams.updateRoom': { - POST: (params: { roomId: string; isDefault: boolean }) => { room: IServerTeamUpdateRoom }; - }; - 'teams.convertToChannel': { - POST: (params: { teamId: string; roomsToRemove?: string[] }) => {}; - }; - 'teams.removeMember': { - POST: (params: { teamId: string; userId: string; rooms?: string[] }) => {}; - }; - 'teams.addRooms': { - POST: (params: { teamId: string; rooms: string[] }) => { rooms: IServerRoom[] }; - }; - 'teams.create': { - POST: (params: { - name: string; - members: string[]; - type: TEAM_TYPE; - room: { readOnly: boolean; extraData: { broadcast: boolean; encrypted: boolean } }; - }) => { team: ITeam }; - }; - 'teams.listRooms': { - GET: (params: { - teamId: string; - count: number; - offset: number; - type: string; - filter?: any; - }) => PaginatedResult<{ rooms: IServerTeamUpdateRoom[] }>; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptTeamsEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type TeamsEndpoints = AdaptTeamsEndpoints; diff --git a/app/definitions/rest/v1/users.ts b/app/definitions/rest/v1/users.ts index fa624a5dea7..3ff9378c396 100644 --- a/app/definitions/rest/v1/users.ts +++ b/app/definitions/rest/v1/users.ts @@ -1,66 +1,9 @@ -import { type IProfileParams } from '../../IProfile'; -import type { ITeam } from '../../ITeam'; -import type { IUser, INotificationPreferences, IUserPreferences, IUserRegistered } from '../../IUser'; +import type { UsersEndpoints as RestTypingsUsersEndpoints } from '@rocket.chat/rest-typings'; -export type UsersEndpoints = { - 'users.2fa.sendEmailCode': { - POST: (params: { emailOrUsername: string }) => void; - }; - 'users.autocomplete': { - GET: (params: { selector: string }) => { items: IUser[] }; - }; - 'users.listTeams': { - GET: (params: { userId: IUser['_id'] }) => { teams: Array }; - }; - 'users.forgotPassword': { - POST: (params: { email: string }) => {}; - }; - 'users.info': { - GET: (params: { userId: IUser['_id'] }) => { - user: IUser; - success: boolean; - }; - POST: (params: { userId: IUser['_id'] }) => { - user: IUser; - success: boolean; - }; - }; - 'users.setPreferences': { - POST: (params: { userId?: IUser['_id']; data: Partial }) => { - user: IUserPreferences; - success: boolean; - }; - }; - 'users.register': { - POST: (params: { name: string; email: string; username: string; pass: string }) => { user: IUserRegistered }; - }; - 'users.setStatus': { - POST: (params: { status?: string; message?: string }) => {}; - }; - 'users.updateOwnBasicInfo': { - POST: (params: { - data: IProfileParams | Pick; - customFields?: { [key: string | number]: string }; - }) => { - user: IUser; - }; - }; - 'users.getUsernameSuggestion': { - GET: () => { result: string }; - }; - 'users.resetAvatar': { - POST: (params: { userId: string }) => {}; - }; - 'users.removeOtherTokens': { - POST: (params: { userId: string }) => {}; - }; - 'users.getPreferences': { - GET: (params: { userId: IUser['_id'] }) => { - preferences: INotificationPreferences; - success: boolean; - }; - }; - 'users.deleteOwnAccount': { - POST: (params: { password: string; confirmRelinquish: boolean }) => { success: boolean }; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; + +type AdaptUsersEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; }; + +export type UsersEndpoints = AdaptUsersEndpoints; diff --git a/app/definitions/rest/v1/videoConference.ts b/app/definitions/rest/v1/videoConference.ts index e0c30d562fb..0876bfe9c89 100644 --- a/app/definitions/rest/v1/videoConference.ts +++ b/app/definitions/rest/v1/videoConference.ts @@ -1,45 +1,12 @@ -import { - type VideoConfCall, - type VideoConfCancelProps, - type VideoConference, - type VideoConferenceCapabilities, - type VideoConferenceInstructions, - type VideoConfInfoProps, - type VideoConfJoinProps, - type VideoConfListProps, - type VideoConfStartProps -} from '../../IVideoConference'; -import { type PaginatedResult } from '../helpers/PaginatedResult'; +import type { VideoConferenceEndpoints as RestTypingsVideoConferenceEndpoints } from '@rocket.chat/rest-typings'; -export type VideoConferenceEndpoints = { - 'video-conference.start': { - POST: (params: VideoConfStartProps) => { data: VideoConferenceInstructions & { providerName: string } }; - }; - - 'video-conference.join': { - POST: (params: VideoConfJoinProps) => { url: string; providerName: string }; - }; - - 'video-conference.cancel': { - POST: (params: VideoConfCancelProps) => void; - }; - - 'video-conference.info': { - GET: (params: VideoConfInfoProps) => VideoConfCall; - }; +type RemoveV1Prefix = T extends `/v1/${infer Rest}` ? Rest : T; - 'video-conference.list': { - GET: (params: VideoConfListProps) => PaginatedResult<{ data: VideoConference[] }>; - }; - - 'video-conference.capabilities': { - GET: () => { providerName: string; capabilities: VideoConferenceCapabilities }; - }; - - 'video-conference.providers': { - GET: () => { data: { key: string; label: string }[] }; - }; +type AdaptVideoConferenceEndpoints = { + [K in keyof T as RemoveV1Prefix]: T[K]; +}; +export type VideoConferenceEndpoints = AdaptVideoConferenceEndpoints & { 'video-conference/jitsi.update-timeout': { POST: (params: { roomId: string }) => void; }; diff --git a/app/ee/omnichannel/lib/subscriptions/inquiry.ts b/app/ee/omnichannel/lib/subscriptions/inquiry.ts index 7c34f5920f5..57a35f194cd 100644 --- a/app/ee/omnichannel/lib/subscriptions/inquiry.ts +++ b/app/ee/omnichannel/lib/subscriptions/inquiry.ts @@ -90,8 +90,8 @@ export default function subscribeInquiry() { sdk.subscribe(streamTopic, 'public').catch((e: unknown) => console.log(e)); } - const departmentIds = departments.map(({ departmentId }) => departmentId); - departmentIds.forEach(departmentId => { + const departmentIds = departments.map(({ departmentId }: { departmentId: string }) => departmentId); + departmentIds.forEach((departmentId: string) => { // subscribe to all departments of the agent sdk.subscribe(streamTopic, `department/${departmentId}`).catch((e: unknown) => console.log(e)); }); diff --git a/app/lib/hooks/useEndpointData.ts b/app/lib/hooks/useEndpointData.ts index cfbd6ac737a..81fb149ee8b 100644 --- a/app/lib/hooks/useEndpointData.ts +++ b/app/lib/hooks/useEndpointData.ts @@ -42,12 +42,12 @@ export const useEndpointData = >( setLoading(true); sdk .get(endpoint, params as any) - .then(e => { + .then((e: any) => { setLoading(false); - if (e.success) { - setResult(e); - } else { + if (e && typeof e === 'object' && 'success' in e && !e.success) { setError(e as ErrorResult); + } else { + setResult(e as Serialized>>); } }) .catch((e: ErrorResult) => { @@ -66,4 +66,4 @@ export const useEndpointData = >( reload: fetchData, error }; -}; +}; \ No newline at end of file diff --git a/app/lib/hooks/useUserData.ts b/app/lib/hooks/useUserData.ts index b2cdbb4c7ae..f23c9d7a3f2 100644 --- a/app/lib/hooks/useUserData.ts +++ b/app/lib/hooks/useUserData.ts @@ -32,8 +32,8 @@ const useUserData = (rid: string) => { const { user } = result; const username = useRealName && user.name ? user.name : user.username; setUser({ - username, - avatar: user.username, + username: username || '', + avatar: user.username || '', uid: user._id, type: SubscriptionType.DIRECT, direct: true diff --git a/app/lib/methods/getCustomEmojis.ts b/app/lib/methods/getCustomEmojis.ts index a3c986f3a7a..9b0193508a1 100644 --- a/app/lib/methods/getCustomEmojis.ts +++ b/app/lib/methods/getCustomEmojis.ts @@ -124,7 +124,7 @@ export function getCustomEmojis() { } return resolve(); } - const params: { updatedSince: string } = { updatedSince: '' }; + const params: { query: string; updatedSince?: string } = { query: '' }; if (updatedSince) { params.updatedSince = updatedSince; } @@ -139,7 +139,7 @@ export function getCustomEmojis() { const { emojis } = result; // @ts-ignore const { update, remove } = emojis; - const changedEmojis = await updateEmojis({ update, remove, allRecords }); + const changedEmojis = await updateEmojis({ update: (update || []) as unknown as TCustomEmojiModel[], remove: (remove || []) as unknown as TCustomEmojiModel[], allRecords }); // `setCustomEmojis` is fired on selectServer // We run it again only if emojis were changed diff --git a/app/lib/methods/getRoomInfo.ts b/app/lib/methods/getRoomInfo.ts index 1983c5354b6..e86c2ca42ed 100644 --- a/app/lib/methods/getRoomInfo.ts +++ b/app/lib/methods/getRoomInfo.ts @@ -22,12 +22,12 @@ const getRoomInfo = async (rid: string): Promise => { } result = await getRoomInfoService(rid); - if (result?.success) { + if (result?.success && result.room) { return { rid, name: result.room.name as string, fname: result.room.fname, - t: result.room.t + t: result.room.t as RoomType }; } diff --git a/app/lib/methods/getSingleMessage.ts b/app/lib/methods/getSingleMessage.ts index 1cecd9be7d9..56623003324 100644 --- a/app/lib/methods/getSingleMessage.ts +++ b/app/lib/methods/getSingleMessage.ts @@ -5,8 +5,12 @@ const getSingleMessage = (messageId: string): Promise => new Promise(async (resolve, reject) => { try { const result = await getSingleMessageService(messageId); - if (result.success) { - return resolve(result.message); + if (result.success && result.message) { + const { message } = result; + return resolve({ + ...message, + id: message._id + } as unknown as IMessage); } return reject(); } catch (e) { diff --git a/app/lib/methods/getSlashCommands.ts b/app/lib/methods/getSlashCommands.ts index 8df67d989f4..88a9d9144d2 100644 --- a/app/lib/methods/getSlashCommands.ts +++ b/app/lib/methods/getSlashCommands.ts @@ -24,12 +24,14 @@ export function getSlashCommands() { const slashCommandsCollection = db.get('slash_commands'); const allSlashCommandsRecords = await slashCommandsCollection.query().fetch(); + const commandsTyped = commands as ISlashCommandResult[]; + // filter slash commands - const filteredSlashCommandsToCreate = commands.filter( + const filteredSlashCommandsToCreate = commandsTyped.filter( (i1: ISlashCommandResult) => !allSlashCommandsRecords.find(i2 => i1.command === i2.id) ); const filteredSlashCommandsToUpdate = allSlashCommandsRecords.filter(i1 => - commands.find((i2: ISlashCommandResult) => i1.id === i2.command) + commandsTyped.find((i2: ISlashCommandResult) => i1.id === i2.command) ); const filteredSlashCommandsToDelete = allSlashCommandsRecords.filter( i1 => @@ -49,7 +51,7 @@ export function getSlashCommands() { // Update const slashCommandsToUpdate = filteredSlashCommandsToUpdate.map(command => { - const newCommand = commands.find((s: ISlashCommandResult) => s.command === command.id); + const newCommand = commandsTyped.find((s: ISlashCommandResult) => s.command === command.id); return command.prepareUpdate( protectedFunction((s: TSlashCommandModel) => { Object.assign(s, newCommand); diff --git a/app/lib/services/restApi.ts b/app/lib/services/restApi.ts index f38c096c315..552f13e99de 100644 --- a/app/lib/services/restApi.ts +++ b/app/lib/services/restApi.ts @@ -16,8 +16,6 @@ import { type TParams } from '../../definitions/ILivechatEditView'; import { type ILivechatTag } from '../../definitions/ILivechatTag'; import { type ISpotlight } from '../../definitions/ISpotlight'; import { TEAM_TYPE } from '../../definitions/ITeam'; -import { type OperationParams, type ResultFor } from '../../definitions/rest/helpers'; -import { type SubscriptionsEndpoints } from '../../definitions/rest/v1/subscriptions'; import { Encryption } from '../encryption'; import { type RoomTypes, roomTypeToApiType } from '../methods/roomTypeToApiType'; import { unsubscribeRooms } from '../methods/subscribeRooms'; @@ -259,7 +257,7 @@ export const convertChannelToTeam = ({ rid, name, type }: { rid: string; name: s }; } - return sdk.post(type === 'c' ? 'channels.convertToTeam' : 'groups.convertToTeam', params); + return sdk.post(type === 'c' ? 'channels.convertToTeam' : 'groups.convertToTeam', params as any); }; export const convertTeamToChannel = ({ teamId, selected }: { teamId: string; selected: string[] }) => { @@ -275,7 +273,7 @@ export const joinRoom = (roomId: string, joinCode: string | null, type: 'c' | 'p if (type === 'p') { return sdk.methodCallWrapper('joinRoom', roomId) as Promise; } - return sdk.post('channels.join', { roomId, joinCode }); + return sdk.post('channels.join', { roomId, joinCode: joinCode ?? undefined }); }; export const deleteMessage = (messageId: string, rid: string) => @@ -336,21 +334,15 @@ export const toggleReadStatus = ( isRead: boolean, roomId: string, includeThreads?: boolean -): Promise> => { - let endpoint: keyof SubscriptionsEndpoints; - let payload: OperationParams<'POST', keyof SubscriptionsEndpoints> = { roomId }; - +): Promise => { if (isRead) { - endpoint = 'subscriptions.unread'; - } else { - endpoint = 'subscriptions.read'; - payload = { rid: roomId }; - if (includeThreads) { - payload.readThreads = includeThreads; - } + return sdk.post('subscriptions.unread', { roomId }); } - - return sdk.post(endpoint, payload); + const payload: { rid: string; readThreads?: boolean } = { rid: roomId }; + if (includeThreads) { + payload.readThreads = includeThreads; + } + return sdk.post('subscriptions.read', payload); }; export const getRoomCounters = ( @@ -364,9 +356,9 @@ export const getChannelInfo = (roomId: string) => // RC 0.48.0 sdk.get('channels.info', { roomId }); -export const getUserPreferences = (userId: string) => +export const getUserPreferences = () => // RC 0.62.0 - sdk.get('users.getPreferences', { userId }); + sdk.get('users.getPreferences'); export const getRoomInfo = (roomId: string) => // RC 0.72.0 @@ -434,7 +426,7 @@ export const returnLivechat = (rid: string, departmentId?: string): Promise const serverVersion = reduxStore.getState().server.version; if (compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '7.12.0')) { - return sdk.post('livechat/inquiries.returnAsInquiry', { roomId: rid, departmentId }); + return sdk.post('livechat/inquiries.returnAsInquiry' as any, { roomId: rid, departmentId } as any); } // RC 0.72.0 @@ -479,7 +471,7 @@ export const getRoutingConfig = async (): Promise<{ }> => { const serverVersion = reduxStore.getState().server.version; if (compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '7.11.0')) { - const result = await sdk.get('livechat/config/routing'); + const result = await sdk.get('livechat/config/routing' as any); if (result.success) { return result.config; } @@ -495,7 +487,7 @@ export const getTagsList = (): Promise => export const getAgentDepartments = (uid: string) => // RC 2.4.0 - sdk.get(`livechat/agents/${uid}/departments?enabledDepartmentsOnly=true`); + sdk.get(`livechat/agents/${uid}/departments?enabledDepartmentsOnly=true` as any); export const getCustomFields = () => // RC 2.2.0 @@ -606,7 +598,7 @@ export const removeUserFromRoom = ({ roomId, t, userId }: { roomId: string; t: R export const ignoreUser = ({ rid, userId, ignore }: { rid: string; userId: string; ignore: boolean }) => // RC 0.64.0 - sdk.get('chat.ignoreUser', { rid, userId, ignore }); + sdk.get('chat.ignoreUser', { rid, userId, ignore: ignore.toString() }); export const toggleArchiveRoom = (roomId: string, t: SubscriptionType, archive: boolean) => { const type = t as SubscriptionType.CHANNEL | SubscriptionType.GROUP; @@ -656,7 +648,7 @@ export const saveUserProfile = ( customFields?: { [key: string | number]: string } ) => // RC 0.62.2 - sdk.post('users.updateOwnBasicInfo', { data, customFields }); + sdk.post('users.updateOwnBasicInfo', { data: data as any, customFields: customFields as any }); export const saveUserPreferences = (data: Partial) => // RC 0.62.0 @@ -664,7 +656,7 @@ export const saveUserPreferences = (data: Partial // RC 0.63.0 - sdk.post('rooms.saveNotification', { roomId, notifications }); + sdk.post('rooms.saveNotification', { roomId, notifications: notifications as any }); export const getSingleMessage = (msgId: string) => // RC 0.47.0 @@ -707,7 +699,7 @@ export const getFiles = (roomId: string, type: SubscriptionType, offset: number) return sdk.get(`${roomTypeToApiType(t)}.files`, { roomId, offset, - sort: { uploadedAt: -1 } + sort: { uploadedAt: -1 } as any }); }; @@ -813,7 +805,7 @@ export const getThreadsList = ({ rid, count, offset, text }: { rid: string; coun } // RC 1.0 - return sdk.get('chat.getThreadsList', params); + return sdk.get('chat.getThreadsList', params as any); }; export const getSyncThreadsList = ({ rid, updatedSince }: { rid: string; updatedSince: string }) => @@ -823,7 +815,7 @@ export const getSyncThreadsList = ({ rid, updatedSince }: { rid: string; updated updatedSince }); -export const runSlashCommand = (command: string, roomId: string, params: string, triggerId?: string, tmid?: string) => +export const runSlashCommand = (command: string, roomId: string, params: string, triggerId: string, tmid?: string) => // RC 0.60.2 sdk.post('commands.run', { command, @@ -972,7 +964,7 @@ export function e2eResetOwnKey(): Promise<{ success?: boolean }> { export function e2eResetRoomKey(rid: string, e2eKey: string, e2eKeyId: string): Promise { // RC ? - return sdk.post('e2e.resetRoomKey', { rid, e2eKey, e2eKeyId }); + return sdk.post('e2e.resetRoomKey' as any, { rid, e2eKey, e2eKeyId } as any); } export const editMessage = async (message: Pick) => { @@ -987,7 +979,7 @@ export const editMessage = async (message: Pick new Promise(async resolve => { const token = getDeviceToken(); if (token) { - const type = isIOS ? 'apn' : 'gcm'; + const type: 'apn' | 'gcm' = isIOS ? 'apn' : 'gcm'; const data = { value: token, type, @@ -1090,7 +1082,10 @@ export const e2eFetchMyKeys = async () => { export const logoutOtherLocations = () => { const { id } = reduxStore.getState().login.user; - return sdk.post('users.removeOtherTokens', { userId: id as string }); + if (!id) { + return Promise.reject(new Error('User not logged in')); + } + return sdk.post('users.removeOtherTokens', { userId: id as string } as any); }; export function getUserInfo(userId: string) { @@ -1100,7 +1095,7 @@ export function getUserInfo(userId: string) { export const toggleFavorite = (roomId: string, favorite: boolean) => sdk.post('rooms.favorite', { roomId, favorite }); -export const sendInvitationReply = (roomId: string, action: 'accept' | 'reject') => sdk.post('rooms.invite', { roomId, action }); +export const sendInvitationReply = (roomId: string, action: 'accept' | 'reject') => sdk.post('rooms.invite' as any, { roomId, action } as any); export const videoConferenceJoin = (callId: string, cam?: boolean, mic?: boolean) => sdk.post('video-conference.join', { callId, state: { cam: !!cam, mic: mic === undefined ? true : mic } }); diff --git a/app/views/CannedResponsesListView/index.tsx b/app/views/CannedResponsesListView/index.tsx index dc8c9db2dfa..5136d367081 100644 --- a/app/views/CannedResponsesListView/index.tsx +++ b/app/views/CannedResponsesListView/index.tsx @@ -85,7 +85,7 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView try { const res = await getDepartments(); if (res.success) { - setDepartments([...fixedScopes, ...(res.departments as ILivechatDepartment[])]); + setDepartments([...fixedScopes, ...(res.departments as unknown as ILivechatDepartment[])]); } } catch (e) { setDepartments(fixedScopes); @@ -127,7 +127,7 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView if (res.success) { // search with changes on text or scope are debounced // the begin result and pagination aren't debounced - setCannedResponses(prevCanned => (debounced ? res.cannedResponses : [...prevCanned, ...res.cannedResponses])); + setCannedResponses(prevCanned => (debounced ? res.cannedResponses : [...prevCanned, ...res.cannedResponses]) as any); setLoading(false); setOffset(prevOffset => prevOffset + COUNT); } diff --git a/app/views/DirectoryView/index.tsx b/app/views/DirectoryView/index.tsx index e827e732c50..6bde2e9bff1 100644 --- a/app/views/DirectoryView/index.tsx +++ b/app/views/DirectoryView/index.tsx @@ -122,7 +122,7 @@ class DirectoryView extends React.Component ({ - data: [...prev.data, ...(directories.result as IServerRoom[])], + data: [...prev.data, ...(directories.result as unknown as IServerRoom[])], loading: false, total: directories.total })); diff --git a/app/views/DiscussionsView/index.tsx b/app/views/DiscussionsView/index.tsx index 2b6fe3d7ec1..194c168dab7 100644 --- a/app/views/DiscussionsView/index.tsx +++ b/app/views/DiscussionsView/index.tsx @@ -64,12 +64,21 @@ const DiscussionsView = () => { }); if (result.success) { - offset.current += result.count; - total.current = result.total; + const resultData = result as unknown as { + messages?: IMessageFromServer[]; + total?: number; + count?: number; + }; + const messages = resultData.messages ?? []; + const count = resultData.count ?? messages.length; + const totalValue = resultData.total ?? 0; + + offset.current += count; + total.current = totalValue; if (isSearching) { - setSearch(prevState => (offset.current ? [...prevState, ...result.messages] : result.messages)); + setSearch(prevState => (offset.current ? [...prevState, ...messages] : messages)); } else { - setDiscussions(result.messages); + setDiscussions(messages); } } setLoading(false); diff --git a/app/views/ForwardLivechatView.tsx b/app/views/ForwardLivechatView.tsx index 8f9c0e8abbc..fa0dee0f70a 100644 --- a/app/views/ForwardLivechatView.tsx +++ b/app/views/ForwardLivechatView.tsx @@ -80,7 +80,7 @@ const ForwardLivechatView = (): React.ReactElement => { try { const result = await getRoomInfo(rid); if (result.success) { - setRoom(result.room as IServerRoom); + setRoom(result.room as unknown as IServerRoom); } } catch { // do nothing diff --git a/app/views/LivechatEditView.tsx b/app/views/LivechatEditView.tsx index 64e55cdfa35..0ccfb50afee 100644 --- a/app/views/LivechatEditView.tsx +++ b/app/views/LivechatEditView.tsx @@ -121,7 +121,7 @@ const LivechatEditView = ({ user, navigation, route, theme }: ILivechatEditViewP try { const result = await getAgentDepartments(visitor?._id); if (result.success) { - const agentDepartments = result.departments.map(dept => dept.departmentId); + const agentDepartments = result.departments.map((dept: any) => dept.departmentId); handleGetTagsList(agentDepartments); } } catch { diff --git a/app/views/MessagesView/index.tsx b/app/views/MessagesView/index.tsx index aa80fb5e389..12a94824d9a 100644 --- a/app/views/MessagesView/index.tsx +++ b/app/views/MessagesView/index.tsx @@ -187,7 +187,7 @@ class MessagesView extends React.Component { const result = await getUserInfo(roomUserId); if (result.success) { const { user } = result; - const r = handleRoles(user); - setRoomUser({ ...user, roles: r }); + const r = handleRoles(user as any); + setRoomUser({ ...user, roles: r } as any); } } catch { // do nothing diff --git a/app/views/RoomView/RightButtons.tsx b/app/views/RoomView/RightButtons.tsx index 2ad9a83367e..f9a38aa93a2 100644 --- a/app/views/RoomView/RightButtons.tsx +++ b/app/views/RoomView/RightButtons.tsx @@ -277,7 +277,8 @@ class RightButtonsContainer extends Component { useEffect(() => { async function getPreferences() { try { - const result = await getUserPreferences(userId); + const result = await getUserPreferences(); if (result.success) { setLoading(false); - setPreferences(result.preferences); + setPreferences(result.preferences as unknown as INotificationPreferences); } } catch (error) { setLoading(false); @@ -54,7 +54,7 @@ const UserNotificationPreferencesView = () => { } } getPreferences(); - }, [userId]); + }, []); const onValueChangePicker = async (param: { [key: string]: string }) => { const previousPreferences = preferences; diff --git a/package.json b/package.json index 45c7b5e50e1..80c9bf8da23 100644 --- a/package.json +++ b/package.json @@ -47,8 +47,10 @@ "@react-navigation/elements": "^2.6.1", "@react-navigation/native": "^7.1.16", "@react-navigation/native-stack": "^7.3.23", + "@rocket.chat/core-typings": "6.13.1", "@rocket.chat/message-parser": "^0.31.31", "@rocket.chat/mobile-crypto": "RocketChat/rocket.chat-mobile-crypto", + "@rocket.chat/rest-typings": "6.13.1", "@rocket.chat/sdk": "RocketChat/Rocket.Chat.js.SDK#mobile", "@rocket.chat/ui-kit": "0.31.19", "bytebuffer": "5.0.1", diff --git a/yarn.lock b/yarn.lock index 5f334cbad37..1614cbc7403 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2493,86 +2493,171 @@ dependencies: tslib "^2.4.0" +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + "@esbuild/aix-ppc64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz#4e0f91776c2b340e75558f60552195f6fad09f18" integrity sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA== +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + "@esbuild/android-arm64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz#bc766407f1718923f6b8079c8c61bf86ac3a6a4f" integrity sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg== +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + "@esbuild/android-arm@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz#4290d6d3407bae3883ad2cded1081a234473ce26" integrity sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA== +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + "@esbuild/android-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz#40c11d9cbca4f2406548c8a9895d321bc3b35eff" integrity sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw== +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + "@esbuild/darwin-arm64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz#49d8bf8b1df95f759ac81eb1d0736018006d7e34" integrity sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ== +"@esbuild/darwin-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + "@esbuild/darwin-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz#e27a5d92a14886ef1d492fd50fc61a2d4d87e418" integrity sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ== +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + "@esbuild/freebsd-arm64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz#97cede59d638840ca104e605cdb9f1b118ba0b1c" integrity sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw== +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + "@esbuild/freebsd-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz#71c77812042a1a8190c3d581e140d15b876b9c6f" integrity sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw== +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + "@esbuild/linux-arm64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz#f7b7c8f97eff8ffd2e47f6c67eb5c9765f2181b8" integrity sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg== +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + "@esbuild/linux-arm@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz#2a0be71b6cd8201fa559aea45598dffabc05d911" integrity sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw== +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + "@esbuild/linux-ia32@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz#763414463cd9ea6fa1f96555d2762f9f84c61783" integrity sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA== +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + "@esbuild/linux-loong64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz#428cf2213ff786a502a52c96cf29d1fcf1eb8506" integrity sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg== +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + "@esbuild/linux-mips64el@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz#5cbcc7fd841b4cd53358afd33527cd394e325d96" integrity sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg== +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + "@esbuild/linux-ppc64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz#0d954ab39ce4f5e50f00c4f8c4fd38f976c13ad9" integrity sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ== +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + "@esbuild/linux-riscv64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz#0e7dd30730505abd8088321e8497e94b547bfb1e" integrity sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA== +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + "@esbuild/linux-s390x@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz#5669af81327a398a336d7e40e320b5bbd6e6e72d" integrity sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ== +"@esbuild/linux-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + "@esbuild/linux-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz#b2357dd153aa49038967ddc1ffd90c68a9d2a0d4" @@ -2583,6 +2668,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz#53b4dfb8fe1cee93777c9e366893bd3daa6ba63d" integrity sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw== +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + "@esbuild/netbsd-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz#a0206f6314ce7dc8713b7732703d0f58de1d1e79" @@ -2593,26 +2683,51 @@ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz#2a796c87c44e8de78001d808c77d948a21ec22fd" integrity sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw== +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + "@esbuild/openbsd-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz#28d0cd8909b7fa3953af998f2b2ed34f576728f0" integrity sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg== +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + "@esbuild/sunos-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz#a28164f5b997e8247d407e36c90d3fd5ddbe0dc5" integrity sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA== +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + "@esbuild/win32-arm64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz#6eadbead38e8bd12f633a5190e45eff80e24007e" integrity sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw== +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + "@esbuild/win32-ia32@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz#bab6288005482f9ed2adb9ded7e88eba9a62cc0d" integrity sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ== +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + "@esbuild/win32-x64@0.25.5": version "0.25.5" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz#7fc114af5f6563f19f73324b5d5ff36ece0803d1" @@ -3531,6 +3646,14 @@ resolved "https://registry.yarnpkg.com/@ide/backoff/-/backoff-1.0.0.tgz#466842c25bd4a4833e0642fab41ccff064010176" integrity sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g== +"@inquirer/external-editor@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@inquirer/external-editor/-/external-editor-1.0.3.tgz#c23988291ee676290fdab3fd306e64010a6d13b8" + integrity sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA== + dependencies: + chardet "^2.1.1" + iconv-lite "^0.7.0" + "@isaacs/balanced-match@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" @@ -3898,6 +4021,11 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@msgpack/msgpack@3.0.0-beta2": + version "3.0.0-beta2" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.0.0-beta2.tgz#5bccee30f84df220b33905e3d8249ba96deca0b7" + integrity sha512-y+l1PNV0XDyY8sM3YtuMLK5vE3/hkfId+Do8pLo/OPxfxuFAUwcGz3oiiUuV46/aBpwTzZ+mRWVMtlSKbradhw== + "@napi-rs/wasm-runtime@^0.2.11": version "0.2.12" resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2" @@ -5009,6 +5137,35 @@ resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8" integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA== +"@rocket.chat/apps-engine@1.46.0": + version "1.46.0" + resolved "https://registry.yarnpkg.com/@rocket.chat/apps-engine/-/apps-engine-1.46.0.tgz#d40b6818803e9d9bceb387c3972ad6eb1e154944" + integrity sha512-9ZQD/0xibyGRtk+OuUXTCV5onja2alL1irpw1J5ru3YeUWwe+BFwdHdRYITFsfj23LTYSydfGzCOvuNTPBQi1Q== + dependencies: + "@msgpack/msgpack" "3.0.0-beta2" + adm-zip "^0.5.9" + cryptiles "^4.1.3" + debug "^4.3.4" + deno-bin "1.37.1" + esbuild "^0.20.2" + jose "^4.11.1" + jsonrpc-lite "^2.2.0" + lodash.clonedeep "^4.5.0" + semver "^5.7.1" + stack-trace "0.0.10" + uuid "~8.3.2" + +"@rocket.chat/core-typings@6.13.1", "@rocket.chat/core-typings@^6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@rocket.chat/core-typings/-/core-typings-6.13.1.tgz#50d759233683998f76529f0af4d36a6c6bf61429" + integrity sha512-braIc3mvjju01HSc7jK3I3rbBtjVwL9yvUy1rSb4OBMOoSxE0UqQRR01q2djhgxYqCeIrTWOVgQyO9qPxW38Zw== + dependencies: + "@rocket.chat/apps-engine" "1.46.0" + "@rocket.chat/icons" "~0.38.0" + "@rocket.chat/message-parser" "^0.31.31" + "@rocket.chat/ui-kit" "~0.36.1" + "@types/express" "^4.17.21" + "@rocket.chat/eslint-config@^0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@rocket.chat/eslint-config/-/eslint-config-0.4.0.tgz#d648decd02ae739eac17a32e1630332a75318ea1" @@ -5016,6 +5173,11 @@ dependencies: eslint-plugin-import "^2.17.2" +"@rocket.chat/icons@~0.38.0": + version "0.38.0" + resolved "https://registry.yarnpkg.com/@rocket.chat/icons/-/icons-0.38.0.tgz#12dab5d3aec57680b63ee72181ab7679fb895427" + integrity sha512-T0p6dIxyQSoYTQ9CQnq11vXMkadOXFuT8vYW2SG/JEieCJeZMTRF9hVBRC31pQB/4KF5qAtfXY6gdDC0iTBzCw== + "@rocket.chat/message-parser@^0.31.31": version "0.31.31" resolved "https://registry.yarnpkg.com/@rocket.chat/message-parser/-/message-parser-0.31.31.tgz#9a3eea7602ac37387c6384577623865c8d536003" @@ -5027,6 +5189,18 @@ version "0.2.0" resolved "https://codeload.github.com/RocketChat/rocket.chat-mobile-crypto/tar.gz/06bab0cb2e329822911c80d1b937219c15154faa" +"@rocket.chat/rest-typings@6.13.1": + version "6.13.1" + resolved "https://registry.yarnpkg.com/@rocket.chat/rest-typings/-/rest-typings-6.13.1.tgz#262e1c8551dc460056f11ca43fbae2a4e7b15006" + integrity sha512-+qlrjQjUNPk8hY6fynyZExiFhiWGtH/rm5TSJQmA774uVA/AA14Ri9v0ywnUA6hXnD+Q6NfEEFJOVANqUvrnuA== + dependencies: + "@rocket.chat/apps-engine" "1.46.0" + "@rocket.chat/core-typings" "^6.13.1" + "@rocket.chat/message-parser" "^0.31.31" + "@rocket.chat/ui-kit" "~0.36.1" + ajv "^8.11.0" + ajv-formats "^2.1.1" + "@rocket.chat/sdk@RocketChat/Rocket.Chat.js.SDK#mobile": version "1.3.3-mobile" resolved "https://codeload.github.com/RocketChat/Rocket.Chat.js.SDK/tar.gz/b6d2b3f25b0ff8283dd71faf6dae720c47fecd8f" @@ -5042,6 +5216,13 @@ resolved "https://registry.yarnpkg.com/@rocket.chat/ui-kit/-/ui-kit-0.31.19.tgz#737103123bc7e635382217eef75965b7e0f44703" integrity sha512-8zRKQ5CoC4hIuYHVheO0d7etX9oizmM18fu99r5s/deciL/0MRWocdb4H/QsmbsNrkKCO6Z6wr7f9zzJCNTRHg== +"@rocket.chat/ui-kit@~0.36.1": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@rocket.chat/ui-kit/-/ui-kit-0.36.1.tgz#0364c9dd92500aee561f5d550631a7f375a7f9e1" + integrity sha512-3gqNOc5LAmRlwGmre2fjSd0ey364qwA+NvId0D8bCObwhJCnq2u547p/knPa7uOBaRgKZFeMhX0wiK9mvfNHiA== + dependencies: + typia "~5.3.3" + "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -5244,6 +5425,14 @@ dependencies: "@babel/types" "^7.20.7" +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + "@types/bytebuffer@^5.0.44": version "5.0.48" resolved "https://registry.yarnpkg.com/@types/bytebuffer/-/bytebuffer-5.0.48.tgz#0e6b0e8b8dbafde3314148ed378b8aed6eaac4f1" @@ -5252,11 +5441,38 @@ "@types/long" "^3.0.0" "@types/node" "*" +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + "@types/ejson@^2.1.3": version "2.2.2" resolved "https://registry.yarnpkg.com/@types/ejson/-/ejson-2.2.2.tgz#54e8f33ae02ac5854ce3a3cd721ba75cbcdfbd44" integrity sha512-4DEXy6yKJVr1DQx4xy+y7NV9mK6p1vgikvtbOITWgp2Prs6yhffqZ8XOjEtojX2pzC7B1KF9kcQe9Bv52E9K2A== +"@types/express-serve-static-core@^4.17.33": + version "4.19.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10" + integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@^4.17.21": + version "4.17.25" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "^1" + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -5284,6 +5500,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + "@types/i18n-js@3.8.3": version "3.8.3" resolved "https://registry.yarnpkg.com/@types/i18n-js/-/i18n-js-3.8.3.tgz#9aac0ac81c0b5f16d864b395607442eebb382528" @@ -5360,6 +5581,11 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" integrity sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA== +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + "@types/node@*": version "20.11.28" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.28.tgz#4fd5b2daff2e580c12316e457473d68f15ee6f66" @@ -5389,6 +5615,16 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== +"@types/qs@*": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + "@types/react-native-background-timer@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/react-native-background-timer/-/react-native-background-timer-2.0.2.tgz#22f9126124068a0ee6a812e16f98e270c2b9b2c7" @@ -5447,6 +5683,30 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== +"@types/send@*": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-1.2.1.tgz#6a784e45543c18c774c049bff6d3dbaf045c9c74" + integrity sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ== + dependencies: + "@types/node" "*" + +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@^1": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + "@types/stack-utils@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" @@ -5930,6 +6190,11 @@ acorn@^8.11.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== +adm-zip@^0.5.4, adm-zip@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.16.tgz#0b5e4c779f07dedea5805cdccb1147071d94a909" + integrity sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -5984,6 +6249,16 @@ ajv@^8.0.0, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@^8.11.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + anser@^1.4.9: version "1.4.10" resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" @@ -6136,6 +6411,11 @@ array-includes@^3.1.4, array-includes@^3.1.6, array-includes@^3.1.7: get-intrinsic "^1.2.4" is-string "^1.0.7" +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -6603,6 +6883,13 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== +boom@7.x.x: + version "7.3.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-7.3.0.tgz#733a6d956d33b0b1999da3fe6c12996950d017b9" + integrity sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A== + dependencies: + hoek "6.x.x" + bplist-creator@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" @@ -6830,6 +7117,11 @@ char-regex@^2.0.0: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== +chardet@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-2.1.1.tgz#5c75593704a642f71ee53717df234031e65373c8" + integrity sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ== + check-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" @@ -6926,6 +7218,11 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -7065,6 +7362,11 @@ commander@9.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9" integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w== +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^12.0.0: version "12.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" @@ -7100,6 +7402,15 @@ commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== +comment-json@^4.2.3: + version "4.5.1" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.5.1.tgz#2da1b85d5471b6494a344ed166fed3e831d268ed" + integrity sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -7202,7 +7513,7 @@ core-js-pure@^3.30.2: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.36.0.tgz#ffb34330b14e594d6a9835cf5843b4123f1d95db" integrity sha512-cN28qmhRNgbMZZMc/RFu5w8pK9VJzpb2rJVR/lHuZJKwmXnoWOpXmMkxqBB514igkp1Hu8WGROsiOAzUcKdHOQ== -core-util-is@~1.0.0: +core-util-is@^1.0.3, core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== @@ -7260,6 +7571,13 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cryptiles@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-4.1.3.tgz#2461d3390ea0b82c643a6ba79f0ed491b0934c25" + integrity sha512-gT9nyTMSUC1JnziQpPbxKGBbUg8VL7Zn2NB4E1cJYvuXdElHrwxrV9bmltZGDzet45zSDGyYceueke1TjynGzw== + dependencies: + boom "7.x.x" + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -7513,6 +7831,14 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +deno-bin@1.37.1: + version "1.37.1" + resolved "https://registry.yarnpkg.com/deno-bin/-/deno-bin-1.37.1.tgz#b5a75292c53497e68dbf9e30d2394ff449e9a996" + integrity sha512-RORiEtlUPKJqXVYO8P/B1sdOkYLGfSYi2kiRzXb1WUHzkq14yAQr73gXrRU3jcM7do77Rwq+ZR+XZ2Adq8Uymg== + dependencies: + adm-zip "^0.5.4" + follow-redirects "^1.10.0" + denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -7656,6 +7982,11 @@ dotenv@^16.4.5, dotenv@~16.4.5: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== +drange@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/drange/-/drange-1.1.1.tgz#b2aecec2aab82fcef11dbbd7b9e32b83f8f6c0b8" + integrity sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA== + dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -8020,6 +8351,35 @@ esbuild-register@^3.5.0: "@esbuild/win32-ia32" "0.25.5" "@esbuild/win32-x64" "0.25.5" +esbuild@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" + escalade@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -8674,6 +9034,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4: version "4.4.1" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" @@ -8714,6 +9079,13 @@ fdir@^6.5.0: resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -8871,6 +9243,11 @@ flow-parser@^0.206.0: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== +follow-redirects@^1.10.0: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + follow-redirects@^1.15.0: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -9364,6 +9741,11 @@ hermes-profile-transformer@^0.0.6: dependencies: source-map "^0.7.3" +hoek@6.x.x: + version "6.1.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.3.tgz#73b7d33952e01fe27a38b0457294b79dd8da242c" + integrity sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ== + hoist-non-react-statics@3.3.2, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -9460,6 +9842,13 @@ iconv-lite@0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.1.tgz#d4af1d2092f2bb05aab6296e5e7cd286d2f15432" + integrity sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + idb@7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" @@ -9559,6 +9948,27 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +inquirer@^8.2.5: + version "8.2.7" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.7.tgz#62f6b931a9b7f8735dc42db927316d8fb6f71de8" + integrity sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA== + dependencies: + "@inquirer/external-editor" "^1.0.0" + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -10426,6 +10836,11 @@ joi@^17.2.1: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" +jose@^4.11.1: + version "4.15.9" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.9.tgz#9b68eda29e9a0614c042fa29387196c7dd800100" + integrity sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA== + jpeg-js@0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" @@ -10626,6 +11041,11 @@ jsonify@^0.0.1: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== +jsonrpc-lite@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jsonrpc-lite/-/jsonrpc-lite-2.2.0.tgz#fb3aa9d292c8970eb7f83c6040c6554767bbc6a6" + integrity sha512-/cbbSxtZWs1O7R4tWqabrCM/t3N8qKUZMAg9IUqpPvUs6UyRvm6pCNYkskyKN/XU0UgffW+NY2ZRr8t0AknX7g== + jsrsasign@11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/jsrsasign/-/jsrsasign-11.0.0.tgz#766570c21f87d68075a142f5188f7e583cee9d70" @@ -10866,6 +11286,11 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -11630,6 +12055,11 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -12519,6 +12949,14 @@ queue@6.0.2: dependencies: inherits "~2.0.3" +randexp@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.5.3.tgz#f31c2de3148b30bdeb84b7c3f59b0ebb9fec3738" + integrity sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w== + dependencies: + drange "^1.0.2" + ret "^0.2.0" + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -13369,6 +13807,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +ret@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c" + integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ== + reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -13400,6 +13843,11 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -13414,7 +13862,7 @@ rxjs@^7.5.1: dependencies: tslib "^2.1.0" -rxjs@^7.8.1: +rxjs@^7.5.5, rxjs@^7.8.1: version "7.8.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== @@ -13510,7 +13958,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -"semver@2 || 3 || 4 || 5", semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -13926,6 +14374,11 @@ stack-generator@^2.0.3, stack-generator@^2.0.5: dependencies: stackframe "^1.3.4" +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -14443,7 +14896,7 @@ through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.8: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -14741,6 +15194,16 @@ typescript@5.4.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== +typia@~5.3.3: + version "5.3.12" + resolved "https://registry.yarnpkg.com/typia/-/typia-5.3.12.tgz#848b07d28b783772322518053c9c250e90357ef6" + integrity sha512-PzgbFt08j7Cb3NKjB6KX7FTWD8dX0MicQ3zXqhDx0cMAeEd+i/omO9B+X/tvtuZ1e2w+2jz1QE3qXMF0/o/LDA== + dependencies: + commander "^10.0.0" + comment-json "^4.2.3" + inquirer "^8.2.5" + randexp "^0.5.3" + typical@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" @@ -14966,6 +15429,11 @@ uuid@^7.0.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== +uuid@~8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-to-istanbul@^9.0.1: version "9.2.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" @@ -15207,7 +15675,7 @@ wordwrapjs@^4.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.2.0: +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==