@mtcute/core 0.30.1 → 0.30.2

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.
Files changed (83) hide show
  1. package/highlevel/methods/files/download-iterable.cjs +80 -45
  2. package/highlevel/methods/files/download-iterable.js +80 -45
  3. package/highlevel/methods/files/normalize-input-media.cjs +1 -1
  4. package/highlevel/methods/files/normalize-input-media.js +1 -1
  5. package/highlevel/methods/files/upload-file.cjs +6 -1
  6. package/highlevel/methods/files/upload-file.js +6 -1
  7. package/highlevel/methods/messages/normalize-rich-message.cjs +12 -1
  8. package/highlevel/methods/messages/normalize-rich-message.js +12 -1
  9. package/highlevel/methods/messages/send-common.cjs +3 -2
  10. package/highlevel/methods/messages/send-common.d.cts +4 -1
  11. package/highlevel/methods/messages/send-common.d.ts +4 -1
  12. package/highlevel/methods/messages/send-common.js +3 -2
  13. package/highlevel/types/files/utils.d.cts +9 -0
  14. package/highlevel/types/files/utils.d.ts +9 -0
  15. package/highlevel/updates/manager.cjs +6 -169
  16. package/highlevel/updates/manager.js +6 -169
  17. package/highlevel/utils/index.d.cts +1 -0
  18. package/highlevel/utils/index.d.ts +1 -0
  19. package/highlevel/utils/walk-page-blocks.cjs +164 -0
  20. package/highlevel/utils/walk-page-blocks.d.cts +9 -0
  21. package/highlevel/utils/walk-page-blocks.d.ts +9 -0
  22. package/highlevel/utils/walk-page-blocks.js +159 -0
  23. package/network/authorization.cjs +1 -1
  24. package/network/authorization.js +1 -1
  25. package/network/delay-gate.cjs +29 -0
  26. package/network/delay-gate.d.cts +5 -0
  27. package/network/delay-gate.d.ts +5 -0
  28. package/network/delay-gate.js +24 -0
  29. package/network/delay-gate.test.d.cts +1 -0
  30. package/network/delay-gate.test.d.ts +1 -0
  31. package/network/message-id-store.cjs +30 -0
  32. package/network/message-id-store.d.cts +7 -0
  33. package/network/message-id-store.d.ts +7 -0
  34. package/network/message-id-store.js +25 -0
  35. package/network/message-id-store.test.d.cts +1 -0
  36. package/network/message-id-store.test.d.ts +1 -0
  37. package/network/middlewares/bundle.cjs +2 -0
  38. package/network/middlewares/bundle.d.cts +1 -0
  39. package/network/middlewares/bundle.d.ts +1 -0
  40. package/network/middlewares/bundle.js +2 -0
  41. package/network/middlewares/default.cjs +6 -1
  42. package/network/middlewares/default.js +6 -1
  43. package/network/middlewares/flood-waiter.test.d.cts +1 -0
  44. package/network/middlewares/flood-waiter.test.d.ts +1 -0
  45. package/network/middlewares/internal-errors.test.d.cts +1 -0
  46. package/network/middlewares/internal-errors.test.d.ts +1 -0
  47. package/network/middlewares/media-throttle.cjs +65 -0
  48. package/network/middlewares/media-throttle.d.cts +5 -0
  49. package/network/middlewares/media-throttle.d.ts +5 -0
  50. package/network/middlewares/media-throttle.js +60 -0
  51. package/network/middlewares/media-throttle.test.d.cts +1 -0
  52. package/network/middlewares/media-throttle.test.d.ts +1 -0
  53. package/network/middlewares/on-error.test.d.cts +1 -0
  54. package/network/middlewares/on-error.test.d.ts +1 -0
  55. package/network/middlewares/on-method.test.d.cts +1 -0
  56. package/network/middlewares/on-method.test.d.ts +1 -0
  57. package/network/mtproto-session.cjs +9 -2
  58. package/network/mtproto-session.d.cts +5 -2
  59. package/network/mtproto-session.d.ts +5 -2
  60. package/network/mtproto-session.js +9 -2
  61. package/network/multi-session-connection.cjs +7 -0
  62. package/network/multi-session-connection.d.cts +2 -0
  63. package/network/multi-session-connection.d.ts +2 -0
  64. package/network/multi-session-connection.js +7 -0
  65. package/network/network-manager.cjs +7 -1
  66. package/network/network-manager.js +7 -1
  67. package/network/resource-limiter.cjs +60 -0
  68. package/network/resource-limiter.d.cts +11 -0
  69. package/network/resource-limiter.d.ts +11 -0
  70. package/network/resource-limiter.js +55 -0
  71. package/network/resource-limiter.test.d.cts +1 -0
  72. package/network/resource-limiter.test.d.ts +1 -0
  73. package/network/server-salt.cjs +7 -3
  74. package/network/server-salt.d.cts +2 -0
  75. package/network/server-salt.d.ts +2 -0
  76. package/network/server-salt.js +7 -3
  77. package/network/session-connection.cjs +106 -20
  78. package/network/session-connection.d.cts +11 -0
  79. package/network/session-connection.d.ts +11 -0
  80. package/network/session-connection.js +106 -20
  81. package/package.json +1 -1
  82. package/utils.cjs +2 -0
  83. package/utils.js +2 -0
