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,55 +1,29 @@
1
- import { IUser as IRawUser, ITimelineUser, IUser } from 'rettiwt-core';
2
-
3
1
  import { ELogActions } from '../../enums/Logging';
4
2
  import { findByFilter } from '../../helper/JsonUtils';
5
3
  import { LogService } from '../../services/internal/LogService';
4
+ import { IUser } from '../../types/data/User';
5
+ import { IUser as IRawUser } from '../../types/raw/base/User';
6
+ import { ITimelineUser as IRawTimelineUser } from '../../types/raw/composite/TimelineUser';
6
7
 
7
8
  /**
8
9
  * The details of a single user.
9
10
  *
10
11
  * @public
11
12
  */
12
- export class User {
13
- /** The creation date of user's account. */
13
+ export class User implements IUser {
14
14
  public createdAt: string;
15
-
16
- /** The user's description. */
17
15
  public description?: string;
18
-
19
- /** The number of followers of the user. */
20
16
  public followersCount: number;
21
-
22
- /** The number of following of the user. */
23
17
  public followingsCount: number;
24
-
25
- /** The full name of the user. */
26
18
  public fullName: string;
27
-
28
- /** The rest id of the user. */
29
19
  public id: string;
30
-
31
- /** Whether the account is verified or not. */
32
20
  public isVerified: boolean;
33
-
34
- /** The number of tweets liked by the user. */
35
21
  public likeCount: number;
36
-
37
- /** The location of user as provided by user. */
38
22
  public location?: string;
39
-
40
- /** The rest id of the tweet pinned in the user's profile. */
41
23
  public pinnedTweet?: string;
42
-
43
- /** The url of the profile banner image. */
44
24
  public profileBanner?: string;
45
-
46
- /** The url of the profile image. */
47
25
  public profileImage: string;
48
-
49
- /** The number of tweets made by the user. */
50
26
  public statusesCount: number;
51
-
52
- /** The username/screenname of the user. */
53
27
  public userName: string;
54
28
 
55
29
  /**
@@ -59,7 +33,7 @@ export class User {
59
33
  this.id = user.rest_id;
60
34
  this.userName = user.legacy.screen_name;
61
35
  this.fullName = user.legacy.name;
62
- this.createdAt = user.legacy.created_at;
36
+ this.createdAt = new Date(user.legacy.created_at).toISOString();
63
37
  this.description = user.legacy.description.length ? user.legacy.description : undefined;
64
38
  this.isVerified = user.is_blue_verified;
65
39
  this.likeCount = user.legacy.favourites_count;
@@ -73,27 +47,26 @@ export class User {
73
47
  }
74
48
 
75
49
  /**
76
- * Extracts and deserializes the list of users from the given raw response data.
50
+ * Extracts and deserializes multiple target users from the given raw response data.
77
51
  *
78
52
  * @param response - The raw response data.
53
+ * @param ids - The ids of the target users.
79
54
  *
80
- * @returns The deserialized list of users.
81
- *
82
- * @internal
55
+ * @returns The target deserialized users.
83
56
  */
84
- public static list(response: NonNullable<unknown>): User[] {
85
- const users: User[] = [];
57
+ public static multiple(response: NonNullable<unknown>, ids: string[]): User[] {
58
+ let users: User[] = [];
86
59
 
87
60
  // Extracting the matching data
88
- const extract = findByFilter<ITimelineUser>(response, '__typename', 'TimelineUser');
61
+ const extract = findByFilter<IRawUser>(response, '__typename', 'User');
89
62
 
90
63
  // Deserializing valid data
91
64
  for (const item of extract) {
92
- if (item.user_results?.result?.legacy) {
65
+ if (item.legacy && item.legacy.created_at) {
93
66
  // Logging
94
- LogService.log(ELogActions.DESERIALIZE, { id: item.user_results.result.rest_id });
67
+ LogService.log(ELogActions.DESERIALIZE, { id: item.rest_id });
95
68
 
96
- users.push(new User(item.user_results.result));
69
+ users.push(new User(item));
97
70
  } else {
98
71
  // Logging
99
72
  LogService.log(ELogActions.WARNING, {
@@ -103,6 +76,11 @@ export class User {
103
76
  }
104
77
  }
105
78
 
79
+ // Filtering only required user, if required
80
+ if (ids && ids.length) {
81
+ users = users.filter((user) => ids.includes(user.id));
82
+ }
83
+
106
84
  return users;
107
85
  }
108
86
 
@@ -112,14 +90,12 @@ export class User {
112
90
  * @param response - The raw response data.
113
91
  *
114
92
  * @returns The target deserialized user.
115
- *
116
- * @internal
117
93
  */
118
94
  public static single(response: NonNullable<unknown>): User | undefined {
119
95
  const users: User[] = [];
120
96
 
121
97
  // Extracting the matching data
122
- const extract = findByFilter<IUser>(response, '__typename', 'User');
98
+ const extract = findByFilter<IRawUser>(response, '__typename', 'User');
123
99
 
124
100
  // Deserializing valid data
125
101
  for (const item of extract) {
@@ -139,4 +115,58 @@ export class User {
139
115
 
140
116
  return users.length ? users[0] : undefined;
141
117
  }
118
+
119
+ /**
120
+ * Extracts and deserializes the timeline of users from the given raw response data.
121
+ *
122
+ * @param response - The raw response data.
123
+ *
124
+ * @returns The deserialized timeline of users.
125
+ */
126
+ public static timeline(response: NonNullable<unknown>): User[] {
127
+ const users: User[] = [];
128
+
129
+ // Extracting the matching data
130
+ const extract = findByFilter<IRawTimelineUser>(response, '__typename', 'TimelineUser');
131
+
132
+ // Deserializing valid data
133
+ for (const item of extract) {
134
+ if (item.user_results?.result?.legacy) {
135
+ // Logging
136
+ LogService.log(ELogActions.DESERIALIZE, { id: item.user_results.result.rest_id });
137
+
138
+ users.push(new User(item.user_results.result));
139
+ } else {
140
+ // Logging
141
+ LogService.log(ELogActions.WARNING, {
142
+ action: ELogActions.DESERIALIZE,
143
+ message: `User not found, skipping`,
144
+ });
145
+ }
146
+ }
147
+
148
+ return users;
149
+ }
150
+
151
+ /**
152
+ * @returns A serializable JSON representation of `this` object.
153
+ */
154
+ public toJSON(): IUser {
155
+ return {
156
+ createdAt: this.createdAt,
157
+ description: this.description,
158
+ followersCount: this.followersCount,
159
+ followingsCount: this.followingsCount,
160
+ fullName: this.fullName,
161
+ id: this.id,
162
+ isVerified: this.isVerified,
163
+ likeCount: this.likeCount,
164
+ location: this.location,
165
+ pinnedTweet: this.pinnedTweet,
166
+ profileBanner: this.profileBanner,
167
+ profileImage: this.profileImage,
168
+ statusesCount: this.statusesCount,
169
+ userName: this.userName,
170
+ };
171
+ }
142
172
  }
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * Represents an error that arises inside the package.
3
- *
4
- * @internal
5
3
  */
6
4
  export class RettiwtError extends Error {
5
+ /**
6
+ * @param message - The error message.
7
+ */
7
8
  public constructor(message?: string) {
8
9
  super(message);
9
10
 
@@ -0,0 +1,62 @@
1
+ import { IMediaEntityVariable, IMediaVariable, IReplyVariable } from '../../types/params/Variables';
2
+ import { NewTweetMedia } from '../args/PostArgs';
3
+
4
+ /**
5
+ * Media to be sent as payload.
6
+ *
7
+ * @internal
8
+ */
9
+ export class MediaVariable implements IMediaVariable {
10
+ /* eslint-disable @typescript-eslint/naming-convention */
11
+ public media_entities: MediaEntityVariable[];
12
+ public possibly_sensitive: boolean;
13
+ /* eslint-enable @typescript-eslint/naming-convention */
14
+
15
+ /**
16
+ * @param media - The list of NewTweetMedia objects specifying the media items to be sent in the Tweet.
17
+ */
18
+ public constructor(media: NewTweetMedia[]) {
19
+ this.media_entities = media.map((item) => new MediaEntityVariable(item));
20
+ this.possibly_sensitive = false;
21
+ }
22
+ }
23
+
24
+ /**
25
+ * Each media item in the media payload.
26
+ *
27
+ * @internal
28
+ */
29
+ export class MediaEntityVariable implements IMediaEntityVariable {
30
+ /* eslint-disable @typescript-eslint/naming-convention */
31
+ public media_id: string;
32
+ public tagged_users: string[];
33
+ /* eslint-enable @typescript-eslint/naming-convention */
34
+
35
+ /**
36
+ * @param media - The NewTweetMedia object specifying the details of the media item to be included in the payload.
37
+ */
38
+ public constructor(media: NewTweetMedia) {
39
+ this.media_id = media.id;
40
+ this.tagged_users = media.tags ?? [];
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Reply specific details to be sent in payload.
46
+ *
47
+ * @internal
48
+ */
49
+ export class ReplyVariable implements IReplyVariable {
50
+ /* eslint-disable @typescript-eslint/naming-convention */
51
+ public exclude_reply_user_ids: string[];
52
+ public in_reply_to_tweet_id: string;
53
+ /* eslint-enable @typescript-eslint/naming-convention */
54
+
55
+ /**
56
+ * @param replyTo - The id of the Tweet to which this Tweet is a reply.
57
+ */
58
+ public constructor(replyTo: string) {
59
+ this.in_reply_to_tweet_id = replyTo;
60
+ this.exclude_reply_user_ids = [];
61
+ }
62
+ }
@@ -0,0 +1,121 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+
3
+ /**
4
+ * Collection of requests related to lists.
5
+ *
6
+ * @public
7
+ */
8
+ export class ListRequests {
9
+ /**
10
+ * @param id - The id of the list whose details are to be fetched.
11
+ */
12
+ public static details(id: string): AxiosRequestConfig {
13
+ return {
14
+ method: 'get',
15
+ url: 'https://x.com/i/api/graphql/gO1_eYPohKYHwCG2m-1ZnQ/ListByRestId',
16
+ params: {
17
+ /* eslint-disable @typescript-eslint/naming-convention */
18
+ variables: JSON.stringify({ listId: id }),
19
+ features: JSON.stringify({
20
+ rweb_lists_timeline_redesign_enabled: true,
21
+ responsive_web_graphql_exclude_directive_enabled: true,
22
+ verified_phone_label_enabled: true,
23
+ responsive_web_graphql_skip_user_profile_image_extensions_enabled: false,
24
+ responsive_web_graphql_timeline_navigation_enabled: true,
25
+ }),
26
+ /* eslint-enable @typescript-eslint/naming-convention */
27
+ },
28
+ paramsSerializer: { encode: encodeURIComponent },
29
+ };
30
+ }
31
+
32
+ /**
33
+ * @param id - The id of the list whose members are to be fetched.
34
+ * @param count - The number of members to fetch. Must be \<= 100.
35
+ * @param cursor - The cursor to the batch of members to fetch.
36
+ */
37
+ public static members(id: string, count?: number, cursor?: string): AxiosRequestConfig {
38
+ return {
39
+ method: 'get',
40
+ url: 'https://x.com/i/api/graphql/dsJhIe3M0vCopjSfU6SlQw/ListMembers',
41
+ params: {
42
+ /* eslint-disable @typescript-eslint/naming-convention */
43
+ variables: JSON.stringify({
44
+ listId: id,
45
+ count: count,
46
+ cursor: cursor,
47
+ }),
48
+ features: JSON.stringify({
49
+ rweb_tipjar_consumption_enabled: true,
50
+ responsive_web_graphql_exclude_directive_enabled: true,
51
+ verified_phone_label_enabled: true,
52
+ creator_subscriptions_tweet_preview_api_enabled: true,
53
+ responsive_web_graphql_timeline_navigation_enabled: true,
54
+ responsive_web_graphql_skip_user_profile_image_extensions_enabled: false,
55
+ communities_web_enable_tweet_community_results_fetch: true,
56
+ c9s_tweet_anatomy_moderator_badge_enabled: true,
57
+ articles_preview_enabled: true,
58
+ responsive_web_edit_tweet_api_enabled: true,
59
+ graphql_is_translatable_rweb_tweet_is_translatable_enabled: true,
60
+ view_counts_everywhere_api_enabled: true,
61
+ longform_notetweets_consumption_enabled: true,
62
+ responsive_web_twitter_article_tweet_consumption_enabled: true,
63
+ tweet_awards_web_tipping_enabled: false,
64
+ creator_subscriptions_quote_tweet_preview_enabled: false,
65
+ freedom_of_speech_not_reach_fetch_enabled: true,
66
+ standardized_nudges_misinfo: true,
67
+ tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: true,
68
+ rweb_video_timestamps_enabled: true,
69
+ longform_notetweets_rich_text_read_enabled: true,
70
+ longform_notetweets_inline_media_enabled: true,
71
+ responsive_web_enhance_cards_enabled: false,
72
+ }),
73
+ /* eslint-enable @typescript-eslint/naming-convention */
74
+ },
75
+ };
76
+ }
77
+
78
+ /**
79
+ * @param id - The id of the list whose tweets are to be fetched.
80
+ * @param count - The number of tweets to fetch. Must be \<= 100.
81
+ * @param cursor - The cursor to the batch of tweets to fetch.
82
+ */
83
+ public static tweets(id: string, count?: number, cursor?: string): AxiosRequestConfig {
84
+ return {
85
+ method: 'get',
86
+ url: 'https://x.com/i/api/graphql/naCjgapXCSCsbZ7qnnItQA/ListLatestTweetsTimeline',
87
+ params: {
88
+ /* eslint-disable @typescript-eslint/naming-convention */
89
+ variables: JSON.stringify({
90
+ listId: id,
91
+ count: count,
92
+ cursor: cursor,
93
+ }),
94
+ features: JSON.stringify({
95
+ rweb_lists_timeline_redesign_enabled: true,
96
+ responsive_web_graphql_exclude_directive_enabled: true,
97
+ verified_phone_label_enabled: true,
98
+ creator_subscriptions_tweet_preview_api_enabled: true,
99
+ responsive_web_graphql_timeline_navigation_enabled: true,
100
+ responsive_web_graphql_skip_user_profile_image_extensions_enabled: false,
101
+ tweetypie_unmention_optimization_enabled: true,
102
+ responsive_web_edit_tweet_api_enabled: true,
103
+ graphql_is_translatable_rweb_tweet_is_translatable_enabled: true,
104
+ view_counts_everywhere_api_enabled: true,
105
+ longform_notetweets_consumption_enabled: true,
106
+ responsive_web_twitter_article_tweet_consumption_enabled: false,
107
+ tweet_awards_web_tipping_enabled: false,
108
+ freedom_of_speech_not_reach_fetch_enabled: true,
109
+ standardized_nudges_misinfo: true,
110
+ tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: true,
111
+ longform_notetweets_rich_text_read_enabled: true,
112
+ longform_notetweets_inline_media_enabled: true,
113
+ responsive_web_media_download_video_enabled: false,
114
+ responsive_web_enhance_cards_enabled: false,
115
+ }),
116
+ /* eslint-enable @typescript-eslint/naming-convention */
117
+ },
118
+ paramsSerializer: { encode: encodeURIComponent },
119
+ };
120
+ }
121
+ }
@@ -0,0 +1,67 @@
1
+ import fs from 'fs';
2
+
3
+ import { AxiosRequestConfig } from 'axios';
4
+ import FormData from 'form-data';
5
+
6
+ /**
7
+ * Collection of requests related to media.
8
+ *
9
+ * @public
10
+ */
11
+ export class MediaRequests {
12
+ /**
13
+ * @param id - The allocated id of the media item to be uploaded.
14
+ * @param media - The media item to upload.
15
+ */
16
+ public static appendUpload(id: string, media: string | ArrayBuffer): AxiosRequestConfig {
17
+ const data = new FormData();
18
+ data.append('media', typeof media == 'string' ? fs.createReadStream(media) : Buffer.from(media));
19
+ return {
20
+ method: 'post',
21
+ headers: { referer: 'https://x.com' },
22
+ url: 'https://upload.x.com/i/media/upload.json',
23
+ params: {
24
+ /* eslint-disable @typescript-eslint/naming-convention */
25
+ command: 'APPEND',
26
+ media_id: id,
27
+ segment_index: 0,
28
+ /* eslint-enable @typescript-eslint/naming-convention */
29
+ },
30
+ data: data,
31
+ };
32
+ }
33
+
34
+ /**
35
+ * @param id - The allocated id of the media item.
36
+ */
37
+ public static finalizeUpload(id: string): AxiosRequestConfig {
38
+ return {
39
+ method: 'post',
40
+ headers: { referer: 'https://x.com' },
41
+ url: 'https://upload.x.com/i/media/upload.json',
42
+ params: {
43
+ /* eslint-disable @typescript-eslint/naming-convention */
44
+ command: 'FINALIZE',
45
+ media_id: id,
46
+ /* eslint-enable @typescript-eslint/naming-convention */
47
+ },
48
+ };
49
+ }
50
+
51
+ /**
52
+ * @param size - The size (in bytes) of the media item to be uploaded.
53
+ */
54
+ public static initializeUpload(size: number): AxiosRequestConfig {
55
+ return {
56
+ method: 'post',
57
+ headers: { referer: 'https://x.com' },
58
+ url: 'https://upload.x.com/i/media/upload.json',
59
+ params: {
60
+ /* eslint-disable @typescript-eslint/naming-convention */
61
+ command: 'INIT',
62
+ total_bytes: size,
63
+ /* eslint-enable @typescript-eslint/naming-convention */
64
+ },
65
+ };
66
+ }
67
+ }