rettiwt-api 6.0.8 → 6.1.1

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 (220) hide show
  1. package/.github/ISSUE_TEMPLATE/bug-report.yml +57 -0
  2. package/.github/ISSUE_TEMPLATE/feature-request.yml +20 -0
  3. package/.github/ISSUE_TEMPLATE/question.yml +15 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +32 -0
  5. package/.github/workflows/ci.yml +33 -0
  6. package/.nvmrc +1 -0
  7. package/README.md +30 -6
  8. package/dist/Rettiwt.d.ts +3 -0
  9. package/dist/Rettiwt.js +4 -0
  10. package/dist/Rettiwt.js.map +1 -1
  11. package/dist/cli.js +2 -0
  12. package/dist/cli.js.map +1 -1
  13. package/dist/collections/Extractors.d.ts +24 -0
  14. package/dist/collections/Extractors.js +14 -0
  15. package/dist/collections/Extractors.js.map +1 -1
  16. package/dist/collections/Groups.js +11 -0
  17. package/dist/collections/Groups.js.map +1 -1
  18. package/dist/collections/Requests.js +12 -0
  19. package/dist/collections/Requests.js.map +1 -1
  20. package/dist/commands/DirectMessage.d.ts +10 -0
  21. package/dist/commands/DirectMessage.js +57 -0
  22. package/dist/commands/DirectMessage.js.map +1 -0
  23. package/dist/commands/List.js +44 -3
  24. package/dist/commands/List.js.map +1 -1
  25. package/dist/commands/Tweet.js +29 -1
  26. package/dist/commands/Tweet.js.map +1 -1
  27. package/dist/commands/User.js +39 -1
  28. package/dist/commands/User.js.map +1 -1
  29. package/dist/enums/Data.d.ts +3 -1
  30. package/dist/enums/Data.js +2 -0
  31. package/dist/enums/Data.js.map +1 -1
  32. package/dist/enums/Resource.d.ts +11 -0
  33. package/dist/enums/Resource.js +12 -0
  34. package/dist/enums/Resource.js.map +1 -1
  35. package/dist/enums/raw/Analytics.d.ts +6 -3
  36. package/dist/enums/raw/Analytics.js +5 -2
  37. package/dist/enums/raw/Analytics.js.map +1 -1
  38. package/dist/index.d.ts +15 -0
  39. package/dist/index.js +8 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/models/args/FetchArgs.d.ts +9 -0
  42. package/dist/models/args/FetchArgs.js +16 -0
  43. package/dist/models/args/FetchArgs.js.map +1 -1
  44. package/dist/models/args/PostArgs.d.ts +1 -0
  45. package/dist/models/args/PostArgs.js +2 -0
  46. package/dist/models/args/PostArgs.js.map +1 -1
  47. package/dist/models/data/Analytics.d.ts +43 -0
  48. package/dist/models/data/Analytics.js +92 -0
  49. package/dist/models/data/Analytics.js.map +1 -0
  50. package/dist/models/data/Conversation.d.ts +93 -0
  51. package/dist/models/data/Conversation.js +293 -0
  52. package/dist/models/data/Conversation.js.map +1 -0
  53. package/dist/models/data/CursoredData.d.ts +2 -1
  54. package/dist/models/data/CursoredData.js +6 -1
  55. package/dist/models/data/CursoredData.js.map +1 -1
  56. package/dist/models/data/DirectMessage.d.ts +105 -0
  57. package/dist/models/data/DirectMessage.js +284 -0
  58. package/dist/models/data/DirectMessage.js.map +1 -0
  59. package/dist/models/data/Inbox.d.ts +44 -0
  60. package/dist/models/data/Inbox.js +106 -0
  61. package/dist/models/data/Inbox.js.map +1 -0
  62. package/dist/models/data/List.d.ts +20 -0
  63. package/dist/models/data/List.js +50 -1
  64. package/dist/models/data/List.js.map +1 -1
  65. package/dist/models/data/Tweet.d.ts +6 -6
  66. package/dist/models/data/Tweet.js +4 -2
  67. package/dist/models/data/Tweet.js.map +1 -1
  68. package/dist/models/data/User.d.ts +2 -0
  69. package/dist/models/data/User.js +6 -0
  70. package/dist/models/data/User.js.map +1 -1
  71. package/dist/requests/DirectMessage.d.ts +28 -0
  72. package/dist/requests/DirectMessage.js +149 -0
  73. package/dist/requests/DirectMessage.js.map +1 -0
  74. package/dist/requests/List.d.ts +10 -0
  75. package/dist/requests/List.js +52 -0
  76. package/dist/requests/List.js.map +1 -1
  77. package/dist/requests/Tweet.d.ts +8 -0
  78. package/dist/requests/Tweet.js +30 -0
  79. package/dist/requests/Tweet.js.map +1 -1
  80. package/dist/requests/User.d.ts +8 -1
  81. package/dist/requests/User.js +67 -8
  82. package/dist/requests/User.js.map +1 -1
  83. package/dist/services/public/DirectMessageService.d.ts +100 -0
  84. package/dist/services/public/DirectMessageService.js +143 -0
  85. package/dist/services/public/DirectMessageService.js.map +1 -0
  86. package/dist/services/public/FetcherService.d.ts +2 -2
  87. package/dist/services/public/FetcherService.js +4 -4
  88. package/dist/services/public/FetcherService.js.map +1 -1
  89. package/dist/services/public/ListService.d.ts +85 -0
  90. package/dist/services/public/ListService.js +111 -0
  91. package/dist/services/public/ListService.js.map +1 -1
  92. package/dist/services/public/TweetService.d.ts +56 -0
  93. package/dist/services/public/TweetService.js +72 -0
  94. package/dist/services/public/TweetService.js.map +1 -1
  95. package/dist/services/public/UserService.d.ts +61 -2
  96. package/dist/services/public/UserService.js +89 -0
  97. package/dist/services/public/UserService.js.map +1 -1
  98. package/dist/types/args/FetchArgs.d.ts +69 -12
  99. package/dist/types/args/PostArgs.d.ts +29 -11
  100. package/dist/types/data/Analytics.d.ts +42 -0
  101. package/dist/types/data/Analytics.js +3 -0
  102. package/dist/types/data/Analytics.js.map +1 -0
  103. package/dist/types/data/Conversation.d.ts +32 -0
  104. package/dist/types/data/Conversation.js +3 -0
  105. package/dist/types/data/Conversation.js.map +1 -0
  106. package/dist/types/data/CursoredData.d.ts +4 -1
  107. package/dist/types/data/DirectMessage.d.ts +25 -0
  108. package/dist/types/data/DirectMessage.js +3 -0
  109. package/dist/types/data/DirectMessage.js.map +1 -0
  110. package/dist/types/data/Inbox.d.ts +18 -0
  111. package/dist/types/data/Inbox.js +3 -0
  112. package/dist/types/data/Inbox.js.map +1 -0
  113. package/dist/types/data/List.d.ts +5 -1
  114. package/dist/types/data/Tweet.d.ts +6 -6
  115. package/dist/types/data/User.d.ts +4 -0
  116. package/dist/types/raw/base/Analytic.d.ts +6 -1
  117. package/dist/types/raw/base/Message.d.ts +16 -0
  118. package/dist/types/raw/base/Message.js +4 -0
  119. package/dist/types/raw/base/Message.js.map +1 -0
  120. package/dist/types/raw/base/Tweet.d.ts +6 -6
  121. package/dist/types/raw/base/User.d.ts +2 -1
  122. package/dist/types/raw/composite/TimelineList.d.ts +9 -0
  123. package/dist/types/raw/composite/TimelineList.js +3 -0
  124. package/dist/types/raw/composite/TimelineList.js.map +1 -0
  125. package/dist/types/raw/dm/Conversation.d.ts +55 -0
  126. package/dist/types/raw/dm/Conversation.js +4 -0
  127. package/dist/types/raw/dm/Conversation.js.map +1 -0
  128. package/dist/types/raw/dm/InboxInitial.d.ts +137 -0
  129. package/dist/types/raw/dm/InboxInitial.js +4 -0
  130. package/dist/types/raw/dm/InboxInitial.js.map +1 -0
  131. package/dist/types/raw/dm/InboxTimeline.d.ts +287 -0
  132. package/dist/types/raw/dm/InboxTimeline.js +4 -0
  133. package/dist/types/raw/dm/InboxTimeline.js.map +1 -0
  134. package/dist/types/raw/dm/UserUpdates.d.ts +41 -0
  135. package/dist/types/raw/dm/UserUpdates.js +4 -0
  136. package/dist/types/raw/dm/UserUpdates.js.map +1 -0
  137. package/dist/types/raw/list/AddMember.d.ts +151 -0
  138. package/dist/types/raw/list/AddMember.js +4 -0
  139. package/dist/types/raw/list/AddMember.js.map +1 -0
  140. package/dist/types/raw/list/Details.d.ts +44 -13
  141. package/dist/types/raw/list/RemoveMember.d.ts +150 -0
  142. package/dist/types/raw/list/RemoveMember.js +4 -0
  143. package/dist/types/raw/list/RemoveMember.js.map +1 -0
  144. package/dist/types/raw/tweet/Bookmark.d.ts +12 -0
  145. package/dist/types/raw/tweet/Bookmark.js +4 -0
  146. package/dist/types/raw/tweet/Bookmark.js.map +1 -0
  147. package/dist/types/raw/tweet/Unbookmark.d.ts +11 -0
  148. package/dist/types/raw/tweet/Unbookmark.js +4 -0
  149. package/dist/types/raw/tweet/Unbookmark.js.map +1 -0
  150. package/dist/types/raw/user/Analytics.d.ts +6 -18
  151. package/dist/types/raw/user/Analytics.js +0 -1
  152. package/dist/types/raw/user/Analytics.js.map +1 -1
  153. package/dist/types/raw/user/Lists.d.ts +319 -0
  154. package/dist/types/raw/user/Lists.js +4 -0
  155. package/dist/types/raw/user/Lists.js.map +1 -0
  156. package/eslint.config.mjs +1 -1
  157. package/package.json +11 -6
  158. package/playground/.env.example +1 -0
  159. package/playground/README.md +53 -0
  160. package/playground/index.js +15 -0
  161. package/playground/package.json +15 -0
  162. package/src/Rettiwt.ts +5 -0
  163. package/src/cli.ts +2 -0
  164. package/src/collections/Extractors.ts +29 -0
  165. package/src/collections/Groups.ts +11 -0
  166. package/src/collections/Requests.ts +20 -0
  167. package/src/commands/DirectMessage.ts +62 -0
  168. package/src/commands/List.ts +44 -3
  169. package/src/commands/Tweet.ts +29 -1
  170. package/src/commands/User.ts +65 -1
  171. package/src/enums/Data.ts +2 -0
  172. package/src/enums/Resource.ts +13 -0
  173. package/src/enums/raw/Analytics.ts +5 -2
  174. package/src/index.ts +15 -0
  175. package/src/models/args/FetchArgs.ts +17 -0
  176. package/src/models/args/PostArgs.ts +2 -0
  177. package/src/models/data/Analytics.ts +97 -0
  178. package/src/models/data/Conversation.ts +344 -0
  179. package/src/models/data/CursoredData.ts +7 -2
  180. package/src/models/data/DirectMessage.ts +335 -0
  181. package/src/models/data/Inbox.ts +124 -0
  182. package/src/models/data/List.ts +60 -1
  183. package/src/models/data/Tweet.ts +10 -8
  184. package/src/models/data/User.ts +6 -0
  185. package/src/requests/DirectMessage.ts +233 -0
  186. package/src/requests/List.ts +58 -0
  187. package/src/requests/Tweet.ts +32 -0
  188. package/src/requests/User.ts +70 -7
  189. package/src/services/public/DirectMessageService.ts +159 -0
  190. package/src/services/public/FetcherService.ts +3 -3
  191. package/src/services/public/ListService.ts +127 -0
  192. package/src/services/public/TweetService.ts +82 -0
  193. package/src/services/public/UserService.ts +110 -2
  194. package/src/types/args/FetchArgs.ts +77 -12
  195. package/src/types/args/PostArgs.ts +31 -11
  196. package/src/types/data/Analytics.ts +58 -0
  197. package/src/types/data/Conversation.ts +44 -0
  198. package/src/types/data/CursoredData.ts +4 -1
  199. package/src/types/data/DirectMessage.ts +33 -0
  200. package/src/types/data/Inbox.ts +23 -0
  201. package/src/types/data/List.ts +7 -1
  202. package/src/types/data/Tweet.ts +6 -6
  203. package/src/types/data/User.ts +6 -0
  204. package/src/types/raw/base/Analytic.ts +7 -1
  205. package/src/types/raw/base/Message.ts +22 -0
  206. package/src/types/raw/base/Tweet.ts +6 -6
  207. package/src/types/raw/base/User.ts +2 -1
  208. package/src/types/raw/composite/TimelineList.ts +10 -0
  209. package/src/types/raw/dm/Conversation.ts +59 -0
  210. package/src/types/raw/dm/InboxInitial.ts +155 -0
  211. package/src/types/raw/dm/InboxTimeline.ts +301 -0
  212. package/src/types/raw/dm/UserUpdates.ts +46 -0
  213. package/src/types/raw/list/AddMember.ts +175 -0
  214. package/src/types/raw/list/Details.ts +52 -13
  215. package/src/types/raw/list/RemoveMember.ts +174 -0
  216. package/src/types/raw/tweet/Bookmark.ts +14 -0
  217. package/src/types/raw/tweet/Unbookmark.ts +14 -0
  218. package/src/types/raw/user/Analytics.ts +6 -22
  219. package/src/types/raw/user/Lists.ts +378 -0
  220. package/tsconfig.json +1 -1
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Conversation = void 0;
4
+ const DirectMessage_1 = require("./DirectMessage");
5
+ /**
6
+ * Type guard to check if the response is an IConversationTimelineResponse
7
+ */
8
+ function isConversationTimelineResponse(response) {
9
+ return 'conversation_timeline' in response;
10
+ }
11
+ /**
12
+ * Type guard to check if the response is an IInboxInitialResponse
13
+ */
14
+ function isInboxInitialResponse(response) {
15
+ return 'inbox_initial_state' in response;
16
+ }
17
+ /**
18
+ * Type guard to check if the response is an IInboxTimelineResponse
19
+ */
20
+ function isInboxTimelineResponse(response) {
21
+ return 'inbox_timeline' in response;
22
+ }
23
+ /**
24
+ * Extract typed conversation data from raw conversations object
25
+ */
26
+ function extractConversationData(rawConversations) {
27
+ return Object.entries(rawConversations);
28
+ }
29
+ /**
30
+ * The details of a single conversation.
31
+ *
32
+ * @public
33
+ */
34
+ class Conversation {
35
+ /** The raw conversation details. */
36
+ _raw;
37
+ avatarUrl;
38
+ hasMore;
39
+ id;
40
+ lastActivityAt;
41
+ lastMessageId;
42
+ messages;
43
+ muted;
44
+ name;
45
+ notificationsDisabled;
46
+ participants;
47
+ trusted;
48
+ type;
49
+ /**
50
+ * @param conversation - The raw conversation details from the API response.
51
+ * @param messages - Array of messages in this conversation.
52
+ */
53
+ constructor(conversation, messages = []) {
54
+ this._raw = conversation;
55
+ const conv = conversation;
56
+ this.id = conv.conversation_id && typeof conv.conversation_id === 'string' ? conv.conversation_id : '';
57
+ this.type = this._parseConversationType(conv.type);
58
+ this.participants = this._parseParticipants(conv.participants);
59
+ this.name = conv.name && typeof conv.name === 'string' ? conv.name : undefined;
60
+ this.avatarUrl = this._parseAvatarUrl(conv);
61
+ this.trusted = Boolean(conv.trusted);
62
+ this.muted = Boolean(conv.muted);
63
+ this.notificationsDisabled = Boolean(conv.notifications_disabled);
64
+ this.lastActivityAt = this._parseTimestamp(conv.sort_timestamp);
65
+ this.lastMessageId =
66
+ conv.sort_event_id && typeof conv.sort_event_id === 'string' ? conv.sort_event_id : undefined;
67
+ this.hasMore = conv.status === 'HAS_MORE';
68
+ this.messages = messages;
69
+ }
70
+ /** The raw conversation details. */
71
+ get raw() {
72
+ return this._raw;
73
+ }
74
+ /**
75
+ * Parse avatar URL from conversation data
76
+ */
77
+ _parseAvatarUrl(conv) {
78
+ // Try avatar_image_https first
79
+ if (conv.avatar_image_https && typeof conv.avatar_image_https === 'string') {
80
+ return conv.avatar_image_https;
81
+ }
82
+ // Try nested avatar.image.original_info.url
83
+ const avatar = conv.avatar;
84
+ const image = avatar?.image;
85
+ const originalInfo = image?.original_info;
86
+ if (originalInfo?.url && typeof originalInfo.url === 'string') {
87
+ return originalInfo.url;
88
+ }
89
+ return undefined;
90
+ }
91
+ /**
92
+ * Parse conversation type with proper fallback
93
+ */
94
+ _parseConversationType(type) {
95
+ if (type === 'ONE_TO_ONE' || type === 'GROUP_DM') {
96
+ return type;
97
+ }
98
+ return 'ONE_TO_ONE';
99
+ }
100
+ /**
101
+ * Parse participants array with type safety
102
+ */
103
+ _parseParticipants(participants) {
104
+ if (!Array.isArray(participants)) {
105
+ return [];
106
+ }
107
+ return participants
108
+ .map((p) => {
109
+ if (p && typeof p === 'object' && 'user_id' in p) {
110
+ // eslint-disable-next-line @typescript-eslint/naming-convention
111
+ const participantObj = p;
112
+ if (typeof participantObj.user_id === 'string') {
113
+ return participantObj.user_id;
114
+ }
115
+ }
116
+ return '';
117
+ })
118
+ .filter(Boolean);
119
+ }
120
+ /**
121
+ * Parse timestamp with proper fallback
122
+ */
123
+ _parseTimestamp(timestamp) {
124
+ if (timestamp && (typeof timestamp === 'string' || typeof timestamp === 'number')) {
125
+ const date = new Date(Number(timestamp));
126
+ if (!isNaN(date.getTime())) {
127
+ return date.toISOString();
128
+ }
129
+ }
130
+ return new Date().toISOString();
131
+ }
132
+ /**
133
+ * Extracts a single conversation from conversation timeline response.
134
+ *
135
+ * @param response - The raw response data.
136
+ *
137
+ * @returns The deserialized conversation with full message history.
138
+ */
139
+ static fromConversationTimeline(response) {
140
+ if (!response.conversation_timeline?.conversations) {
141
+ return undefined;
142
+ }
143
+ const rawConversations = response.conversation_timeline.conversations;
144
+ const entries = response.conversation_timeline.entries ?? [];
145
+ // Extract messages from entries
146
+ const messages = [];
147
+ for (const entry of entries) {
148
+ if ('message' in entry && entry.message) {
149
+ messages.push(new DirectMessage_1.DirectMessage(entry.message));
150
+ }
151
+ }
152
+ // Get the first (and typically only) conversation
153
+ const conversationEntries = extractConversationData(rawConversations);
154
+ const firstEntry = conversationEntries[0];
155
+ if (firstEntry) {
156
+ const [, conversationData] = firstEntry;
157
+ return new Conversation(conversationData, messages);
158
+ }
159
+ return undefined;
160
+ }
161
+ /**
162
+ * Extracts conversations from inbox initial state response.
163
+ *
164
+ * @param response - The raw response data.
165
+ *
166
+ * @returns The deserialized list of conversations with their preview messages.
167
+ */
168
+ static listFromInboxInitial(response) {
169
+ const conversations = [];
170
+ if (!response.inbox_initial_state?.conversations) {
171
+ return conversations;
172
+ }
173
+ const rawConversations = response.inbox_initial_state.conversations;
174
+ const entries = response.inbox_initial_state.entries ?? [];
175
+ // Group messages by conversation ID
176
+ const messagesByConversation = new Map();
177
+ for (const entry of entries) {
178
+ if ('message' in entry && entry.message) {
179
+ const message = new DirectMessage_1.DirectMessage(entry.message);
180
+ const convId = message.conversationId;
181
+ if (convId) {
182
+ if (!messagesByConversation.has(convId)) {
183
+ messagesByConversation.set(convId, []);
184
+ }
185
+ messagesByConversation.get(convId).push(message);
186
+ }
187
+ }
188
+ }
189
+ // Create conversations with their messages
190
+ const conversationEntries = extractConversationData(rawConversations);
191
+ for (const [, conversation] of conversationEntries) {
192
+ const convId = conversation.conversation_id;
193
+ const messages = messagesByConversation.get(convId) ?? [];
194
+ conversations.push(new Conversation(conversation, messages));
195
+ }
196
+ return conversations;
197
+ }
198
+ /**
199
+ * Extracts conversations from inbox timeline response.
200
+ *
201
+ * @param response - The raw response data.
202
+ *
203
+ * @returns The deserialized list of conversations with their messages.
204
+ */
205
+ static listFromInboxTimeline(response) {
206
+ const conversations = [];
207
+ if (!response.inbox_timeline?.conversations) {
208
+ return conversations;
209
+ }
210
+ const rawConversations = response.inbox_timeline.conversations;
211
+ const entries = response.inbox_timeline.entries ?? [];
212
+ // Group messages by conversation ID
213
+ const messagesByConversation = new Map();
214
+ for (const entry of entries) {
215
+ if ('message' in entry && entry.message) {
216
+ const message = new DirectMessage_1.DirectMessage(entry.message);
217
+ const convId = message.conversationId;
218
+ if (convId) {
219
+ if (!messagesByConversation.has(convId)) {
220
+ messagesByConversation.set(convId, []);
221
+ }
222
+ messagesByConversation.get(convId).push(message);
223
+ }
224
+ }
225
+ }
226
+ // Create conversations with their messages
227
+ const conversationEntries = extractConversationData(rawConversations);
228
+ for (const [, conversation] of conversationEntries) {
229
+ const convId = conversation.conversation_id;
230
+ const messages = messagesByConversation.get(convId) ?? [];
231
+ conversations.push(new Conversation(conversation, messages));
232
+ }
233
+ return conversations;
234
+ }
235
+ /**
236
+ * Generic method to extract conversations from any supported response type
237
+ */
238
+ static listFromResponse(response) {
239
+ if (isConversationTimelineResponse(response)) {
240
+ const conversation = Conversation.fromConversationTimeline(response);
241
+ return conversation ? [conversation] : [];
242
+ }
243
+ else if (isInboxInitialResponse(response)) {
244
+ return Conversation.listFromInboxInitial(response);
245
+ }
246
+ else if (isInboxTimelineResponse(response)) {
247
+ return Conversation.listFromInboxTimeline(response);
248
+ }
249
+ return [];
250
+ }
251
+ /**
252
+ * Get the other participant's ID (only for one-to-one conversations)
253
+ */
254
+ getOtherParticipant(currentUserId) {
255
+ if (!this.isOneToOne() || this.participants.length !== 2) {
256
+ return undefined;
257
+ }
258
+ return this.participants.find((id) => id !== currentUserId);
259
+ }
260
+ /**
261
+ * Check if this conversation is a group DM
262
+ */
263
+ isGroupDM() {
264
+ return this.type === 'GROUP_DM';
265
+ }
266
+ /**
267
+ * Check if this conversation is one-to-one
268
+ */
269
+ isOneToOne() {
270
+ return this.type === 'ONE_TO_ONE';
271
+ }
272
+ /**
273
+ * @returns A serializable JSON representation of `this` object.
274
+ */
275
+ toJSON() {
276
+ return {
277
+ avatarUrl: this.avatarUrl,
278
+ hasMore: this.hasMore,
279
+ id: this.id,
280
+ lastActivityAt: this.lastActivityAt,
281
+ lastMessageId: this.lastMessageId,
282
+ messages: this.messages.map((msg) => msg.toJSON()),
283
+ muted: this.muted,
284
+ name: this.name,
285
+ notificationsDisabled: this.notificationsDisabled,
286
+ participants: this.participants,
287
+ trusted: this.trusted,
288
+ type: this.type,
289
+ };
290
+ }
291
+ }
292
+ exports.Conversation = Conversation;
293
+ //# sourceMappingURL=Conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Conversation.js","sourceRoot":"","sources":["../../../src/models/data/Conversation.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { BaseType } from '../../enums/Data';
2
2
  import { ICursoredData } from '../../types/data/CursoredData';