@@ -15,183 +15,20 @@ const sortedArray = require("../../utils/sorted-array.cjs");
15
15
  const batchedQueries = require("../methods/chats/batched-queries.cjs");
16
16
  const peersIndex = require("../types/peers/peers-index.cjs");
17
17
  const peerUtils$1 = require("../utils/peer-utils.cjs");
18
+ const walkPageBlocks = require("../utils/walk-page-blocks.cjs");
18
19
  const types = require("./types.cjs");
19
20
  const utils$2 = require("./utils.cjs");
20
21
  const innerTl = require("../../tl/inner-tl.cjs");
21
22
  const WARN_EVERY = 100;
22
23
  const KEEP_ALIVE_INTERVAL = 15 * 60 * 1e3;
23
24
  const UPDATES_TOO_LONG = { _: "updatesTooLong" };
24
- function collectRichTextPeerIds(text, peers) {
25
- if (!text) return;
26
- switch (text._) {
27
- case "textEmpty":
28
- case "textPlain":
29
- case "textEmail":
30
- case "textPhone":
31
- case "textImage":
32
- case "textMath":
33
- case "textCustomEmoji":
34
- break;
35
- case "textBold":
36
- case "textItalic":
37
- case "textUnderline":
38
- case "textStrike":
39
- case "textFixed":
40
- case "textUrl":
41
- case "textSubscript":
42
- case "textSuperscript":
43
- case "textMarked":
44
- case "textAnchor":
45
- case "textSpoiler":
46
- case "textMention":
47
- case "textHashtag":
48
- case "textBotCommand":
49
- case "textCashtag":
50
- case "textAutoUrl":
51
- case "textAutoEmail":
52
- case "textAutoPhone":
53
- case "textBankCard":
54
- case "textDate":
55
- collectRichTextPeerIds(text.text, peers);
56
- break;
57
- case "textConcat":
58
- for (const child of text.texts) collectRichTextPeerIds(child, peers);
59
- break;
60
- case "textMentionName":
61
- peers.add(text.userId);
62
- collectRichTextPeerIds(text.text, peers);
63
- break;
64
- default:
65
- utils$1.assertNever();
66
- }
67
- }
68
- function collectPageCaptionPeerIds(caption, peers) {
69
- if (!caption) return;
70
- collectRichTextPeerIds(caption.text, peers);
71
- collectRichTextPeerIds(caption.credit, peers);
72
- }
73
- function collectPageBlockPeerIds(block, peers) {
74
- if (!block) return;
75
- switch (block._) {
76
- case "pageBlockUnsupported":
77
- case "pageBlockDivider":
78
- case "pageBlockAnchor":
79
- case "pageBlockMath":
80
- break;
81
- case "pageBlockTitle":
82
- case "pageBlockSubtitle":
83
- case "pageBlockHeader":
84
- case "pageBlockSubheader":
85
- case "pageBlockParagraph":
86
- case "pageBlockPreformatted":
87
- case "pageBlockFooter":
88
- case "pageBlockKicker":
89
- case "pageBlockThinking":
90
- case "pageBlockHeading1":
91
- case "pageBlockHeading2":
92
- case "pageBlockHeading3":
93
- case "pageBlockHeading4":
94
- case "pageBlockHeading5":
95
- case "pageBlockHeading6":
96
- collectRichTextPeerIds(block.text, peers);
97
- break;
98
- case "pageBlockAuthorDate":
99
- collectRichTextPeerIds(block.author, peers);
100
- break;
101
- case "pageBlockList":
102
- for (const item of block.items) collectPageListItemPeerIds(item, peers);
103
- break;
104
- case "pageBlockOrderedList":
105
- for (const item of block.items) collectPageListOrderedItemPeerIds(item, peers);
106
- break;
107
- case "pageBlockBlockquote":
108
- case "pageBlockPullquote":
109
- collectRichTextPeerIds(block.text, peers);
110
- collectRichTextPeerIds(block.caption, peers);
111
- break;
112
- case "pageBlockPhoto":
113
- case "pageBlockVideo":
114
- case "pageBlockEmbed":
115
- case "pageBlockAudio":
116
- case "pageBlockMap":
117
- case "inputPageBlockMap":
118
- collectPageCaptionPeerIds(block.caption, peers);
119
- break;
120
- case "pageBlockCover":
121
- collectPageBlockPeerIds(block.cover, peers);
122
- break;
123
- case "pageBlockEmbedPost":
124
- for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
125
- collectPageCaptionPeerIds(block.caption, peers);
126
- break;
127
- case "pageBlockCollage":
128
- case "pageBlockSlideshow":
129
- for (const child of block.items) collectPageBlockPeerIds(child, peers);
130
- collectPageCaptionPeerIds(block.caption, peers);
131
- break;
132
- case "pageBlockChannel":
133
- switch (block.channel._) {
134
- case "chatEmpty":
135
- case "chat":
136
- case "chatForbidden":
137
- peers.add(peerUtils.getMarkedPeerId(block.channel.id, "chat"));
138
- break;
139
- case "channel":
140
- case "channelForbidden":
141
- peers.add(peerUtils.getMarkedPeerId(block.channel.id, "channel"));
142
- break;
143
- default:
144
- utils$1.assertNever(block.channel);
145
- }
146
- break;
147
- case "pageBlockTable":
148
- collectRichTextPeerIds(block.title, peers);
149
- for (const row of block.rows) {
150
- for (const cell of row.cells) collectRichTextPeerIds(cell.text, peers);
151
- }
152
- break;
153
- case "pageBlockDetails":
154
- for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
155
- collectRichTextPeerIds(block.title, peers);
156
- break;
157
- case "pageBlockRelatedArticles":
158
- collectRichTextPeerIds(block.title, peers);
159
- break;
160
- case "pageBlockBlockquoteBlocks":
161
- for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
162
- collectRichTextPeerIds(block.caption, peers);
163
- break;
164
- default:
165
- utils$1.assertNever();
166
- }
167
- }
168
- function collectPageListItemPeerIds(item, peers) {
169
- switch (item._) {
170
- case "pageListItemText":
171
- collectRichTextPeerIds(item.text, peers);
172
- break;
173
- case "pageListItemBlocks":
174
- for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
175
- break;
176
- default:
177
- utils$1.assertNever();
178
- }
179
- }
180
- function collectPageListOrderedItemPeerIds(item, peers) {
181
- switch (item._) {
182
- case "pageListOrderedItemText":
183
- collectRichTextPeerIds(item.text, peers);
184
- break;
185
- case "pageListOrderedItemBlocks":
186
- for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
187
- break;
188
- default:
189
- utils$1.assertNever();
190
- }
191
- }
192
25
  function collectRichMessagePeerIds(richMessage, peers) {
193
26
  if (!richMessage) return;
194
- for (const block of richMessage.blocks) collectPageBlockPeerIds(block, peers);
27
+ walkPageBlocks.walkPageBlocks(richMessage.blocks, {
28
+ richText: (text) => {
29
+ if (text._ === "textMentionName") peers.add(text.userId);
30
+ }
31
+ });
195
32
  }
