@sunafterrainwm/telegram-entities-builder 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,6 @@
1
- import * as TT from '@grammyjs/types';
1
+ import * as TT from "@grammyjs/types";
2
2
 
3
+ //#region src/index.d.ts
3
4
  type Telegram = TT.ApiMethods<never>;
4
5
  type ApiParameters<T extends keyof Telegram> = Parameters<Telegram[T]>[0];
5
6
  /**
@@ -18,191 +19,191 @@ type TextSegment = TextSegment.SingleTextSegment | TextSegment.MultiTextSegment;
18
19
  * Namespace for TextSegment types.
19
20
  */
20
21
  declare namespace TextSegment {
21
- interface SingleTextSegment {
22
- text: string;
23
- entity?: AnyDraftEntity;
24
- entities?: never;
25
- }
26
- interface MultiTextSegment {
27
- text: string;
28
- entity?: never;
29
- entities: AnyDraftEntity[];
30
- }
22
+ interface SingleTextSegment {
23
+ text: string;
24
+ entity?: AnyDraftEntity;
25
+ entities?: never;
26
+ }
27
+ interface MultiTextSegment {
28
+ text: string;
29
+ entity?: never;
30
+ entities: AnyDraftEntity[];
31
+ }
31
32
  }
32
33
  type PartialRequired<T, REQUIRED extends keyof T, OPTIONAL extends keyof T> = Required<Pick<T, REQUIRED>> & Pick<T, OPTIONAL>;
33
34
  /**
34
35
  * Base interface for entity builders, providing fundamental operations for appending text and managing builder state.
35
36
  */
36
37
  interface IEntityBuilderBase {
37
- /**
38
- * Appends plain text.
39
- */
40
- addText(text: string): this;
41
- /**
42
- * Appends text with a single entity.
43
- */
44
- addTextEntity(text: string, entity: AnyDraftEntity): this;
45
- /**
46
- * Appends text with multiple entities.
47
- */
48
- addTextEntities(text: string, entities: AnyDraftEntity[]): this;
49
- /**
50
- * Appends a list of text segments.
51
- */
52
- addTextSegmentList(segments: TextSegment[]): this;
53
- /**
54
- * Creates a deep clone of this builder.
55
- */
56
- clone(): IEntityBuilderBase;
57
- /**
58
- * Creates a child builder that forks from this instance.
59
- */
60
- fork(): IEntityBuilderBase;
61
- /**
62
- * Merges a forked builder back into its parent.
63
- */
64
- merge(wrapperEntities?: AnyDraftEntity[]): void;
38
+ /**
39
+ * Appends plain text.
40
+ */
41
+ addText(text: string): this;
42
+ /**
43
+ * Appends text with a single entity.
44
+ */
45
+ addTextEntity(text: string, entity: AnyDraftEntity): this;
46
+ /**
47
+ * Appends text with multiple entities.
48
+ */
49
+ addTextEntities(text: string, entities: AnyDraftEntity[]): this;
50
+ /**
51
+ * Appends a list of text segments.
52
+ */
53
+ addTextSegmentList(segments: TextSegment[]): this;
54
+ /**
55
+ * Creates a deep clone of this builder.
56
+ */
57
+ clone(): IEntityBuilderBase;
58
+ /**
59
+ * Creates a child builder that forks from this instance.
60
+ */
61
+ fork(): IEntityBuilderBase;
62
+ /**
63
+ * Merges a forked builder back into its parent.
64
+ */
65
+ merge(wrapperEntities?: AnyDraftEntity[]): void;
65
66
  }
66
67
  /**
67
68
  * Advanced entity builder interface supporting string manipulation, entity sorting, and payload generation.
68
69
  */