3
+ import { List } from './List';
3
4
  import { Notification } from './Notification';
4
5
  import { Tweet } from './Tweet';
5
6
  import { User } from './User';
@@ -10,7 +11,7 @@ import { User } from './User';
10
11
  *
11
12
  * @public
12
13
  */
13
- export declare class CursoredData<T extends Notification | Tweet | User> implements ICursoredData<T> {
14
+ export declare class CursoredData<T extends Notification | Tweet | User | List> implements ICursoredData<T> {
14
15
  list: T[];
15
16
  next: string;
16
17
  /**
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CursoredData = void 0;
4
4
  const Data_1 = require("../../enums/Data");
5
5
  const JsonUtils_1 = require("../../helper/JsonUtils");
6
+ const List_1 = require("./List");
6
7
  const Notification_1 = require("./Notification");
7
8
  const Tweet_1 = require("./Tweet");
8
9
  const User_1 = require("./User");
@@ -32,9 +33,13 @@ class CursoredData {
32
33
  this.list = User_1.User.timeline(response);
33
34
  this.next = (0, JsonUtils_1.findByFilter)(response, 'cursorType', 'Bottom')[0]?.value ?? '';
34
35
  }
36
+ else if (type == Data_1.BaseType.LIST) {
37
+ this.list = List_1.List.timeline(response);
38
+ this.next = (0, JsonUtils_1.findByFilter)(response, 'cursorType', 'Bottom')[0]?.value ?? '';
39
+ }
35
40
  else if (type == Data_1.BaseType.NOTIFICATION) {
36
41
  this.list = Notification_1.Notification.list(response);
37
- this.next = (0, JsonUtils_1.findByFilter)(response, 'cursorType', 'Top')[0]?.value ?? '';
42
+ this.next = (0, JsonUtils_1.findByFilter)(response, 'cursorType', 'Bottom')[0]?.value ?? '';
38
43
  }
39
44
  }
40
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"CursoredData.js","sourceRoot":"","sources":["../../../src/models/data/CursoredData.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE5C,sDAAsD;AAKtD,iDAA8C;AAC9C,mCAAgC;AAChC,iCAA8B;AAE9B;;;;;;GAMG;AACH,MAAa,YAAY;IACjB,IAAI,CAAM;IACV,IAAI,CAAS;IAEpB;;;OAGG;IACH,YAAmB,QAA8B,EAAE,IAAc;QAChE,wBAAwB;QACxB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,IAAI,eAAQ,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAQ,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACxF,CAAC;aAAM,IAAI,IAAI,IAAI,eAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,QAAQ,CAAC,QAAQ,CAAQ,CAAC;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACxF,CAAC;aAAM,IAAI,IAAI,IAAI,eAAQ,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,GAAG,2BAAY,CAAC,IAAI,CAAC,QAAQ,CAAQ,CAAC;YAC/C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACrF,CAAC;IACF,CAAC;IAED;;OAEG;IACI,MAAM;QACZ,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAO,CAAC;YACjD,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;CACD;AAlCD,oCAkCC"}
1
+ {"version":3,"file":"CursoredData.js","sourceRoot":"","sources":["../../../src/models/data/CursoredData.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE5C,sDAAsD;AAKtD,iCAA8B;AAE9B,iDAA8C;AAC9C,mCAAgC;AAChC,iCAA8B;AAE9B;;;;;;GAMG;AACH,MAAa,YAAY;IACjB,IAAI,CAAM;IACV,IAAI,CAAS;IAEpB;;;OAGG;IACH,YAAmB,QAA8B,EAAE,IAAc;QAChE,wBAAwB;QACxB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,IAAI,eAAQ,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAQ,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACxF,CAAC;aAAM,IAAI,IAAI,IAAI,eAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,QAAQ,CAAC,QAAQ,CAAQ,CAAC;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACxF,CAAC;aAAM,IAAI,IAAI,IAAI,eAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,WAAI,CAAC,QAAQ,CAAC,QAAQ,CAAQ,CAAC;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACxF,CAAC;aAAM,IAAI,IAAI,IAAI,eAAQ,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,GAAG,2BAAY,CAAC,IAAI,CAAC,QAAQ,CAAQ,CAAC;YAC/C,IAAI,CAAC,IAAI,GAAG,IAAA,wBAAY,EAAa,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACxF,CAAC;IACF,CAAC;IAED;;OAEG;IACI,MAAM;QACZ,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAO,CAAC;YACjD,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;CACD;AArCD,oCAqCC"}
@@ -0,0 +1,105 @@
1
+ import { IDirectMessage } from '../../types/data/DirectMessage';
2
+ import { IMessage as IRawMessage } from '../../types/raw/base/Message';
3
+ import { IConversationTimelineResponse } from '../../types/raw/dm/Conversation';
4
+ import { IInboxInitialResponse } from '../../types/raw/dm/InboxInitial';
5
+ import { IInboxTimelineResponse } from '../../types/raw/dm/InboxTimeline';
6
+ /**
7
+ * The details of a single direct message.
8
+ *
9
+ * @public
10
+ */
11
+ export declare class DirectMessage implements IDirectMessage {
12
+ /** The raw message details. */
13
+ private readonly _raw;
14
+ conversationId: string;
15
+ createdAt: string;
16
+ editCount?: number;
17
+ id: string;
18
+ mediaUrls?: string[];
19
+ read?: boolean;
20
+ recipientId?: string;
21
+ senderId: string;
22
+ text: string;
23
+ /**
24
+ * @param message - The raw message details from the API response.
25
+ */
26
+ constructor(message: unknown);
27
+ /** The raw message details. */
28
+ get raw(): IRawMessage;
29
+ /**
30
+ * Extract messages from conversation timeline response
31
+ */
32
+ private static _extractFromConversationTimeline;
33
+ /**
34
+ * Extract messages from inbox initial response
35
+ */
36
+ private static _extractFromInboxInitial;
37
+ /**
38
+ * Extract messages from inbox timeline response
39
+ */
40
+ private static _extractFromInboxTimeline;
41
+ /**
42
+ * Extract media URLs from message attachment data with proper type safety.
43
+ */
44
+ private _extractMediaUrls;
45
+ /**
46
+ * Safely extract number value
47
+ */
48
+ private _extractNumberValue;
49
+ /**
50
+ * Safely extract string value with fallback
51
+ */
52
+ private _extractStringValue;
53
+ /**
54
+ * Parse message data with proper type safety
55
+ */
56
+ private _parseMessageData;
57
+ /**
58
+ * Parse timestamp with proper validation
59
+ */
60
+ private _parseTimestamp;
61
+ /**
62
+ * Filter messages by conversation ID
63
+ */
64
+ static filterByConversation(messages: DirectMessage[], conversationId: string): DirectMessage[];
65
+ /**
66
+ * Filter messages by sender ID
67
+ */
68
+ static filterBySender(messages: DirectMessage[], senderId: string): DirectMessage[];
69
+ /**
70
+ * Extracts and deserializes the list of direct messages from the given raw response data.
71
+ *
72
+ * @param response - The raw response data.
73
+ *
74
+ * @returns The deserialized list of direct messages.
75
+ */
76
+ static list(response: IInboxInitialResponse | IConversationTimelineResponse | IInboxTimelineResponse): DirectMessage[];
77
+ /**
78
+ * Generic method to extract messages from any supported response type
79
+ */
80
+ static listFromResponse(response: IInboxInitialResponse | IConversationTimelineResponse | IInboxTimelineResponse): DirectMessage[];
81
+ /**
82
+ * Sort messages by creation time (oldest to newest)
83
+ */
84
+ static sortByTime(messages: DirectMessage[], ascending?: boolean): DirectMessage[];
85
+ /**
86
+ * Get the age of this message in milliseconds
87
+ */
88
+ getAgeInMs(): number;
89
+ /**
90
+ * Check if this message has media attachments
91
+ */
92
+ hasMedia(): boolean;
93
+ /**
94
+ * Check if this message is from a specific sender
95
+ */
96
+ isFromSender(senderId: string): boolean;
97
+ /**
98
+ * @returns A serializable JSON representation of `this` object.
99
+ */
100
+ toJSON(): IDirectMessage;
101
+ /**
102
+ * Check if this message was edited
103
+ */
104
+ wasEdited(): boolean;
105
+ }