From d8cd13fd604fb6de449c831d0ebb5e3b66b2d62e Mon Sep 17 00:00:00 2001 From: teidesu Date: Tue, 11 May 2021 22:02:00 +0300 Subject: [PATCH] refactor(client): use ReadonlyArray for getter return types --- packages/client/src/parser/index.ts | 2 +- packages/client/src/types/auth/terms-of-service.ts | 2 +- packages/client/src/types/media/document.ts | 2 +- packages/client/src/types/media/photo.ts | 2 +- packages/client/src/types/media/poll.ts | 4 ++-- packages/client/src/types/messages/draft-message.ts | 2 +- packages/client/src/types/messages/message.ts | 2 +- packages/client/src/types/misc/sticker-set.ts | 2 +- packages/client/src/types/peers/chat-preview.ts | 2 +- packages/client/src/types/peers/chat.ts | 2 +- packages/client/src/types/peers/user.ts | 2 +- packages/dispatcher/src/updates/poll-vote.ts | 4 ++-- packages/html-parser/src/index.ts | 4 ++-- packages/markdown-parser/src/index.ts | 2 +- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/client/src/parser/index.ts b/packages/client/src/parser/index.ts index c10e3275..f07c9f67 100644 --- a/packages/client/src/parser/index.ts +++ b/packages/client/src/parser/index.ts @@ -36,5 +36,5 @@ export interface IMessageEntityParser { * @param text Plain text * @param entities Message entities that should be added to the text */ - unparse(text: string, entities: MessageEntity[]): string + unparse(text: string, entities: ReadonlyArray): string } diff --git a/packages/client/src/types/auth/terms-of-service.ts b/packages/client/src/types/auth/terms-of-service.ts index 522c4af8..ba01e78c 100644 --- a/packages/client/src/types/auth/terms-of-service.ts +++ b/packages/client/src/types/auth/terms-of-service.ts @@ -34,7 +34,7 @@ export class TermsOfService { /** * Terms of Service entities text */ - get entities(): MessageEntity[] { + get entities(): ReadonlyArray { if (!this._entities) { this._entities = this.tos.entities .map((it) => MessageEntity._parse(it)) diff --git a/packages/client/src/types/media/document.ts b/packages/client/src/types/media/document.ts index 4b085269..7305286e 100644 --- a/packages/client/src/types/media/document.ts +++ b/packages/client/src/types/media/document.ts @@ -71,7 +71,7 @@ export class RawDocument extends FileLocation { * * If there are no thumbnails, the array will be empty. */ - get thumbnails(): Thumbnail[] { + get thumbnails(): ReadonlyArray { if (!this._thumbnails) { this._thumbnails = this.doc.thumbs ? this.doc.thumbs.map( diff --git a/packages/client/src/types/media/photo.ts b/packages/client/src/types/media/photo.ts index 8239466b..f77e004d 100644 --- a/packages/client/src/types/media/photo.ts +++ b/packages/client/src/types/media/photo.ts @@ -84,7 +84,7 @@ export class Photo extends FileLocation { * **Note**: This list will also contain the largest thumbnail that is * represented by the current object. */ - get thumbnails(): Thumbnail[] { + get thumbnails(): ReadonlyArray { if (!this._thumbnails) { this._thumbnails = this.raw.sizes.map( (sz) => new Thumbnail(this.client, this.raw, sz) diff --git a/packages/client/src/types/media/poll.ts b/packages/client/src/types/media/poll.ts index 07f5fa35..c191c383 100644 --- a/packages/client/src/types/media/poll.ts +++ b/packages/client/src/types/media/poll.ts @@ -74,7 +74,7 @@ export class Poll { /** * List of answers in this poll */ - get answers(): Poll.PollAnswer[] { + get answers(): ReadonlyArray { if (!this._answers) { const results = this.results?.results @@ -153,7 +153,7 @@ export class Poll { * Format entities for {@link solution}, only available * in case you have already answered */ - get solutionEntities(): MessageEntity[] | null { + get solutionEntities(): ReadonlyArray | null { if (!this.results) return null if (!this._entities) { diff --git a/packages/client/src/types/messages/draft-message.ts b/packages/client/src/types/messages/draft-message.ts index 8bad8b8c..e0fc29fb 100644 --- a/packages/client/src/types/messages/draft-message.ts +++ b/packages/client/src/types/messages/draft-message.ts @@ -57,7 +57,7 @@ export class DraftMessage { /** * Message text entities (may be empty) */ - get entities(): MessageEntity[] { + get entities(): ReadonlyArray { if (!this._entities) { this._entities = [] if (this.raw.entities?.length) { diff --git a/packages/client/src/types/messages/message.ts b/packages/client/src/types/messages/message.ts index f8f6a47e..933f1744 100644 --- a/packages/client/src/types/messages/message.ts +++ b/packages/client/src/types/messages/message.ts @@ -362,7 +362,7 @@ export class Message { /** * Message text/caption entities (may be empty) */ - get entities(): MessageEntity[] { + get entities(): ReadonlyArray { if (this._emptyError) throw this._emptyError if (!this._entities) { diff --git a/packages/client/src/types/misc/sticker-set.ts b/packages/client/src/types/misc/sticker-set.ts index bf89dd1c..7f890b40 100644 --- a/packages/client/src/types/misc/sticker-set.ts +++ b/packages/client/src/types/misc/sticker-set.ts @@ -133,7 +133,7 @@ export class StickerSet { * @throws MtCuteEmptyError * In case this object does not contain info about stickers (i.e. {@link isFull} = false) */ - get stickers(): StickerSet.StickerInfo[] { + get stickers(): ReadonlyArray { if (!this.isFull) throw new MtCuteEmptyError() if (!this._stickers) { diff --git a/packages/client/src/types/peers/chat-preview.ts b/packages/client/src/types/peers/chat-preview.ts index b53e0bca..3e14e4f8 100644 --- a/packages/client/src/types/peers/chat-preview.ts +++ b/packages/client/src/types/peers/chat-preview.ts @@ -76,7 +76,7 @@ export class ChatPreview { * and members that are inside your contacts list are * ordered before others. */ - get someMembers(): User[] { + get someMembers(): ReadonlyArray { if (!this._someMembers) { this._someMembers = this.invite.participants ? this.invite.participants.map( diff --git a/packages/client/src/types/peers/chat.ts b/packages/client/src/types/peers/chat.ts index 7d486244..1ca796e3 100644 --- a/packages/client/src/types/peers/chat.ts +++ b/packages/client/src/types/peers/chat.ts @@ -355,7 +355,7 @@ export class Chat { * The list of reasons why this chat might be unavailable to some users. * This field is available only in case {@link isRestricted} is `true` */ - get restrictions(): tl.RawRestrictionReason[] | null { + get restrictions(): ReadonlyArray | null { return 'restrictionReason' in this.peer ? this.peer.restrictionReason ?? null : null diff --git a/packages/client/src/types/peers/user.ts b/packages/client/src/types/peers/user.ts index e2a08f42..9342995c 100644 --- a/packages/client/src/types/peers/user.ts +++ b/packages/client/src/types/peers/user.ts @@ -246,7 +246,7 @@ export class User { * The list of reasons why this bot might be unavailable to some users. * This field is available only in case *isRestricted* is `true` */ - get restrictions(): tl.RawRestrictionReason[] | null { + get restrictions(): ReadonlyArray | null { return this._user.restrictionReason ?? null } diff --git a/packages/dispatcher/src/updates/poll-vote.ts b/packages/dispatcher/src/updates/poll-vote.ts index 065ababb..4dce911b 100644 --- a/packages/dispatcher/src/updates/poll-vote.ts +++ b/packages/dispatcher/src/updates/poll-vote.ts @@ -70,7 +70,7 @@ export class PollVoteUpdate { * This might break at any time, but seems to be consistent for now. * To get chosen answer indexes derived as before, use {@link chosenIndexesAuto}. */ - get chosen(): Buffer[] { + get chosen(): ReadonlyArray { return this.raw.options } @@ -81,7 +81,7 @@ export class PollVoteUpdate { * * If something does not add up, {@link MtCuteUnsupportedError} is thrown */ - get chosenIndexesAuto(): number[] { + get chosenIndexesAuto(): ReadonlyArray { return this.raw.options.map((buf) => { if (buf.length > 1) throw new MtCuteUnsupportedError('option had >1 byte') diff --git a/packages/html-parser/src/index.ts b/packages/html-parser/src/index.ts index 657d38bd..f0e77038 100644 --- a/packages/html-parser/src/index.ts +++ b/packages/html-parser/src/index.ts @@ -169,14 +169,14 @@ export class HtmlMessageEntityParser implements IMessageEntityParser { return [plainText, entities] } - unparse(text: string, entities: MessageEntity[]): string { + unparse(text: string, entities: ReadonlyArray): string { return this._unparse(text, entities) } // internal function that uses recursion to correctly process nested & overlapping entities private _unparse( text: string, - entities: MessageEntity[], + entities: ReadonlyArray, entitiesOffset = 0, offset = 0, length = text.length diff --git a/packages/markdown-parser/src/index.ts b/packages/markdown-parser/src/index.ts index 815887a8..2f60387d 100644 --- a/packages/markdown-parser/src/index.ts +++ b/packages/markdown-parser/src/index.ts @@ -244,7 +244,7 @@ export class MarkdownMessageEntityParser implements IMessageEntityParser { return [result, entities] } - unparse(text: string, entities: MessageEntity[]): string { + unparse(text: string, entities: ReadonlyArray): string { // keep track of positions of inserted escape symbols const escaped: number[] = [] text = text.replace(TO_BE_ESCAPED, (s, pos: number) => {