69
70
  interface IEntityBuilder extends IEntityBuilderBase {
70
- /**
71
- * Trims or slices the string in-place, and automatically recalculates, filters, or truncates the affected entities.
72
- */
73
- sliceInplace(start?: number, end?: number): this;
74
- /**
75
- * Returns a new sliced instance.
76
- */
77
- slice(start?: number, end?: number): IEntityBuilder;
78
- /**
79
- * Removes leading whitespace in-place.
80
- */
81
- trimStart(): this;
82
- /**
83
- * Removes trailing whitespace in-place.
84
- */
85
- trimEnd(): this;
86
- /**
87
- * Removes leading and trailing whitespace in-place.
88
- */
89
- trim(): this;
90
- /**
91
- * Sorts the entities based on their offset and length.
92
- */
93
- sortEntities(): this;
94
- /**
95
- * Builds the payload for sending a text message.
96
- */
97
- buildTextPayload(): PartialRequired<ApiParameters<'sendMessage'>, 'text', 'entities' | 'link_preview_options'>;
98
- /**
99
- * Builds the payload for sending a document with a caption.
100
- */
101
- buildCaptionPayload(): PartialRequired<ApiParameters<'sendDocument'>, 'caption', 'caption_entities'>;
102
- /**
103
- * Builds the payload for inline query results.
104
- */
105
- buildInlinePayload(): PartialRequired<TT.InputTextMessageContent, 'message_text', 'entities' | 'link_preview_options'>;
106
- clone(): IEntityBuilder;
107
- fork(): IEntityBuilder;
71
+ /**
72
+ * Trims or slices the string in-place, and automatically recalculates, filters, or truncates the affected entities.
73
+ */
74
+ sliceInplace(start?: number, end?: number): this;
75
+ /**
76
+ * Returns a new sliced instance.
77
+ */
78
+ slice(start?: number, end?: number): IEntityBuilder;
79
+ /**
80
+ * Removes leading whitespace in-place.
81
+ */
82
+ trimStart(): this;
83
+ /**
84
+ * Removes trailing whitespace in-place.
85
+ */
86
+ trimEnd(): this;
87
+ /**
88
+ * Removes leading and trailing whitespace in-place.
89
+ */
90
+ trim(): this;
91
+ /**
92
+ * Sorts the entities based on their offset and length.
93
+ */
94
+ sortEntities(): this;
95
+ /**
96
+ * Builds the payload for sending a text message.
97
+ */
98
+ buildTextPayload(): PartialRequired<ApiParameters<'sendMessage'>, 'text', 'entities' | 'link_preview_options'>;
99
+ /**
100
+ * Builds the payload for sending a document with a caption.
101
+ */
102
+ buildCaptionPayload(): PartialRequired<ApiParameters<'sendDocument'>, 'caption', 'caption_entities'>;
103
+ /**
104
+ * Builds the payload for inline query results.
105
+ */
106
+ buildInlinePayload(): PartialRequired<TT.InputTextMessageContent, 'message_text', 'entities' | 'link_preview_options'>;
107
+ clone(): IEntityBuilder;
108
+ fork(): IEntityBuilder;
108
109
  }
109
110
  /**
110
111
  * Main implementation of IEntityBuilder that eagerly evaluates and stores entities.
111
112
  */
112
113
  declare class EntityBuilder implements IEntityBuilder {
113
- #private;
114
- addText(text: string): this;
115
- addTextEntity(text: string, entity: AnyDraftEntity): this;
116
- addTextEntities(text: string, entities: AnyDraftEntity[]): this;
117
- addTextSegmentList(segments: TextSegment[]): this;
118
- buildTextPayload(): {
119
- text: string;
120
- entities: TT.MessageEntity[];
121
- };
122
- buildCaptionPayload(): {
123
- caption: string;
124
- caption_entities: TT.MessageEntity[];
125
- };
126
- buildInlinePayload(): {
127
- message_text: string;
128
- entities: TT.MessageEntity[];
129
- };
130
- sortEntities(): this;
131
- sliceInplace(start?: number, end?: number): this;
132
- slice(start?: number, end?: number): EntityBuilder;
133
- trimStart(): this;
134
- trimEnd(): this;
135
- trim(): this;
136
- clone(): EntityBuilder;
137
- fork(): EntityBuilder;
138
- /**
139
- * Merges a payload text and its entities into this builder, optionally wrapping them with additional entities.
140
- */
141
- mergePayload(text: string, entities: TT.MessageEntity[], wrappers?: AnyDraftEntity[]): void;
142
- merge(wrapperEntities?: AnyDraftEntity[]): void;
114
+ #private;
115
+ addText(text: string): this;
116
+ addTextEntity(text: string, entity: AnyDraftEntity): this;
117
+ addTextEntities(text: string, entities: AnyDraftEntity[]): this;
118
+ addTextSegmentList(segments: TextSegment[]): this;
119
+ buildTextPayload(): {
120
+ text: string;
121
+ entities: TT.MessageEntity[];
122
+ };
123
+ buildCaptionPayload(): {
124
+ caption: string;
125
+ caption_entities: TT.MessageEntity[];
126
+ };
127
+ buildInlinePayload(): {
128
+ message_text: string;
129
+ entities: TT.MessageEntity[];
130
+ };
131
+ sortEntities(): this;
132
+ sliceInplace(start?: number, end?: number): this;
133
+ slice(start?: number, end?: number): EntityBuilder;
134
+ trimStart(): this;
135
+ trimEnd(): this;
136
+ trim(): this;
137
+ clone(): EntityBuilder;
138
+ fork(): EntityBuilder;
139
+ /**
140
+ * Merges a payload text and its entities into this builder, optionally wrapping them with additional entities.
141
+ */
142
+ mergePayload(text: string, entities: TT.MessageEntity[], wrappers?: AnyDraftEntity[]): void;
143
+ merge(wrapperEntities?: AnyDraftEntity[]): void;
143
144
  }
