rettiwt-api 5.0.0-alpha.0 → 5.0.0-alpha.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 (465) hide show
  1. package/.eslintrc.js +2 -3
  2. package/.github/workflows/documentation.yml +1 -1
  3. package/.github/workflows/publish-alpha.yml +1 -1
  4. package/.github/workflows/publish.yml +1 -1
  5. package/.prettierignore +1 -1
  6. package/.tool-versions +1 -1
  7. package/README.md +100 -100
  8. package/dist/Rettiwt.d.ts +10 -3
  9. package/dist/Rettiwt.js +31 -12
  10. package/dist/Rettiwt.js.map +1 -1
  11. package/dist/cli.js +8 -11
  12. package/dist/cli.js.map +1 -1
  13. package/dist/collections/Extractors.d.ts +36 -2
  14. package/dist/collections/Extractors.js +41 -69
  15. package/dist/collections/Extractors.js.map +1 -1
  16. package/dist/collections/Groups.js +5 -1
  17. package/dist/collections/Groups.js.map +1 -1
  18. package/dist/collections/Requests.d.ts +3 -3
  19. package/dist/collections/Requests.js +41 -40
  20. package/dist/collections/Requests.js.map +1 -1
  21. package/dist/commands/List.js +21 -78
  22. package/dist/commands/List.js.map +1 -1
  23. package/dist/commands/Tweet.js +214 -373
  24. package/dist/commands/Tweet.js.map +1 -1
  25. package/dist/commands/User.js +138 -305
  26. package/dist/commands/User.js.map +1 -1
  27. package/dist/enums/Authentication.d.ts +10 -0
  28. package/dist/enums/Authentication.js +15 -0
  29. package/dist/enums/Authentication.js.map +1 -0
  30. package/dist/enums/Data.d.ts +3 -3
  31. package/dist/enums/Data.js +3 -3
  32. package/dist/enums/Media.d.ts +10 -0
  33. package/dist/enums/Media.js +15 -0
  34. package/dist/enums/Media.js.map +1 -0
  35. package/dist/enums/Notification.d.ts +12 -0
  36. package/dist/enums/Notification.js +17 -0
  37. package/dist/enums/Notification.js.map +1 -0
  38. package/dist/enums/Resource.d.ts +4 -0
  39. package/dist/enums/Resource.js +4 -0
  40. package/dist/enums/Resource.js.map +1 -1
  41. package/dist/enums/raw/Analytics.d.ts +28 -0
  42. package/dist/enums/raw/Analytics.js +34 -0
  43. package/dist/enums/raw/Analytics.js.map +1 -0
  44. package/dist/enums/raw/Media.d.ts +10 -0
  45. package/dist/enums/raw/Media.js +15 -0
  46. package/dist/enums/raw/Media.js.map +1 -0
  47. package/dist/enums/raw/Notification.d.ts +11 -0
  48. package/dist/enums/raw/Notification.js +16 -0
  49. package/dist/enums/raw/Notification.js.map +1 -0
  50. package/dist/enums/raw/Tweet.d.ts +9 -0
  51. package/dist/enums/raw/Tweet.js +14 -0
  52. package/dist/enums/raw/Tweet.js.map +1 -0
  53. package/dist/helper/CliUtils.js +1 -2
  54. package/dist/helper/CliUtils.js.map +1 -1
  55. package/dist/helper/JsonUtils.js +6 -11
  56. package/dist/helper/JsonUtils.js.map +1 -1
  57. package/dist/helper/TidUtils.d.ts +2 -0
  58. package/dist/helper/TidUtils.js +162 -0
  59. package/dist/helper/TidUtils.js.map +1 -0
  60. package/dist/index.d.ts +75 -5
  61. package/dist/index.js +26 -6
  62. package/dist/index.js.map +1 -1
  63. package/dist/models/RettiwtConfig.d.ts +28 -0
  64. package/dist/models/RettiwtConfig.js +55 -0
  65. package/dist/models/RettiwtConfig.js.map +1 -0
  66. package/dist/models/args/FetchArgs.d.ts +16 -102
  67. package/dist/models/args/FetchArgs.js +105 -407
  68. package/dist/models/args/FetchArgs.js.map +1 -1
  69. package/dist/models/args/PostArgs.d.ts +16 -73
  70. package/dist/models/args/PostArgs.js +43 -236
  71. package/dist/models/args/PostArgs.js.map +1 -1
  72. package/dist/models/auth/AuthCookie.d.ts +21 -0
  73. package/dist/models/auth/AuthCookie.js +55 -0
  74. package/dist/models/auth/AuthCookie.js.map +1 -0
  75. package/dist/models/auth/AuthCredential.d.ts +30 -0
  76. package/dist/models/auth/AuthCredential.js +78 -0
  77. package/dist/models/auth/AuthCredential.js.map +1 -0
  78. package/dist/models/data/CursoredData.d.ts +5 -15
  79. package/dist/models/data/CursoredData.js +25 -32
  80. package/dist/models/data/CursoredData.js.map +1 -1
  81. package/dist/models/data/List.d.ts +7 -9
  82. package/dist/models/data/List.js +24 -4
  83. package/dist/models/data/List.js.map +1 -1
  84. package/dist/models/data/Notification.d.ts +10 -24
  85. package/dist/models/data/Notification.js +38 -36
  86. package/dist/models/data/Notification.js.map +1 -1
  87. package/dist/models/data/Tweet.d.ts +34 -31
  88. package/dist/models/data/Tweet.js +186 -112
  89. package/dist/models/data/Tweet.js.map +1 -1
  90. package/dist/models/data/User.d.ts +19 -23
  91. package/dist/models/data/User.js +92 -32
  92. package/dist/models/data/User.js.map +1 -1
  93. package/dist/models/errors/ApiError.js +8 -24
  94. package/dist/models/errors/ApiError.js.map +1 -1
  95. package/dist/models/errors/HttpError.js +8 -24
  96. package/dist/models/errors/HttpError.js.map +1 -1
  97. package/dist/models/errors/RettiwtError.d.ts +3 -2
  98. package/dist/models/errors/RettiwtError.js +8 -25
  99. package/dist/models/errors/RettiwtError.js.map +1 -1
  100. package/dist/models/errors/TimeoutError.js +5 -22
  101. package/dist/models/errors/TimeoutError.js.map +1 -1
  102. package/dist/models/params/Variables.d.ts +41 -0
  103. package/dist/models/params/Variables.js +61 -0
  104. package/dist/models/params/Variables.js.map +1 -0
  105. package/dist/requests/List.d.ts +24 -0
  106. package/dist/requests/List.js +122 -0
  107. package/dist/requests/List.js.map +1 -0
  108. package/dist/requests/Media.d.ts +21 -0
  109. package/dist/requests/Media.js +70 -0
  110. package/dist/requests/Media.js.map +1 -0
  111. package/dist/requests/Tweet.d.ts +75 -0
  112. package/dist/requests/Tweet.js +480 -0
  113. package/dist/requests/Tweet.js.map +1 -0
  114. package/dist/requests/User.d.ts +111 -0
  115. package/dist/requests/User.js +762 -0
  116. package/dist/requests/User.js.map +1 -0
  117. package/dist/services/internal/AuthService.d.ts +60 -0
  118. package/dist/services/internal/AuthService.js +106 -0
  119. package/dist/services/internal/AuthService.js.map +1 -0
  120. package/dist/services/internal/ErrorService.js +38 -40
  121. package/dist/services/internal/ErrorService.js.map +1 -1
  122. package/dist/services/internal/LogService.d.ts +0 -6
  123. package/dist/services/internal/LogService.js +12 -32
  124. package/dist/services/internal/LogService.js.map +1 -1
  125. package/dist/services/internal/TidService.d.ts +44 -0
  126. package/dist/services/internal/TidService.js +162 -0
  127. package/dist/services/internal/TidService.js.map +1 -0
  128. package/dist/services/public/FetcherService.d.ts +22 -19
  129. package/dist/services/public/FetcherService.js +126 -153
  130. package/dist/services/public/FetcherService.js.map +1 -1
  131. package/dist/services/public/ListService.d.ts +2 -2
  132. package/dist/services/public/ListService.js +31 -100
  133. package/dist/services/public/ListService.js.map +1 -1
  134. package/dist/services/public/TweetService.d.ts +63 -10
  135. package/dist/services/public/TweetService.js +255 -387
  136. package/dist/services/public/TweetService.js.map +1 -1
  137. package/dist/services/public/UserService.d.ts +4 -4
  138. package/dist/services/public/UserService.js +199 -386
  139. package/dist/services/public/UserService.js.map +1 -1
  140. package/dist/types/RettiwtConfig.d.ts +17 -10
  141. package/dist/types/args/FetchArgs.d.ts +123 -0
  142. package/dist/types/{ReturnTypes.js → args/FetchArgs.js} +1 -1
  143. package/dist/types/args/FetchArgs.js.map +1 -0
  144. package/dist/types/args/PostArgs.d.ts +100 -0
  145. package/dist/types/args/PostArgs.js +3 -0
  146. package/dist/types/args/PostArgs.js.map +1 -0
  147. package/dist/types/auth/AuthCookie.d.ts +15 -0
  148. package/dist/types/auth/AuthCookie.js +3 -0
  149. package/dist/types/auth/AuthCookie.js.map +1 -0
  150. package/dist/types/auth/AuthCredential.d.ts +23 -0
  151. package/dist/types/auth/AuthCredential.js +3 -0
  152. package/dist/types/auth/AuthCredential.js.map +1 -0
  153. package/dist/types/auth/TidDynamicArgs.d.ts +10 -0
  154. package/dist/types/auth/TidDynamicArgs.js +3 -0
  155. package/dist/types/auth/TidDynamicArgs.js.map +1 -0
  156. package/dist/types/auth/TidHeader.d.ts +8 -0
  157. package/dist/types/auth/TidHeader.js +3 -0
  158. package/dist/types/auth/TidHeader.js.map +1 -0
  159. package/dist/types/auth/TidParams.d.ts +27 -0
  160. package/dist/types/auth/TidParams.js +3 -0
  161. package/dist/types/auth/TidParams.js.map +1 -0
  162. package/dist/types/auth/TidProvider.d.ts +18 -0
  163. package/dist/types/auth/TidProvider.js +3 -0
  164. package/dist/types/auth/TidProvider.js.map +1 -0
  165. package/dist/types/data/CursoredData.d.ts +16 -0
  166. package/dist/types/data/CursoredData.js +3 -0
  167. package/dist/types/data/CursoredData.js.map +1 -0
  168. package/dist/types/data/List.d.ts +21 -0
  169. package/dist/types/data/List.js +3 -0
  170. package/dist/types/data/List.js.map +1 -0
  171. package/dist/types/data/Notification.d.ts +20 -0
  172. package/dist/types/data/Notification.js +3 -0
  173. package/dist/types/data/Notification.js.map +1 -0
  174. package/dist/types/data/Tweet.d.ts +71 -0
  175. package/dist/types/data/Tweet.js +3 -0
  176. package/dist/types/data/Tweet.js.map +1 -0
  177. package/dist/types/data/User.d.ts +35 -0
  178. package/dist/types/data/User.js +3 -0
  179. package/dist/types/data/User.js.map +1 -0
  180. package/dist/types/params/Variables.d.ts +27 -0
  181. package/dist/types/params/Variables.js +3 -0
  182. package/dist/types/params/Variables.js.map +1 -0
  183. package/dist/types/raw/base/Analytic.d.ts +21 -0
  184. package/dist/types/raw/base/Analytic.js +4 -0
  185. package/dist/types/raw/base/Analytic.js.map +1 -0
  186. package/dist/types/raw/base/Cursor.d.ts +11 -0
  187. package/dist/types/raw/base/Cursor.js +4 -0
  188. package/dist/types/raw/base/Cursor.js.map +1 -0
  189. package/dist/types/raw/base/LimitedVisibilityTweet.d.ts +32 -0
  190. package/dist/types/raw/base/LimitedVisibilityTweet.js +4 -0
  191. package/dist/types/raw/base/LimitedVisibilityTweet.js.map +1 -0
  192. package/dist/types/raw/base/List.d.ts +43 -0
  193. package/dist/types/raw/base/List.js +4 -0
  194. package/dist/types/raw/base/List.js.map +1 -0
  195. package/dist/types/raw/base/Media.d.ts +43 -0
  196. package/dist/types/raw/base/Media.js +4 -0
  197. package/dist/types/raw/base/Media.js.map +1 -0
  198. package/dist/types/raw/base/Notification.d.ts +53 -0
  199. package/dist/types/raw/base/Notification.js +4 -0
  200. package/dist/types/raw/base/Notification.js.map +1 -0
  201. package/dist/types/raw/base/Space.d.ts +32 -0
  202. package/dist/types/raw/base/Space.js +4 -0
  203. package/dist/types/raw/base/Space.js.map +1 -0
  204. package/dist/types/raw/base/Tweet.d.ts +119 -0
  205. package/dist/types/raw/base/Tweet.js +4 -0
  206. package/dist/types/raw/base/Tweet.js.map +1 -0
  207. package/dist/types/raw/base/User.d.ts +140 -0
  208. package/dist/types/raw/base/User.js +4 -0
  209. package/dist/types/raw/base/User.js.map +1 -0
  210. package/dist/types/raw/composite/DataResult.d.ts +8 -0
  211. package/dist/types/raw/composite/DataResult.js +3 -0
  212. package/dist/types/raw/composite/DataResult.js.map +1 -0
  213. package/dist/types/raw/composite/TimelineTweet.d.ts +11 -0
  214. package/dist/types/raw/composite/TimelineTweet.js +4 -0
  215. package/dist/types/raw/composite/TimelineTweet.js.map +1 -0
  216. package/dist/types/raw/composite/TimelineUser.d.ts +10 -0
  217. package/dist/types/raw/composite/TimelineUser.js +4 -0
  218. package/dist/types/raw/composite/TimelineUser.js.map +1 -0
  219. package/dist/types/raw/generic/Error.d.ts +30 -0
  220. package/dist/types/raw/generic/Error.js +3 -0
  221. package/dist/types/raw/generic/Error.js.map +1 -0
  222. package/dist/types/raw/generic/Response.d.ts +12 -0
  223. package/dist/types/raw/generic/Response.js +3 -0
  224. package/dist/types/raw/generic/Response.js.map +1 -0
  225. package/dist/types/raw/list/Details.d.ts +122 -0
  226. package/dist/types/raw/list/Details.js +4 -0
  227. package/dist/types/raw/list/Details.js.map +1 -0
  228. package/dist/types/raw/list/Members.d.ts +134 -0
  229. package/dist/types/raw/list/Members.js +4 -0
  230. package/dist/types/raw/list/Members.js.map +1 -0
  231. package/dist/types/raw/list/Tweets.d.ts +1968 -0
  232. package/dist/types/raw/list/Tweets.js +4 -0
  233. package/dist/types/raw/list/Tweets.js.map +1 -0
  234. package/dist/types/raw/media/FinalizeUpload.d.ts +18 -0
  235. package/dist/types/raw/media/FinalizeUpload.js +4 -0
  236. package/dist/types/raw/media/FinalizeUpload.js.map +1 -0
  237. package/dist/types/raw/media/InitalizeUpload.d.ts +10 -0
  238. package/dist/types/raw/media/InitalizeUpload.js +4 -0
  239. package/dist/types/raw/media/InitalizeUpload.js.map +1 -0
  240. package/dist/types/raw/media/LiveVideoStream.d.ts +19 -0
  241. package/dist/types/raw/media/LiveVideoStream.js +4 -0
  242. package/dist/types/raw/media/LiveVideoStream.js.map +1 -0
  243. package/dist/types/raw/space/Details.d.ts +315 -0
  244. package/dist/types/raw/space/Details.js +4 -0
  245. package/dist/types/raw/space/Details.js.map +1 -0
  246. package/dist/types/raw/tweet/Details.d.ts +183 -0
  247. package/dist/types/raw/tweet/Details.js +4 -0
  248. package/dist/types/raw/tweet/Details.js.map +1 -0
  249. package/dist/types/raw/tweet/Like.d.ts +12 -0
  250. package/dist/types/raw/tweet/Like.js +4 -0
  251. package/dist/types/raw/tweet/Like.js.map +1 -0
  252. package/dist/types/raw/tweet/Likers.d.ts +170 -0
  253. package/dist/types/raw/tweet/Likers.js +4 -0
  254. package/dist/types/raw/tweet/Likers.js.map +1 -0
  255. package/dist/types/raw/tweet/Post.d.ts +133 -0
  256. package/dist/types/raw/tweet/Post.js +4 -0
  257. package/dist/types/raw/tweet/Post.js.map +1 -0
  258. package/dist/types/raw/tweet/Replies.d.ts +465 -0
  259. package/dist/types/raw/tweet/Replies.js +4 -0
  260. package/dist/types/raw/tweet/Replies.js.map +1 -0
  261. package/dist/types/raw/tweet/Retweet.d.ts +25 -0
  262. package/dist/types/raw/tweet/Retweet.js +4 -0
  263. package/dist/types/raw/tweet/Retweet.js.map +1 -0
  264. package/dist/types/raw/tweet/Retweeters.d.ts +177 -0
  265. package/dist/types/raw/tweet/Retweeters.js +4 -0
  266. package/dist/types/raw/tweet/Retweeters.js.map +1 -0
  267. package/dist/types/raw/tweet/Schedule.d.ts +15 -0
  268. package/dist/types/raw/tweet/Schedule.js +4 -0
  269. package/dist/types/raw/tweet/Schedule.js.map +1 -0
  270. package/dist/types/raw/tweet/Search.d.ts +518 -0
  271. package/dist/types/raw/tweet/Search.js +4 -0
  272. package/dist/types/raw/tweet/Search.js.map +1 -0
  273. package/dist/types/raw/tweet/Unlike.d.ts +12 -0
  274. package/dist/types/raw/tweet/Unlike.js +4 -0
  275. package/dist/types/raw/tweet/Unlike.js.map +1 -0
  276. package/dist/types/raw/tweet/Unpost.d.ts +17 -0
  277. package/dist/types/raw/tweet/Unpost.js +4 -0
  278. package/dist/types/raw/tweet/Unpost.js.map +1 -0
  279. package/dist/types/raw/tweet/Unretweet.d.ts +25 -0
  280. package/dist/types/raw/tweet/Unretweet.js +4 -0
  281. package/dist/types/raw/tweet/Unretweet.js.map +1 -0
  282. package/dist/types/raw/tweet/Unschedule.d.ts +12 -0
  283. package/dist/types/raw/tweet/Unschedule.js +4 -0
  284. package/dist/types/raw/tweet/Unschedule.js.map +1 -0
  285. package/dist/types/raw/user/Affiliates.d.ts +154 -0
  286. package/dist/types/raw/user/Affiliates.js +4 -0
  287. package/dist/types/raw/user/Affiliates.js.map +1 -0
  288. package/dist/types/raw/user/Analytics.d.ts +32 -0
  289. package/dist/types/raw/user/Analytics.js +4 -0
  290. package/dist/types/raw/user/Analytics.js.map +1 -0
  291. package/dist/types/raw/user/Bookmarks.d.ts +550 -0
  292. package/dist/types/raw/user/Bookmarks.js +4 -0
  293. package/dist/types/raw/user/Bookmarks.js.map +1 -0
  294. package/dist/types/raw/user/Details.d.ts +157 -0
  295. package/dist/types/raw/user/Details.js +4 -0
  296. package/dist/types/raw/user/Details.js.map +1 -0
  297. package/dist/types/raw/user/Follow.d.ts +248 -0
  298. package/dist/types/raw/user/Follow.js +4 -0
  299. package/dist/types/raw/user/Follow.js.map +1 -0
  300. package/dist/types/raw/user/Followed.d.ts +1666 -0
  301. package/dist/types/raw/user/Followed.js +4 -0
  302. package/dist/types/raw/user/Followed.js.map +1 -0
  303. package/dist/types/raw/user/Followers.d.ts +182 -0
  304. package/dist/types/raw/user/Followers.js +4 -0
  305. package/dist/types/raw/user/Followers.js.map +1 -0
  306. package/dist/types/raw/user/Following.d.ts +182 -0
  307. package/dist/types/raw/user/Following.js +4 -0
  308. package/dist/types/raw/user/Following.js.map +1 -0
  309. package/dist/types/raw/user/Highlights.d.ts +1106 -0
  310. package/dist/types/raw/user/Highlights.js +4 -0
  311. package/dist/types/raw/user/Highlights.js.map +1 -0
  312. package/dist/types/raw/user/Likes.d.ts +1065 -0
  313. package/dist/types/raw/user/Likes.js +4 -0
  314. package/dist/types/raw/user/Likes.js.map +1 -0
  315. package/dist/types/raw/user/Media.d.ts +1492 -0
  316. package/dist/types/raw/user/Media.js +4 -0
  317. package/dist/types/raw/user/Media.js.map +1 -0
  318. package/dist/types/raw/user/Notifications.d.ts +142 -0
  319. package/dist/types/raw/user/Notifications.js +4 -0
  320. package/dist/types/raw/user/Notifications.js.map +1 -0
  321. package/dist/types/raw/user/Recommended.d.ts +1991 -0
  322. package/dist/types/raw/user/Recommended.js +4 -0
  323. package/dist/types/raw/user/Recommended.js.map +1 -0
  324. package/dist/types/raw/user/Scheduled.d.ts +31 -0
  325. package/dist/types/raw/user/Scheduled.js +4 -0
  326. package/dist/types/raw/user/Scheduled.js.map +1 -0
  327. package/dist/types/raw/user/Subscriptions.d.ts +151 -0
  328. package/dist/types/raw/user/Subscriptions.js +4 -0
  329. package/dist/types/raw/user/Subscriptions.js.map +1 -0
  330. package/dist/types/raw/user/Tweets.d.ts +1065 -0
  331. package/dist/types/raw/user/Tweets.js +4 -0
  332. package/dist/types/raw/user/Tweets.js.map +1 -0
  333. package/dist/types/raw/user/TweetsAndReplies.d.ts +1065 -0
  334. package/dist/types/raw/user/TweetsAndReplies.js +4 -0
  335. package/dist/types/raw/user/TweetsAndReplies.js.map +1 -0
  336. package/dist/types/raw/user/Unfollow.d.ts +248 -0
  337. package/dist/types/raw/user/Unfollow.js +4 -0
  338. package/dist/types/raw/user/Unfollow.js.map +1 -0
  339. package/eslint.config.mjs +17 -0
  340. package/package.json +22 -19
  341. package/src/Rettiwt.ts +22 -7
  342. package/src/cli.ts +0 -2
  343. package/src/collections/Extractors.ts +40 -34
  344. package/src/collections/Groups.ts +4 -0
  345. package/src/collections/Requests.ts +46 -44
  346. package/src/commands/Tweet.ts +35 -7
  347. package/src/commands/User.ts +13 -2
  348. package/src/enums/Authentication.ts +10 -0
  349. package/src/enums/Data.ts +3 -3
  350. package/src/enums/Media.ts +10 -0
  351. package/src/enums/Notification.ts +12 -0
  352. package/src/enums/Resource.ts +4 -0
  353. package/src/enums/raw/Analytics.ts +29 -0
  354. package/src/enums/raw/Media.ts +10 -0
  355. package/src/enums/raw/Notification.ts +11 -0
  356. package/src/enums/raw/Tweet.ts +9 -0
  357. package/src/helper/JsonUtils.ts +1 -1
  358. package/src/helper/TidUtils.ts +189 -0
  359. package/src/index.ts +78 -44
  360. package/src/models/RettiwtConfig.ts +64 -0
  361. package/src/models/args/FetchArgs.ts +86 -436
  362. package/src/models/args/PostArgs.ts +24 -249
  363. package/src/models/auth/AuthCookie.ts +58 -0
  364. package/src/models/auth/AuthCredential.ts +85 -0
  365. package/src/models/data/CursoredData.ts +21 -26
  366. package/src/models/data/List.ts +18 -15
  367. package/src/models/data/Notification.ts +25 -38
  368. package/src/models/data/Tweet.ts +143 -104
  369. package/src/models/data/User.ts +74 -44
  370. package/src/models/errors/RettiwtError.ts +3 -2
  371. package/src/models/params/Variables.ts +62 -0
  372. package/src/requests/List.ts +121 -0
  373. package/src/requests/Media.ts +67 -0
  374. package/src/requests/Tweet.ts +496 -0
  375. package/src/requests/User.ts +783 -0
  376. package/src/services/{public → internal}/AuthService.ts +28 -60
  377. package/src/services/internal/LogService.ts +4 -19
  378. package/src/services/internal/TidService.ts +147 -0
  379. package/src/services/public/FetcherService.ts +89 -59
  380. package/src/services/public/ListService.ts +4 -4
  381. package/src/services/public/TweetService.ts +129 -42
  382. package/src/services/public/UserService.ts +49 -37
  383. package/src/types/RettiwtConfig.ts +18 -12
  384. package/src/types/args/FetchArgs.ts +148 -0
  385. package/src/types/args/PostArgs.ts +112 -0
  386. package/src/types/auth/AuthCookie.ts +22 -0
  387. package/src/types/auth/AuthCredential.ts +28 -0
  388. package/src/types/auth/TidDynamicArgs.ts +10 -0
  389. package/src/types/auth/TidHeader.ts +12 -0
  390. package/src/types/auth/TidParams.ts +36 -0
  391. package/src/types/auth/TidProvider.ts +19 -0
  392. package/src/types/data/CursoredData.ts +18 -0
  393. package/src/types/data/List.ts +27 -0
  394. package/src/types/data/Notification.ts +26 -0
  395. package/src/types/data/Tweet.ts +96 -0
  396. package/src/types/data/User.ts +48 -0
  397. package/src/types/params/Variables.ts +41 -0
  398. package/src/types/raw/base/Analytic.ts +26 -0
  399. package/src/types/raw/base/Cursor.ts +13 -0
  400. package/src/types/raw/base/LimitedVisibilityTweet.ts +40 -0
  401. package/src/types/raw/base/List.ts +50 -0
  402. package/src/types/raw/base/Media.ts +53 -0
  403. package/src/types/raw/base/Notification.ts +67 -0
  404. package/src/types/raw/base/Space.ts +35 -0
  405. package/src/types/raw/base/Tweet.ts +139 -0
  406. package/src/types/raw/base/User.ts +164 -0
  407. package/src/types/raw/composite/DataResult.ts +8 -0
  408. package/src/types/raw/composite/TimelineTweet.ts +14 -0
  409. package/src/types/raw/composite/TimelineUser.ts +13 -0
  410. package/src/types/raw/generic/Error.ts +35 -0
  411. package/src/types/raw/generic/Response.ts +13 -0
  412. package/src/types/raw/list/Details.ts +137 -0
  413. package/src/types/raw/list/Members.ts +154 -0
  414. package/src/types/raw/list/Tweets.ts +2296 -0
  415. package/src/types/raw/media/FinalizeUpload.ts +20 -0
  416. package/src/types/raw/media/InitalizeUpload.ts +12 -0
  417. package/src/types/raw/media/LiveVideoStream.ts +21 -0
  418. package/src/types/raw/space/Details.ts +359 -0
  419. package/src/types/raw/tweet/Details.ts +210 -0
  420. package/src/types/raw/tweet/Like.ts +14 -0
  421. package/src/types/raw/tweet/Likers.ts +200 -0
  422. package/src/types/raw/tweet/Post.ts +150 -0
  423. package/src/types/raw/tweet/Replies.ts +539 -0
  424. package/src/types/raw/tweet/Retweet.ts +31 -0
  425. package/src/types/raw/tweet/Retweeters.ts +208 -0
  426. package/src/types/raw/tweet/Schedule.ts +18 -0
  427. package/src/types/raw/tweet/Search.ts +597 -0
  428. package/src/types/raw/tweet/Unlike.ts +14 -0
  429. package/src/types/raw/tweet/Unpost.ts +20 -0
  430. package/src/types/raw/tweet/Unretweet.ts +31 -0
  431. package/src/types/raw/tweet/Unschedule.ts +14 -0
  432. package/src/types/raw/user/Affiliates.ts +179 -0
  433. package/src/types/raw/user/Analytics.ts +39 -0
  434. package/src/types/raw/user/Bookmarks.ts +637 -0
  435. package/src/types/raw/user/Details.ts +185 -0
  436. package/src/types/raw/user/Follow.ts +280 -0
  437. package/src/types/raw/user/Followed.ts +1942 -0
  438. package/src/types/raw/user/Followers.ts +215 -0
  439. package/src/types/raw/user/Following.ts +215 -0
  440. package/src/types/raw/user/Highlights.ts +1287 -0
  441. package/src/types/raw/user/Likes.ts +1254 -0
  442. package/src/types/raw/user/Media.ts +1738 -0
  443. package/src/types/raw/user/Notifications.ts +175 -0
  444. package/src/types/raw/user/Recommended.ts +2319 -0
  445. package/src/types/raw/user/Scheduled.ts +37 -0
  446. package/src/types/raw/user/Subscriptions.ts +176 -0
  447. package/src/types/raw/user/Tweets.ts +1254 -0
  448. package/src/types/raw/user/TweetsAndReplies.ts +1254 -0
  449. package/src/types/raw/user/Unfollow.ts +280 -0
  450. package/tsconfig.json +7 -5
  451. package/.eslintignore +0 -3
  452. package/dist/commands/Auth.d.ts +0 -10
  453. package/dist/commands/Auth.js +0 -101
  454. package/dist/commands/Auth.js.map +0 -1
  455. package/dist/models/errors/DataValidationError.d.ts +0 -30
  456. package/dist/models/errors/DataValidationError.js +0 -34
  457. package/dist/models/errors/DataValidationError.js.map +0 -1
  458. package/dist/services/public/AuthService.d.ts +0 -91
  459. package/dist/services/public/AuthService.js +0 -205
  460. package/dist/services/public/AuthService.js.map +0 -1
  461. package/dist/types/ReturnTypes.d.ts +0 -21
  462. package/dist/types/ReturnTypes.js.map +0 -1
  463. package/src/commands/Auth.ts +0 -46
  464. package/src/models/errors/DataValidationError.ts +0 -44
  465. package/src/types/ReturnTypes.ts +0 -24