196
33
  class UpdatesManager {
197
34
  constructor(client, params = {}) {
@@ -8,183 +8,20 @@ import { SortedArray } from "../../utils/sorted-array.js";
8
8
  import { _getChannelsBatched, _getUsersBatched } from "../methods/chats/batched-queries.js";
9
9
  import { PeersIndex } from "../types/peers/peers-index.js";
10
10
  import { toInputChannel, isInputPeerChannel, isInputPeerUser, toInputUser } from "../utils/peer-utils.js";
11
+ import { walkPageBlocks } from "../utils/walk-page-blocks.js";
11
12
  import { RawUpdateInfo } from "./types.js";
12
13
  import { toPendingUpdate, messageToUpdate, isMessageEmpty, createDummyUpdatesContainer, extractChannelIdFromUpdate } from "./utils.js";
13
14
  import { RpcError } from "../../tl/inner-tl.js";
14
15
  const WARN_EVERY = 100;
15
16
  const KEEP_ALIVE_INTERVAL = 15 * 60 * 1e3;
16
17
  const UPDATES_TOO_LONG = { _: "updatesTooLong" };
17
- function collectRichTextPeerIds(text, peers) {
18
- if (!text) return;
19
- switch (text._) {
20
- case "textEmpty":
21
- case "textPlain":
22
- case "textEmail":
23
- case "textPhone":
24
- case "textImage":
25
- case "textMath":
26
- case "textCustomEmoji":
27
- break;
28
- case "textBold":
29
- case "textItalic":
30
- case "textUnderline":
31
- case "textStrike":
32
- case "textFixed":
33
- case "textUrl":
34
- case "textSubscript":
35
- case "textSuperscript":
36
- case "textMarked":
37
- case "textAnchor":
38
- case "textSpoiler":
39
- case "textMention":
40
- case "textHashtag":
41
- case "textBotCommand":
42
- case "textCashtag":
43
- case "textAutoUrl":
44
- case "textAutoEmail":
45
- case "textAutoPhone":
46
- case "textBankCard":
47
- case "textDate":
48
- collectRichTextPeerIds(text.text, peers);
49
- break;
50
- case "textConcat":
51
- for (const child of text.texts) collectRichTextPeerIds(child, peers);
52
- break;
53
- case "textMentionName":
54
- peers.add(text.userId);
55
- collectRichTextPeerIds(text.text, peers);
56
- break;
57
- default:
58
- assertNever();
59
- }
60
- }
61
- function collectPageCaptionPeerIds(caption, peers) {
62
- if (!caption) return;
63
- collectRichTextPeerIds(caption.text, peers);
64
- collectRichTextPeerIds(caption.credit, peers);
65
- }
66
- function collectPageBlockPeerIds(block, peers) {
67
- if (!block) return;
68
- switch (block._) {
69
- case "pageBlockUnsupported":
70
- case "pageBlockDivider":
71
- case "pageBlockAnchor":
72
- case "pageBlockMath":
73
- break;
74
- case "pageBlockTitle":
75
- case "pageBlockSubtitle":
76
- case "pageBlockHeader":
77
- case "pageBlockSubheader":
78
- case "pageBlockParagraph":
79
- case "pageBlockPreformatted":
80
- case "pageBlockFooter":
81
- case "pageBlockKicker":
82
- case "pageBlockThinking":
83
- case "pageBlockHeading1":
84
- case "pageBlockHeading2":
85
- case "pageBlockHeading3":
86
- case "pageBlockHeading4":
87
- case "pageBlockHeading5":
88
- case "pageBlockHeading6":
89
- collectRichTextPeerIds(block.text, peers);
90
- break;
91
- case "pageBlockAuthorDate":
92
- collectRichTextPeerIds(block.author, peers);
93
- break;
94
- case "pageBlockList":
95
- for (const item of block.items) collectPageListItemPeerIds(item, peers);
96
- break;
97
- case "pageBlockOrderedList":
98
- for (const item of block.items) collectPageListOrderedItemPeerIds(item, peers);
99
- break;
100
- case "pageBlockBlockquote":
101
- case "pageBlockPullquote":
102
- collectRichTextPeerIds(block.text, peers);
103
- collectRichTextPeerIds(block.caption, peers);
104
- break;
105
- case "pageBlockPhoto":
106
- case "pageBlockVideo":
107
- case "pageBlockEmbed":
108
- case "pageBlockAudio":
109
- case "pageBlockMap":
110
- case "inputPageBlockMap":
111
- collectPageCaptionPeerIds(block.caption, peers);
112
- break;
113
- case "pageBlockCover":
114
- collectPageBlockPeerIds(block.cover, peers);
115
- break;
116
- case "pageBlockEmbedPost":
117
- for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
118
- collectPageCaptionPeerIds(block.caption, peers);
119
- break;
120
- case "pageBlockCollage":
121
- case "pageBlockSlideshow":
122
- for (const child of block.items) collectPageBlockPeerIds(child, peers);
123
- collectPageCaptionPeerIds(block.caption, peers);
124
- break;
125
- case "pageBlockChannel":
126
- switch (block.channel._) {
127
- case "chatEmpty":
128
- case "chat":
129
- case "chatForbidden":
130
- peers.add(getMarkedPeerId(block.channel.id, "chat"));
131
- break;
132
- case "channel":
133
- case "channelForbidden":
134
- peers.add(getMarkedPeerId(block.channel.id, "channel"));
135
- break;
136
- default:
137
- assertNever(block.channel);
138
- }
139
- break;
140
- case "pageBlockTable":
141
- collectRichTextPeerIds(block.title, peers);
142
- for (const row of block.rows) {
143
- for (const cell of row.cells) collectRichTextPeerIds(cell.text, peers);
144
- }
145
- break;
146
- case "pageBlockDetails":
147
- for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
148
- collectRichTextPeerIds(block.title, peers);
149
- break;
150
- case "pageBlockRelatedArticles":
151
- collectRichTextPeerIds(block.title, peers);
152
- break;
153
- case "pageBlockBlockquoteBlocks":
154
- for (const child of block.blocks) collectPageBlockPeerIds(child, peers);
155
- collectRichTextPeerIds(block.caption, peers);
156
- break;
157
- default:
158
- assertNever();
159
- }
160
- }
161
- function collectPageListItemPeerIds(item, peers) {
162
- switch (item._) {
163
- case "pageListItemText":
164
- collectRichTextPeerIds(item.text, peers);
165
- break;
166
- case "pageListItemBlocks":
167
- for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
168
- break;
169
- default:
170
- assertNever();
171
- }
172
- }
173
- function collectPageListOrderedItemPeerIds(item, peers) {
174
- switch (item._) {
175
- case "pageListOrderedItemText":
176
- collectRichTextPeerIds(item.text, peers);
177
- break;
178
- case "pageListOrderedItemBlocks":
179
- for (const block of item.blocks) collectPageBlockPeerIds(block, peers);
180
- break;
181
- default:
182
- assertNever();
183
- }
184
- }
185
18
  function collectRichMessagePeerIds(richMessage, peers) {
186
19
  if (!richMessage) return;
187
- for (const block of richMessage.blocks) collectPageBlockPeerIds(block, peers);
20
+ walkPageBlocks(richMessage.blocks, {
21
+ richText: (text) => {
22
+ if (text._ === "textMentionName") peers.add(text.userId);
23
+ }
24
+ });
188
25
  }
189
26
  class UpdatesManager {
190
27
  constructor(client, params = {}) {
@@ -9,3 +9,4 @@ export * from './rps-meter.js';
9
9
  export * from './stream-utils.js';
10
10
  export * from './string-session.js';
11
11
  export * from './voice-utils.js';
12
+ export * from './walk-page-blocks.js';
@@ -9,3 +9,4 @@ export * from './rps-meter.js';
9
9
  export * from './stream-utils.js';
10
10
  export * from './string-session.js';
11
11
  export * from './voice-utils.js';
12
+ export * from './walk-page-blocks.js';
@@ -0,0 +1,164 @@
1
+ if (typeof globalThis !== "undefined" && !globalThis._MTCUTE_CJS_DEPRECATION_WARNED) {
2
+ globalThis._MTCUTE_CJS_DEPRECATION_WARNED = true;
3
+ console.warn("[@mtcute/core] CommonJS bundles are deprecated. They will be removed completely in one of the upcoming releases. No support is provided for CommonJS users. Please consider switching to ESM, it's " + (/* @__PURE__ */ new Date()).getFullYear() + " already.");
4
+ console.warn("[@mtcute/core] Learn more about switching to ESM: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c");
5
+ }
6
+ "use strict";
7
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
8
+ const utils = require("../../types/utils.cjs");
9
+ function walkRichText(text, visitor) {
10
+ if (!text) return;
11
+ visitor.richText?.(text);
12
+ switch (text._) {
13
+ case "textEmpty":
14
+ case "textPlain":
15
+ case "textEmail":
16
+ case "textPhone":
17
+ case "textImage":
18
+ case "textMath":
19
+ case "textCustomEmoji":
20
+ break;
21
+ case "textBold":
22
+ case "textItalic":
23
+ case "textUnderline":
24
+ case "textStrike":
25
+ case "textFixed":
26
+ case "textUrl":
27
+ case "textSubscript":
28
+ case "textSuperscript":
29
+ case "textMarked":
30
+ case "textAnchor":
31
+ case "textSpoiler":
32
+ case "textMention":
33
+ case "textHashtag":
34
+ case "textBotCommand":
35
+ case "textCashtag":
36
+ case "textAutoUrl":
37
+ case "textAutoEmail":
38
+ case "textAutoPhone":
39
+ case "textBankCard":
40
+ case "textDate":
41
+ case "textMentionName":
42
+ walkRichText(text.text, visitor);
43
+ break;
44
+ case "textConcat":
45
+ for (const child of text.texts) walkRichText(child, visitor);
46
+ break;
47
+ default:
48
+ utils.assertNever();
49
+ }
50
+ }
51
+ function walkPageCaption(caption, visitor) {
52
+ if (!caption) return;
53
+ walkRichText(caption.text, visitor);
54
+ walkRichText(caption.credit, visitor);
55
+ }
56
+ function walkPageBlock(block, visitor) {
57
+ if (!block) return;
58
+ visitor.pageBlock?.(block);
59
+ switch (block._) {
60
+ case "pageBlockUnsupported":
61
+ case "pageBlockDivider":
62
+ case "pageBlockAnchor":
63
+ case "pageBlockMath":
64
+ break;
65
+ case "pageBlockTitle":
66
+ case "pageBlockSubtitle":
67
+ case "pageBlockHeader":
68
+ case "pageBlockSubheader":
69
+ case "pageBlockParagraph":
70
+ case "pageBlockPreformatted":
71
+ case "pageBlockFooter":
72
+ case "pageBlockKicker":
73
+ case "pageBlockThinking":
74
+ case "pageBlockHeading1":
75
+ case "pageBlockHeading2":
76
+ case "pageBlockHeading3":
77
+ case "pageBlockHeading4":
78
+ case "pageBlockHeading5":
79
+ case "pageBlockHeading6":
80
+ walkRichText(block.text, visitor);
81
+ break;
82
+ case "pageBlockAuthorDate":
83
+ walkRichText(block.author, visitor);
84
+ break;
85
+ case "pageBlockList":
86
+ for (const item of block.items) {
87
+ switch (item._) {
88
+ case "pageListItemText":
89
+ walkRichText(item.text, visitor);
90
+ break;
91
+ case "pageListItemBlocks":
92
+ for (const block2 of item.blocks) walkPageBlock(block2, visitor);
93
+ break;
94
+ default:
95
+ utils.assertNever();
96
+ }
97
+ }
98
+ break;
99
+ case "pageBlockOrderedList":
100
+ for (const item of block.items) {
101
+ switch (item._) {
102
+ case "pageListOrderedItemText":
103
+ walkRichText(item.text, visitor);
104
+ break;
105
+ case "pageListOrderedItemBlocks":
106
+ for (const block2 of item.blocks) walkPageBlock(block2, visitor);
107
+ break;
108
+ default:
109
+ utils.assertNever();
110
+ }
111
+ }
112
+ break;
113
+ case "pageBlockBlockquote":
114
+ case "pageBlockPullquote":
115
+ walkRichText(block.text, visitor);
116
+ walkRichText(block.caption, visitor);
117
+ break;
118
+ case "pageBlockPhoto":
119
+ case "pageBlockVideo":
120
+ case "pageBlockEmbed":
121
+ case "pageBlockAudio":
122
+ case "pageBlockMap":
123
+ case "inputPageBlockMap":
124
+ walkPageCaption(block.caption, visitor);
125
+ break;
126
+ case "pageBlockCover":
127
+ walkPageBlock(block.cover, visitor);
128
+ break;
129
+ case "pageBlockEmbedPost":
130
+ for (const child of block.blocks) walkPageBlock(child, visitor);
131
+ walkPageCaption(block.caption, visitor);
132
+ break;
133
+ case "pageBlockCollage":
134
+ case "pageBlockSlideshow":
135
+ for (const child of block.items) walkPageBlock(child, visitor);
136
+ walkPageCaption(block.caption, visitor);
137
+ break;
138
+ case "pageBlockChannel":
139
+ break;
140
+ case "pageBlockTable":
141
+ walkRichText(block.title, visitor);
142
+ for (const row of block.rows) {
143
+ for (const cell of row.cells) walkRichText(cell.text, visitor);
144
+ }
145
+ break;
146
+ case "pageBlockDetails":
147
+ for (const child of block.blocks) walkPageBlock(child, visitor);
148
+ walkRichText(block.title, visitor);
149
+ break;
150
+ case "pageBlockRelatedArticles":
151
+ walkRichText(block.title, visitor);
152
+ break;
153
+ case "pageBlockBlockquoteBlocks":
154
+ for (const child of block.blocks) walkPageBlock(child, visitor);
155
+ walkRichText(block.caption, visitor);
156
+ break;
157
+ default:
158
+ utils.assertNever();
159
+ }
160
+ }
161
+ function walkPageBlocks(blocks, visitor) {
162
+ for (const block of blocks) walkPageBlock(block, visitor);
163
+ }
164
+ exports.walkPageBlocks = walkPageBlocks;
@@ -0,0 +1,9 @@
1
+ import { tl } from '../../tl/index.js';
2
+ export interface PageBlockVisitor {
3
+ /** Called for every rich text node in the tree */
4
+ richText?: (text: tl.TypeRichText) => void;
5
+ /** Called for every page block in the tree */
6
+ pageBlock?: (block: tl.TypePageBlock) => void;
7
+ }
8
+ /** Recursively walk a list of page blocks, invoking the given visitor callbacks */
9
+ export declare function walkPageBlocks(blocks: tl.TypePageBlock[], visitor: PageBlockVisitor): void;
@@ -0,0 +1,9 @@
1
+ import { tl } from '../../tl/index.js';
2
+ export interface PageBlockVisitor {
3
+ /** Called for every rich text node in the tree */
4
+ richText?: (text: tl.TypeRichText) => void;
5
+ /** Called for every page block in the tree */
6
+ pageBlock?: (block: tl.TypePageBlock) => void;
7
+ }
8
+ /** Recursively walk a list of page blocks, invoking the given visitor callbacks */
9
+ export declare function walkPageBlocks(blocks: tl.TypePageBlock[], visitor: PageBlockVisitor): void;