144
145
  /**
145
146
  * A lazy implementation of IEntityBuilderBase that stores segments and flattens them into an EntityBuilder only when needed.
146
147
  */
147
148
  declare class LazyEntityBuilder implements IEntityBuilderBase {
148
- #private;
149
- /**
150
- * Flattens the lazy segments into a new EntityBuilder instance.
151
- */
152
- flatten(): EntityBuilder;
153
- addText(text: string): this;
154
- addTextEntity(text: string, entity: AnyDraftEntity): this;
155
- addTextEntities(text: string, entities: AnyDraftEntity[]): this;
156
- addTextSegmentList(segments: TextSegment[]): this;
157
- clone(): LazyEntityBuilder;
158
- fork(): LazyEntityBuilder;
159
- merge(wrapperEntities?: AnyDraftEntity[]): void;
149
+ #private;
150
+ /**
151
+ * Flattens the lazy segments into a new EntityBuilder instance.
152
+ */
153
+ flatten(): EntityBuilder;
154
+ addText(text: string): this;
155
+ addTextEntity(text: string, entity: AnyDraftEntity): this;
156
+ addTextEntities(text: string, entities: AnyDraftEntity[]): this;
157
+ addTextSegmentList(segments: TextSegment[]): this;
158
+ clone(): LazyEntityBuilder;
159
+ fork(): LazyEntityBuilder;
160
+ merge(wrapperEntities?: AnyDraftEntity[]): void;
160
161
  }
161
162
  /**
162
163
  * Abstract proxy class that delegates all IEntityBuilder operations to an underlying builder instance.
163
164
  */
164
165
  declare abstract class EntityBuilderProxy<THIS extends IEntityBuilder = IEntityBuilder> implements IEntityBuilder {
165
- protected _entities: IEntityBuilder;
166
- protected constructor(_entities: IEntityBuilder);
167
- get entities(): IEntityBuilder;
168
- addText(...args: Parameters<IEntityBuilder['addText']>): this;
169
- addTextEntity(...args: Parameters<IEntityBuilder['addTextEntity']>): this;
170
- addTextEntities(...args: Parameters<IEntityBuilder['addTextEntities']>): this;
171
- addTextSegmentList(...args: Parameters<IEntityBuilder['addTextSegmentList']>): this;
172
- sliceInplace(...args: Parameters<IEntityBuilder['sliceInplace']>): this;
173
- slice(...args: Parameters<IEntityBuilder['slice']>): THIS;
174
- trim(): this;
175
- trimStart(): this;
176
- trimEnd(): this;
177
- sortEntities(): this;
178
- clone(): THIS;
179
- fork(): IEntityBuilder;
180
- merge(...args: Parameters<IEntityBuilder['merge']>): void;
181
- buildTextPayload(): PartialRequired<{
182
- business_connection_id?: string;
183
- chat_id: number | string;
184
- message_thread_id?: number;
185
- text: string;
186
- parse_mode?: TT.ParseMode;
187
- entities?: TT.MessageEntity[];
188
- link_preview_options?: TT.LinkPreviewOptions;
189
- disable_notification?: boolean;
190
- protect_content?: boolean;
191
- allow_paid_broadcast?: boolean;
192
- message_effect_id?: string;
193
- reply_parameters?: TT.ReplyParameters;
194
- reply_markup?: TT.InlineKeyboardMarkup | TT.ReplyKeyboardMarkup | TT.ReplyKeyboardRemove | TT.ForceReply;
195
- reply_to_message_id?: number;
196
- }, "text", "entities" | "link_preview_options">;
197
- buildCaptionPayload(): {
198
- caption: string;
199
- caption_entities: TT.MessageEntity[] | undefined;
200
- };
201
- buildInlinePayload(): {
202
- message_text: string;
203
- entities: TT.MessageEntity[] | undefined;
204
- link_preview_options: TT.LinkPreviewOptions | undefined;
205
- };
166
+ protected _entities: IEntityBuilder;
167
+ protected constructor(_entities: IEntityBuilder);
168
+ get entities(): IEntityBuilder;
169
+ addText(...args: Parameters<IEntityBuilder['addText']>): this;
170
+ addTextEntity(...args: Parameters<IEntityBuilder['addTextEntity']>): this;
171
+ addTextEntities(...args: Parameters<IEntityBuilder['addTextEntities']>): this;
172
+ addTextSegmentList(...args: Parameters<IEntityBuilder['addTextSegmentList']>): this;
173
+ sliceInplace(...args: Parameters<IEntityBuilder['sliceInplace']>): this;
174
+ slice(...args: Parameters<IEntityBuilder['slice']>): THIS;
175
+ trim(): this;
176
+ trimStart(): this;
177
+ trimEnd(): this;
178
+ sortEntities(): this;
179
+ clone(): THIS;
180
+ fork(): IEntityBuilder;
181
+ merge(...args: Parameters<IEntityBuilder['merge']>): void;
182
+ buildTextPayload(): PartialRequired<{
183
+ business_connection_id?: string;
184
+ chat_id: number | string;
185
+ message_thread_id?: number;
186
+ text: string;
187
+ parse_mode?: TT.ParseMode;
188
+ entities?: TT.MessageEntity[];
189
+ link_preview_options?: TT.LinkPreviewOptions;
190
+ disable_notification?: boolean;
191
+ protect_content?: boolean;
192
+ allow_paid_broadcast?: boolean;
193
+ message_effect_id?: string;
194
+ reply_parameters?: TT.ReplyParameters;
195
+ reply_markup?: TT.InlineKeyboardMarkup | TT.ReplyKeyboardMarkup | TT.ReplyKeyboardRemove | TT.ForceReply;
196
+ reply_to_message_id?: number;
197
+ }, "text", "entities" | "link_preview_options">;
198
+ buildCaptionPayload(): {
199
+ caption: string;
200
+ caption_entities: TT.MessageEntity[] | undefined;
201
+ };
202
+ buildInlinePayload(): {
203
+ message_text: string;
204
+ entities: TT.MessageEntity[] | undefined;
205
+ link_preview_options: TT.LinkPreviewOptions | undefined;
206
+ };
206
207
  }