@@ -1,330 +1,28 @@
1
- import {
2
- IsArray,
3
- IsBoolean,
4
- IsDate,
5
- IsEmpty,
6
- IsNotEmpty,
7
- IsNumber,
8
- IsNumberString,
9
- IsObject,
10
- IsOptional,
11
- IsString,
12
- Max,
13
- Min,
14
- validateSync,
15
- } from 'class-validator';
16
-
17
- import { ESearchResultType, TweetFilter as TweetFilterCore } from 'rettiwt-core';
18
-
19
1
  import { EResourceType } from '../../enums/Resource';
20
- import { DataValidationError } from '../errors/DataValidationError';
2
+ import { IFetchArgs, ITweetFilter } from '../../types/args/FetchArgs';
21
3
 
22
4
  /**
23
5
  * Options specifying the data that is to be fetched.
24
6
  *
25
7
  * @public
26
8
  */
27
- export class FetchArgs {
28
- /**
29
- * The number of data items to fetch.
30
- *
31
- * @remarks
32
- * - Works only for cursored resources.
33
- * - Must be \<= 20 for:
34
- * - {@link EResourceType.USER_TIMELINE}
35
- * - {@link EResourceType.USER_TIMELINE}
36
- * - {@link EResourceType.USER_TIMELINE_AND_REPLIES}
37
- * - Must be \<= 100 for all other cursored resources.
38
- * - Due a bug on Twitter's end, count does not work for {@link EResourceType.USER_FOLLOWERS} and {@link EResourceType.USER_FOLLOWING}.
39
- * - Has not effect for:
40
- * - {@link EResourceType.USER_FEED_FOLLOWED}
41
- * - {@link EResourceType.USER_FEED_RECOMMENDED}
42
- */
43
- @IsEmpty({
44
- groups: [
45
- EResourceType.TWEET_DETAILS,
46
- EResourceType.TWEET_DETAILS_ALT,
47
- EResourceType.USER_DETAILS_BY_ID,
48
- EResourceType.USER_DETAILS_BY_USERNAME,
49
- EResourceType.USER_FEED_FOLLOWED,
50
- EResourceType.USER_FEED_RECOMMENDED,
51
- ],
52
- })
53
- @IsOptional({
54
- groups: [
55
- EResourceType.LIST_MEMBERS,
56
- EResourceType.LIST_TWEETS,
57
- EResourceType.TWEET_RETWEETERS,
58
- EResourceType.TWEET_SEARCH,
59
- EResourceType.USER_BOOKMARKS,
60
- EResourceType.USER_FOLLOWERS,
61
- EResourceType.USER_FOLLOWING,
62
- EResourceType.USER_HIGHLIGHTS,
63
- EResourceType.USER_LIKES,
64
- EResourceType.USER_MEDIA,
65
- EResourceType.USER_NOTIFICATIONS,
66
- EResourceType.USER_SUBSCRIPTIONS,
67
- EResourceType.USER_TIMELINE,
68
- EResourceType.USER_TIMELINE_AND_REPLIES,
69
- ],
70
- })
71
- @Min(1, {
72
- groups: [
73
- EResourceType.LIST_MEMBERS,
74
- EResourceType.LIST_TWEETS,
75
- EResourceType.TWEET_RETWEETERS,
76
- EResourceType.TWEET_SEARCH,
77
- EResourceType.USER_BOOKMARKS,
78
- EResourceType.USER_FOLLOWERS,
79
- EResourceType.USER_FOLLOWING,
80
- EResourceType.USER_HIGHLIGHTS,
81
- EResourceType.USER_LIKES,
82
- EResourceType.USER_MEDIA,
83
- EResourceType.USER_NOTIFICATIONS,
84
- EResourceType.USER_SUBSCRIPTIONS,
85
- EResourceType.USER_TIMELINE,
86
- EResourceType.USER_TIMELINE_AND_REPLIES,
87
- ],
88
- })
89
- @Max(100, {
90
- groups: [
91
- EResourceType.LIST_MEMBERS,
92
- EResourceType.LIST_TWEETS,
93
- EResourceType.TWEET_RETWEETERS,
94
- EResourceType.USER_BOOKMARKS,
95
- EResourceType.USER_FOLLOWERS,
96
- EResourceType.USER_FOLLOWING,
97
- EResourceType.USER_HIGHLIGHTS,
98
- EResourceType.USER_LIKES,
99
- EResourceType.USER_MEDIA,
100
- EResourceType.USER_SUBSCRIPTIONS,
101
- ],
102
- })
103
- @Max(40, {
104
- groups: [EResourceType.USER_NOTIFICATIONS],
105
- })
106
- @Max(20, {
107
- groups: [EResourceType.TWEET_SEARCH, EResourceType.USER_TIMELINE, EResourceType.USER_TIMELINE_AND_REPLIES],
108
- })
9
+ export class FetchArgs implements IFetchArgs {
109
10
  public count?: number;
110
-
111
- /**
112
- * The cursor to the batch of data to fetch.
113
- *
114
- * @remarks
115
- * - May be used for cursored resources.
116
- * - Has no effect for other resources.
117
- */
118
- @IsEmpty({
119
- groups: [
120
- EResourceType.TWEET_DETAILS,
121
- EResourceType.TWEET_DETAILS_ALT,
122
- EResourceType.USER_DETAILS_BY_ID,
123
- EResourceType.USER_DETAILS_BY_USERNAME,
124
- ],
125
- })
126
- @IsOptional({
127
- groups: [
128
- EResourceType.LIST_MEMBERS,
129
- EResourceType.LIST_TWEETS,
130
- EResourceType.TWEET_RETWEETERS,
131
- EResourceType.TWEET_SEARCH,
132
- EResourceType.USER_BOOKMARKS,
133
- EResourceType.USER_FEED_FOLLOWED,
134
- EResourceType.USER_FEED_RECOMMENDED,
135
- EResourceType.USER_FOLLOWING,
136
- EResourceType.USER_FOLLOWERS,
137
- EResourceType.USER_HIGHLIGHTS,
138
- EResourceType.USER_LIKES,
139
- EResourceType.USER_MEDIA,
140
- EResourceType.USER_NOTIFICATIONS,
141
- EResourceType.USER_SUBSCRIPTIONS,
142
- EResourceType.USER_TIMELINE,
143
- EResourceType.USER_TIMELINE_AND_REPLIES,
144
- ],
145
- })
146
- @IsString({
147
- groups: [
148
- EResourceType.LIST_MEMBERS,
149
- EResourceType.LIST_TWEETS,
150
- EResourceType.TWEET_RETWEETERS,
151
- EResourceType.TWEET_SEARCH,
152
- EResourceType.USER_BOOKMARKS,
153
- EResourceType.USER_FEED_FOLLOWED,
154
- EResourceType.USER_FEED_RECOMMENDED,
155
- EResourceType.USER_FOLLOWING,
156
- EResourceType.USER_FOLLOWERS,
157
- EResourceType.USER_HIGHLIGHTS,
158
- EResourceType.USER_LIKES,
159
- EResourceType.USER_MEDIA,
160
- EResourceType.USER_NOTIFICATIONS,
161
- EResourceType.USER_SUBSCRIPTIONS,
162
- EResourceType.USER_TIMELINE,
163
- EResourceType.USER_TIMELINE_AND_REPLIES,
164
- ],
165
- })
166
11
  public cursor?: string;
167
-
168
- /**
169
- * The filter for searching tweets.
170
- *
171
- * @remarks
172
- * Required when searching for tweets using {@link EResourceType.TWEET_SEARCH}.
173
- */
174
- @IsEmpty({
175
- groups: [
176
- EResourceType.LIST_MEMBERS,
177
- EResourceType.LIST_TWEETS,
178
- EResourceType.TWEET_DETAILS,
179
- EResourceType.TWEET_DETAILS_ALT,
180
- EResourceType.TWEET_RETWEETERS,
181
- EResourceType.USER_BOOKMARKS,
182
- EResourceType.USER_DETAILS_BY_USERNAME,
183
- EResourceType.USER_DETAILS_BY_ID,
184
- EResourceType.USER_FEED_FOLLOWED,
185
- EResourceType.USER_FEED_RECOMMENDED,
186
- EResourceType.USER_FOLLOWING,
187
- EResourceType.USER_FOLLOWERS,
188
- EResourceType.USER_HIGHLIGHTS,
189
- EResourceType.USER_LIKES,
190
- EResourceType.USER_MEDIA,
191
- EResourceType.USER_NOTIFICATIONS,
192
- EResourceType.USER_SUBSCRIPTIONS,
193
- EResourceType.USER_TIMELINE,
194
- EResourceType.USER_TIMELINE_AND_REPLIES,
195
- ],
196
- })
197
- @IsNotEmpty({ groups: [EResourceType.TWEET_SEARCH] })
198
- @IsObject({ groups: [EResourceType.TWEET_SEARCH] })
199
12
  public filter?: TweetFilter;
200
-
201
- /**
202
- * The id of the target resource.
203
- *
204
- * @remarks
205
- * - Required for all resources except {@link EResourceType.TWEET_SEARCH} and {@link EResourceType.USER_TIMELINE_RECOMMENDED}.
206
- * - For {@link EResourceType.USER_DETAILS_BY_USERNAME}, can be alphanumeric, while for others, is strictly numeric.
207
- */
208
- @IsEmpty({
209
- groups: [
210
- EResourceType.USER_BOOKMARKS,
211
- EResourceType.USER_FEED_FOLLOWED,
212
- EResourceType.USER_FEED_RECOMMENDED,
213
- EResourceType.USER_NOTIFICATIONS,
214
- ],
215
- })
216
- @IsNotEmpty({
217
- groups: [
218
- EResourceType.LIST_MEMBERS,
219
- EResourceType.LIST_TWEETS,
220
- EResourceType.TWEET_DETAILS,
221
- EResourceType.TWEET_DETAILS_ALT,
222
- EResourceType.TWEET_RETWEETERS,
223
- EResourceType.USER_DETAILS_BY_USERNAME,
224
- EResourceType.USER_DETAILS_BY_ID,
225
- EResourceType.USER_FOLLOWERS,
226
- EResourceType.USER_FOLLOWING,
227
- EResourceType.USER_HIGHLIGHTS,
228
- EResourceType.USER_LIKES,
229
- EResourceType.USER_MEDIA,
230
- EResourceType.USER_SUBSCRIPTIONS,
231
- EResourceType.USER_TIMELINE,
232
- EResourceType.USER_TIMELINE_AND_REPLIES,
233
- ],
234
- })
235
- @IsString({
236
- groups: [
237
- EResourceType.LIST_MEMBERS,
238
- EResourceType.LIST_TWEETS,
239
- EResourceType.TWEET_DETAILS,
240
- EResourceType.TWEET_DETAILS_ALT,
241
- EResourceType.TWEET_RETWEETERS,
242
- EResourceType.USER_DETAILS_BY_USERNAME,
243
- EResourceType.USER_DETAILS_BY_ID,
244
- EResourceType.USER_FOLLOWING,
245
- EResourceType.USER_FOLLOWERS,
246
- EResourceType.USER_HIGHLIGHTS,
247
- EResourceType.USER_LIKES,
248
- EResourceType.USER_MEDIA,
249
- EResourceType.USER_SUBSCRIPTIONS,
250
- EResourceType.USER_TIMELINE,
251
- EResourceType.USER_TIMELINE_AND_REPLIES,
252
- ],
253
- })
254
- @IsNumberString(undefined, {
255
- groups: [
256
- EResourceType.LIST_MEMBERS,
257
- EResourceType.LIST_TWEETS,
258
- EResourceType.TWEET_DETAILS,
259
- EResourceType.TWEET_DETAILS_ALT,
260
- EResourceType.TWEET_RETWEETERS,
261
- EResourceType.USER_DETAILS_BY_ID,
262
- EResourceType.USER_FOLLOWERS,
263
- EResourceType.USER_FOLLOWING,
264
- EResourceType.USER_HIGHLIGHTS,
265
- EResourceType.USER_LIKES,
266
- EResourceType.USER_MEDIA,
267
- EResourceType.USER_SUBSCRIPTIONS,
268
- EResourceType.USER_TIMELINE,
269
- EResourceType.USER_TIMELINE_AND_REPLIES,
270
- ],
271
- })
272
13
  public id?: string;
273
-
274
- /**
275
- * The type of search results to fetch. Can be one of:
276
- * - {@link EResourceType.LATEST}, for latest search results.
277
- * - {@link EResourceType.TOP}, for top search results.
278
- *
279
- * @defaultValue {@link ESearchResultType.LATEST}.
280
- *
281
- * @remarks
282
- * - Applicable only for {@link EResourceType.TWEET_SEARCH}.
283
- */
284
- @IsEmpty({
285
- groups: [
286
- EResourceType.LIST_MEMBERS,
287
- EResourceType.LIST_TWEETS,
288
- EResourceType.TWEET_DETAILS,
289
- EResourceType.TWEET_DETAILS_ALT,
290
- EResourceType.TWEET_RETWEETERS,
291
- EResourceType.USER_BOOKMARKS,
292
- EResourceType.USER_DETAILS_BY_USERNAME,
293
- EResourceType.USER_DETAILS_BY_ID,
294
- EResourceType.USER_FEED_FOLLOWED,
295
- EResourceType.USER_FEED_RECOMMENDED,
296
- EResourceType.USER_FOLLOWING,
297
- EResourceType.USER_FOLLOWERS,
298
- EResourceType.USER_HIGHLIGHTS,
299
- EResourceType.USER_LIKES,
300
- EResourceType.USER_MEDIA,
301
- EResourceType.USER_NOTIFICATIONS,
302
- EResourceType.USER_SUBSCRIPTIONS,
303
- EResourceType.USER_TIMELINE,
304
- EResourceType.USER_TIMELINE_AND_REPLIES,
305
- ],
306
- })
307
- @IsOptional({ groups: [EResourceType.TWEET_SEARCH] })
308
- public results?: ESearchResultType;
14
+ public ids?: string[];
309
15
 
310
16
  /**
311
17
  * @param resource - The resource to be fetched.
312
18
  * @param args - Additional user-defined arguments for fetching the resource.
313
19
  */
314
- public constructor(resource: EResourceType, args: FetchArgs) {
20
+ public constructor(resource: EResourceType, args: IFetchArgs) {
315
21
  this.id = args.id;
22
+ this.ids = args.ids;
316
23
  this.count = args.count;
317
24
  this.cursor = args.cursor;
318
25
  this.filter = args.filter ? new TweetFilter(args.filter) : undefined;
319
- this.results = args.results;
320
-
321
- // Validating this object
322
- const validationResult = validateSync(this, { groups: [resource] });
323
-
324
- // If valiation error occured
325
- if (validationResult.length) {
326
- throw new DataValidationError(validationResult);
327
- }
328
26
  }
329
27
  }
330
28
 
@@ -333,163 +31,115 @@ export class FetchArgs {
333
31
  *
334
32
  * @public
335
33
  */
336
- export class TweetFilter extends TweetFilterCore {
337
- /** The date upto which tweets are to be searched. */
338
- @IsOptional()
339
- @IsDate()
34
+ export class TweetFilter implements ITweetFilter {
340
35
  public endDate?: Date;
341
-
342
- /** The list of words to exclude from search. */
343
- @IsOptional()
344
- @IsArray()
345
- @IsString({ each: true })
346
36
  public excludeWords?: string[];
347
-
348
- /**
349
- * The list of usernames whose tweets are to be searched.
350
- *
351
- * @remarks
352
- * '\@' must be excluded from the username!
353
- */
354
- @IsOptional()
355
- @IsArray()
356
- @IsString({ each: true })
357
37
  public fromUsers?: string[];
358
-
359
- /**
360
- * The list of hashtags to search.
361
- *
362
- * @remarks
363
- * '#' must be excluded from the hashtag!
364
- */
365
- @IsOptional()
366
- @IsArray()
367
- @IsString({ each: true })
368
38
  public hashtags?: string[];
369
-
370
- /** The exact phrase to search. */
371
- @IsOptional()
372
- @IsString()
373
39
  public includePhrase?: string;
374
-
375
- /** The list of words to search. */
376
- @IsOptional()
377
- @IsArray()
378
- @IsString({ each: true })
379
40
  public includeWords?: string[];
380
-
381
- /** The language of the tweets to search. */
382
- @IsOptional()
383
- @IsString()
384
41
  public language?: string;
385
-
386
- /**
387
- * Whether to fetch tweets that are links or not.
388
- *
389
- * @defaultValue true
390
- */
391
- @IsOptional()
392
- @IsBoolean()
393
42
  public links?: boolean;
394
-
395
- /** The list from which tweets are to be searched. */
396
- @IsOptional()
397
- @IsNumberString()
398
43
  public list?: string;
399
-
400
- /** The id of the tweet, before which the tweets are to be searched. */
401
- @IsOptional()
402
- @IsNumberString()
403
44
  public maxId?: string;
404
-
405
- /**
406
- * The list of username mentioned in the tweets to search.
407
- *
408
- * @remarks
409
- * '\@' must be excluded from the username!
410
- */
411
- @IsOptional()
412
- @IsArray()
413
- @IsString({ each: true })
414
45
  public mentions?: string[];
415
-
416
- /** The minimun number of likes to search by. */
417
- @IsOptional()
418
- @IsNumber()
419
46
  public minLikes?: number;
420
-
421
- /** The minimum number of replies to search by. */
422
- @IsOptional()
423
- @IsNumber()
424
47
  public minReplies?: number;
425
-
426
- /** The minimum number of retweets to search by. */
427
- @IsOptional()
428
- @IsNumber()
429
48
  public minRetweets?: number;
430
-
431
- /** The optional words to search. */
432
- @IsOptional()
433
- @IsArray()
434
- @IsString({ each: true })
435
49
  public optionalWords?: string[];
436
-
437
- /** The id of the tweet which is quoted in the tweets to search. */
438
- @IsOptional()
439
- @IsNumberString()
440
50
  public quoted?: string;
441
-
442
- /**
443
- * Whether to fetch tweets that are replies or not.
444
- *
445
- * @defaultValue true
446
- */
447
- @IsOptional()
448
- @IsBoolean()
449
51
  public replies?: boolean;
450
-
451
- /** The id of the tweet, after which the tweets are to be searched. */
452
- @IsOptional()
453
- @IsNumberString()
454
52
  public sinceId?: string;
455
-
456
- /** The date starting from which tweets are to be searched. */
457
- @IsOptional()
458
- @IsDate()
459
53
  public startDate?: Date;
54
+ public toUsers?: string[];
55
+ public top?: boolean;
460
56
 
461
57
  /**
462
- * The list of username to whom the tweets to be searched, are adressed.
463
- *
464
- * @remarks
465
- * '\@' must be excluded from the username!
58
+ * @param filter - The filter configuration.
466
59
  */
467
- @IsOptional()
468
- @IsArray()
469
- @IsString({ each: true })
470
- public toUsers?: string[];
60
+ public constructor(filter: ITweetFilter) {
61
+ this.endDate = filter.endDate;
62
+ this.excludeWords = filter.excludeWords;
63
+ this.fromUsers = filter.fromUsers;
64
+ this.hashtags = filter.hashtags;
65
+ this.includePhrase = filter.includePhrase;
66
+ this.language = filter.language;
67
+ this.links = filter.links;
68
+ this.list = filter.list;
69
+ this.replies = filter.replies;
70
+ this.mentions = filter.mentions;
71
+ this.quoted = filter.quoted;
72
+ this.sinceId = filter.sinceId;
73
+ this.maxId = filter.maxId;
74
+ this.minLikes = filter.minLikes;
75
+ this.minReplies = filter.minReplies;
76
+ this.minRetweets = filter.minRetweets;
77
+ this.optionalWords = filter.optionalWords;
78
+ this.startDate = filter.startDate;
79
+ this.toUsers = filter.toUsers;
80
+ this.top = filter.top;
81
+ this.includeWords = filter.includeWords;
82
+ }
471
83
 
472
84
  /**
473
- * Whether to fetch top or not.
85
+ * Convert Date object to Twitter string representation.
86
+ * eg - 2023-06-23_11:21:06_UTC
474
87
  *
475
- * @defaultValue true
88
+ * @param date - The date object to convert.
89
+ * @returns The Twitter string representation of the date.
476
90
  */
477
- @IsOptional()
478
- @IsBoolean()
479
- public top?: boolean;
91
+ private static dateToTwitterString(date: Date): string {
92
+ // Converting localized date to UTC date
93
+ const utc = new Date(
94
+ Date.UTC(
95
+ date.getUTCFullYear(),
96
+ date.getUTCMonth(),
97
+ date.getUTCDate(),
98
+ date.getUTCHours(),
99
+ date.getUTCMinutes(),
100
+ date.getUTCSeconds(),
101
+ ),
102
+ );
103
+
104
+ /**
105
+ * To convert ISO 8601 date string to Twitter date string:
106
+ *
107
+ * - 'T' between date and time substring is replace with '_'.
108
+ * - Milliseconds substring is omitted.
109
+ * - '_UTC' is appended as suffix.
110
+ */
111
+ return utc.toISOString().replace(/T/, '_').replace(/\..+/, '') + '_UTC';
112
+ }
480
113
 
481
114
  /**
482
- * @param filter - The filter to use for searching tweets.
115
+ * @returns The string representation of 'this' filter.
483
116
  */
484
- public constructor(filter: TweetFilter) {
485
- super(filter);
486
-
487
- // Validating this object
488
- const validationResult = validateSync(this);
489
-
490
- // If valiation error occured
491
- if (validationResult.length) {
492
- throw new DataValidationError(validationResult);
493
- }
117
+ public toString(): string {
118
+ return (
119
+ [
120
+ this.includeWords ? this.includeWords.join(' ') : '',
121
+ this.includePhrase ? `"${this.includePhrase}"` : '',
122
+ this.optionalWords ? `(${this.optionalWords.join(' OR ')})` : '',
123
+ this.excludeWords ? `${this.excludeWords.map((word) => '-' + word).join(' ')}` : '',
124
+ this.hashtags ? `(${this.hashtags.map((hashtag) => '#' + hashtag).join(' OR ')})` : '',
125
+ this.fromUsers ? `(${this.fromUsers.map((user) => `from:${user}`).join(' OR ')})` : '',
126
+ this.toUsers ? `(${this.toUsers.map((user) => `to:${user}`).join(' OR ')})` : '',
127
+ this.list ? `list:${this.list}` : '',
128
+ this.mentions ? `(${this.mentions.map((mention) => '@' + mention).join(' OR ')})` : '',
129
+ this.minReplies ? `min_replies:${this.minReplies}` : '',
130
+ this.minLikes ? `min_faves:${this.minLikes}` : '',
131
+ this.minRetweets ? `min_retweets:${this.minRetweets}` : '',
132
+ this.language ? `lang:${this.language}` : '',
133
+ this.startDate ? `since:${TweetFilter.dateToTwitterString(this.startDate)}` : '',
134
+ this.endDate ? `until:${TweetFilter.dateToTwitterString(this.endDate)}` : '',
135
+ this.sinceId ? `since_id:${this.sinceId}` : '',
136
+ this.maxId ? `max_id:${this.maxId}` : '',
137
+ this.quoted ? `quoted_tweet_id:${this.quoted}` : '',
138
+ ]
139
+ .filter((item) => item !== '()' && item !== '')
140
+ .join(' ') +
141
+ (this.links == false ? ' -filter:links' : '') +
142
+ (this.replies == false ? ' -filter:replies' : '')
143
+ );
494
144
  }
495
145
  }