207
208
  /**
208
209
  * Escapes a string to be used as a valid tag by removing or replacing invalid characters.
@@ -213,28 +214,29 @@ declare const SymbolMessageComposer: unique symbol;
213
214
  * A high-level composer that wraps an IEntityBuilder and provides additional features like tags and link preview options.
214
215
  */
215
216
  declare class MessageComposer extends EntityBuilderProxy<MessageComposer> {
216
- #private;
217
- protected [SymbolMessageComposer]: true;
218
- /**
219
- * Options for link preview generation.
220
- */
221
- linkPreviewOptions?: TT.LinkPreviewOptions;
222
- constructor(entities?: IEntityBuilder & {
223
- [SymbolMessageComposer]?: never;
224
- });
225
- /**
226
- * Gets the current list of tags.
227
- */
228
- get tags(): string[];
229
- /**
230
- * Adds one or more tags, escaping them and avoiding duplicates.
231
- */
232
- addTags(...tags: string[]): this;
233
- buildTextPayload(): {
234
- link_preview_options: TT.LinkPreviewOptions | undefined;
235
- text: string;
236
- entities?: TT.MessageEntity[] | undefined;
237
- };
217
+ #private;
218
+ protected [SymbolMessageComposer]: true;
219
+ /**
220
+ * Options for link preview generation.
221
+ */
222
+ linkPreviewOptions?: TT.LinkPreviewOptions;
223
+ constructor(entities?: IEntityBuilder & {
224
+ [SymbolMessageComposer]?: never;
225
+ });
226
+ /**
227
+ * Gets the current list of tags.
228
+ */
229
+ get tags(): string[];
230
+ /**
231
+ * Adds one or more tags, escaping them and avoiding duplicates.
232
+ */
233
+ addTags(...tags: string[]): this;
234
+ buildTextPayload(): {
235
+ link_preview_options: TT.LinkPreviewOptions | undefined;
236
+ text: string;
237
+ entities?: TT.MessageEntity[] | undefined;
238
+ };
238
239
  }
239
-
240
- export { type AnyDraftEntity, EntityBuilder, EntityBuilderProxy, type IEntityBuilder, type IEntityBuilderBase, LazyEntityBuilder, MessageComposer, type PartialEntity, TextSegment, escapeTag };
240
+ //#endregion
241
+ export { AnyDraftEntity, EntityBuilder, EntityBuilderProxy, IEntityBuilder, IEntityBuilderBase, LazyEntityBuilder, MessageComposer, MessageComposer as default, PartialEntity, TextSegment, escapeTag };
242
+ //# sourceMappingURL=index.d.mts.map