rettiwt-api 1.1.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/.github/workflows/build-docs.yml +22 -21
  2. package/.github/workflows/publish-to-npm.yml +29 -0
  3. package/README.md +52 -40
  4. package/dist/config/env.d.ts +5 -5
  5. package/dist/config/env.js +8 -8
  6. package/dist/enums/Errors.d.ts +20 -20
  7. package/dist/enums/Errors.js +27 -27
  8. package/dist/enums/HTTP.d.ts +17 -17
  9. package/dist/enums/HTTP.js +22 -22
  10. package/dist/graphql/enums/Errors.d.ts +21 -21
  11. package/dist/graphql/enums/Errors.js +28 -28
  12. package/dist/graphql/queries/RootQuery.d.ts +4 -4
  13. package/dist/graphql/queries/RootQuery.js +77 -77
  14. package/dist/graphql/resolvers/AccountResolver.d.ts +12 -12
  15. package/dist/graphql/resolvers/AccountResolver.js +83 -83
  16. package/dist/graphql/resolvers/ResolverBase.d.ts +16 -16
  17. package/dist/graphql/resolvers/ResolverBase.js +22 -22
  18. package/dist/graphql/resolvers/TweetResolver.d.ts +46 -46
  19. package/dist/graphql/resolvers/TweetResolver.js +311 -311
  20. package/dist/graphql/resolvers/UserResolver.d.ts +48 -48
  21. package/dist/graphql/resolvers/UserResolver.js +333 -333
  22. package/dist/graphql/resolvers/UserResolver.js.map +1 -1
  23. package/dist/graphql/types/Global.d.ts +4 -4
  24. package/dist/graphql/types/Global.js +12 -12
  25. package/dist/graphql/types/TweetTypes.d.ts +4 -4
  26. package/dist/graphql/types/TweetTypes.js +159 -159
  27. package/dist/graphql/types/UserTypes.d.ts +3 -3
  28. package/dist/graphql/types/UserTypes.js +136 -136
  29. package/dist/graphql/types/UserTypes.js.map +1 -1
  30. package/dist/index.d.ts +43 -43
  31. package/dist/index.js +70 -70
  32. package/dist/models/args/TweetFilter.d.ts +65 -59
  33. package/dist/models/args/TweetFilter.js +120 -100
  34. package/dist/models/args/TweetFilter.js.map +1 -1
  35. package/dist/models/args/TweetListArgs.d.ts +21 -21
  36. package/dist/models/args/TweetListArgs.js +53 -53
  37. package/dist/models/args/UserListArgs.d.ts +21 -21
  38. package/dist/models/args/UserListArgs.js +53 -53
  39. package/dist/models/auth/AuthCookie.d.ts +21 -21
  40. package/dist/models/auth/AuthCookie.js +32 -32
  41. package/dist/models/data/CursoredData.d.ts +34 -34
  42. package/dist/models/data/CursoredData.js +41 -41
  43. package/dist/models/data/Tweet.d.ts +53 -53
  44. package/dist/models/data/Tweet.js +103 -103
  45. package/dist/models/data/User.d.ts +41 -41
  46. package/dist/models/data/User.js +31 -31
  47. package/dist/models/errors/DataValidationError.d.ts +20 -20
  48. package/dist/models/errors/DataValidationError.js +22 -22
  49. package/dist/server.d.ts +1 -1
  50. package/dist/server.js +75 -75
  51. package/dist/services/auth/AccountService.d.ts +83 -83
  52. package/dist/services/auth/AccountService.js +411 -411
  53. package/dist/services/auth/AuthService.d.ts +31 -31
  54. package/dist/services/auth/AuthService.js +117 -117
  55. package/dist/services/data/TweetService.d.ts +60 -74
  56. package/dist/services/data/TweetService.js +251 -254
  57. package/dist/services/data/TweetService.js.map +1 -1
  58. package/dist/services/data/UserService.d.ts +71 -87
  59. package/dist/services/data/UserService.js +287 -296
  60. package/dist/services/data/UserService.js.map +1 -1
  61. package/dist/services/helper/Headers.d.ts +19 -19
  62. package/dist/services/helper/Headers.js +61 -61
  63. package/dist/services/helper/Parser.d.ts +22 -28
  64. package/dist/services/helper/Parser.js +83 -104
  65. package/dist/services/helper/Parser.js.map +1 -1
  66. package/dist/services/helper/extractors/Tweets.d.ts +32 -32
  67. package/dist/services/helper/extractors/Tweets.js +263 -263
  68. package/dist/services/helper/extractors/Users.d.ts +26 -26
  69. package/dist/services/helper/extractors/Users.js +202 -202
  70. package/dist/services/helper/payloads/LoginFlows.d.ts +77 -77
  71. package/dist/services/helper/payloads/LoginFlows.js +91 -91
  72. package/dist/services/helper/urls/Authentication.d.ts +4 -4
  73. package/dist/services/helper/urls/Authentication.js +10 -10
  74. package/dist/services/util/CacheService.d.ts +33 -33
  75. package/dist/services/util/CacheService.js +95 -95
  76. package/dist/services/util/FetcherService.d.ts +65 -65
  77. package/dist/services/util/FetcherService.js +213 -213
  78. package/dist/twitter/Url.d.ts +22 -0
  79. package/dist/twitter/Url.js +32 -0
  80. package/dist/twitter/Url.js.map +1 -0
  81. package/dist/twitter/enums/Resources.d.ts +15 -0
  82. package/dist/twitter/enums/Resources.js +21 -0
  83. package/dist/twitter/enums/Resources.js.map +1 -0
  84. package/dist/twitter/params/Query.d.ts +67 -0
  85. package/dist/twitter/params/Query.js +64 -0
  86. package/dist/twitter/params/Query.js.map +1 -0
  87. package/dist/twitter/payloads/Args.d.ts +16 -0
  88. package/dist/twitter/payloads/Args.js +16 -0
  89. package/dist/twitter/payloads/Args.js.map +1 -0
  90. package/dist/{types/raw/query/tweet/Engagements.d.ts → twitter/payloads/Features.d.ts} +28 -29
  91. package/dist/twitter/payloads/Features.js +37 -0
  92. package/dist/twitter/payloads/Features.js.map +1 -0
  93. package/dist/twitter/payloads/Variables.d.ts +41 -0
  94. package/dist/twitter/payloads/Variables.js +64 -0
  95. package/dist/twitter/payloads/Variables.js.map +1 -0
  96. package/dist/{types → twitter/types/request}/Query.d.ts +86 -80
  97. package/dist/{types/data/Tweet.js → twitter/types/request/Query.js} +4 -4
  98. package/dist/twitter/types/request/Query.js.map +1 -0
  99. package/dist/{types/raw/data → twitter/types}/tweet/Favouriters.d.ts +164 -164
  100. package/dist/twitter/types/tweet/Favouriters.js +3 -0
  101. package/dist/twitter/types/tweet/Favouriters.js.map +1 -0
  102. package/dist/{types/raw → twitter/types}/tweet/Retweeters.d.ts +171 -171
  103. package/dist/{types/Trends.js → twitter/types/tweet/Retweeters.js} +3 -3
  104. package/dist/twitter/types/tweet/Retweeters.js.map +1 -0
  105. package/dist/{types/raw/data → twitter/types}/tweet/Tweet.d.ts +746 -746
  106. package/dist/{types/data/User.js → twitter/types/tweet/Tweet.js} +3 -3
  107. package/dist/twitter/types/tweet/Tweet.js.map +1 -0
  108. package/dist/{types/raw → twitter/types}/tweet/Tweets.d.ts +386 -386
  109. package/dist/{types/raw/user/User.js → twitter/types/tweet/Tweets.js} +3 -3
  110. package/dist/twitter/types/tweet/Tweets.js.map +1 -0
  111. package/dist/{types/raw → twitter/types}/user/Followers.d.ts +176 -176
  112. package/dist/{types/interfaces/Rettiwt.js → twitter/types/user/Followers.js} +3 -3
  113. package/dist/twitter/types/user/Followers.js.map +1 -0
  114. package/dist/{types/raw → twitter/types}/user/Following.d.ts +176 -176
  115. package/dist/{types/Query.js → twitter/types/user/Following.js} +3 -3
  116. package/dist/twitter/types/user/Following.js.map +1 -0
  117. package/dist/{types/raw/data → twitter/types}/user/Likes.d.ts +1059 -1059
  118. package/dist/{types/interfaces/User.js → twitter/types/user/Likes.js} +3 -3
  119. package/dist/twitter/types/user/Likes.js.map +1 -0
  120. package/dist/{types/raw → twitter/types}/user/Tweets.d.ts +1512 -1512
  121. package/dist/twitter/types/user/Tweets.js +3 -0
  122. package/dist/twitter/types/user/Tweets.js.map +1 -0
  123. package/dist/{types/raw → twitter/types}/user/User.d.ts +117 -117
  124. package/dist/{types/raw/data → twitter/types}/user/User.js +2 -2
  125. package/dist/{types/data → twitter/types/user}/User.js.map +1 -1
  126. package/dist/types/Args.d.ts +38 -38
  127. package/dist/types/Args.js +4 -4
  128. package/dist/types/Authentication.d.ts +55 -55
  129. package/dist/types/Authentication.js +5 -5
  130. package/dist/types/Resolvers.d.ts +15 -15
  131. package/dist/types/Resolvers.js +2 -2
  132. package/dist/types/Rettiwt.d.ts +16 -16
  133. package/dist/types/Rettiwt.js +2 -2
  134. package/dist/types/Service.d.ts +22 -22
  135. package/dist/types/Service.js +4 -4
  136. package/dist/types/Tweet.d.ts +46 -46
  137. package/dist/types/Tweet.js +2 -2
  138. package/dist/types/User.d.ts +35 -35
  139. package/dist/types/User.js +2 -2
  140. package/docs/.nojekyll +1 -0
  141. package/docs/assets/highlight.css +64 -0
  142. package/docs/assets/main.js +58 -0
  143. package/docs/assets/search.js +1 -0
  144. package/docs/assets/style.css +1280 -0
  145. package/docs/classes/AccountService.html +286 -0
  146. package/docs/classes/AuthCookie.html +146 -0
  147. package/docs/classes/AuthService.html +147 -0
  148. package/docs/classes/CacheService.html +157 -0
  149. package/docs/classes/Cursor.html +102 -0
  150. package/docs/classes/CursoredData.html +126 -0
  151. package/docs/classes/DataValidationError.html +119 -0
  152. package/docs/classes/FetcherService.html +225 -0
  153. package/docs/classes/Tweet.html +210 -0
  154. package/docs/classes/TweetEntities.html +128 -0
  155. package/docs/classes/TweetFilter.html +221 -0
  156. package/docs/classes/TweetListArgs.html +118 -0
  157. package/docs/classes/TweetService.html +319 -0
  158. package/docs/classes/User.html +230 -0
  159. package/docs/classes/UserListArgs.html +118 -0
  160. package/docs/classes/UserService.html +355 -0
  161. package/docs/enums/HttpMethods.html +74 -0
  162. package/docs/functions/Rettiwt.html +99 -0
  163. package/docs/index.html +158 -0
  164. package/docs/interfaces/IAuthCookie.html +104 -0
  165. package/docs/interfaces/ICursor.html +77 -0
  166. package/docs/interfaces/ICursoredData.html +93 -0
  167. package/docs/interfaces/IDataContext.html +91 -0
  168. package/docs/interfaces/IListArgs.html +87 -0
  169. package/docs/interfaces/ITweet.html +176 -0
  170. package/docs/interfaces/ITweetEntities.html +104 -0
  171. package/docs/interfaces/ITweetFilter.html +158 -0
  172. package/docs/interfaces/IUser.html +194 -0
  173. package/docs/modules.html +109 -0
  174. package/package.json +2 -2
  175. package/src/graphql/resolvers/UserResolver.ts +4 -4
  176. package/src/graphql/types/UserTypes.ts +1 -1
  177. package/src/models/args/TweetFilter.ts +25 -4
  178. package/src/models/data/Tweet.ts +1 -1
  179. package/src/models/data/User.ts +1 -1
  180. package/src/services/data/TweetService.ts +35 -65
  181. package/src/services/data/UserService.ts +42 -48
  182. package/src/services/helper/Parser.ts +3 -24
  183. package/src/services/helper/extractors/Tweets.ts +4 -4
  184. package/src/services/helper/extractors/Users.ts +5 -5
  185. package/src/services/util/FetcherService.ts +4 -4
  186. package/src/twitter/Url.ts +37 -0
  187. package/src/twitter/enums/Resources.ts +15 -0
  188. package/src/twitter/params/Query.ts +100 -0
  189. package/src/twitter/payloads/Args.ts +21 -0
  190. package/src/twitter/payloads/Features.ts +33 -0
  191. package/src/twitter/payloads/Variables.ts +73 -0
  192. package/src/twitter/types/request/Query.ts +91 -0
  193. package/src/{types/raw → twitter/types}/user/Tweets.ts +1747 -1747
  194. package/src/types/Args.ts +1 -1
  195. package/dist/Test.d.ts +0 -0
  196. package/dist/Test.js +0 -2
  197. package/dist/Test.js.map +0 -1
  198. package/dist/endpoints/Endpoints.d.ts +0 -14
  199. package/dist/endpoints/Endpoints.js +0 -20
  200. package/dist/endpoints/Endpoints.js.map +0 -1
  201. package/dist/endpoints/Url.d.ts +0 -5
  202. package/dist/endpoints/Url.js +0 -12
  203. package/dist/endpoints/Url.js.map +0 -1
  204. package/dist/enums/Endpoints.d.ts +0 -25
  205. package/dist/enums/Endpoints.js +0 -31
  206. package/dist/enums/Endpoints.js.map +0 -1
  207. package/dist/graphql/types/Errors.d.ts +0 -20
  208. package/dist/graphql/types/Errors.js +0 -28
  209. package/dist/graphql/types/Errors.js.map +0 -1
  210. package/dist/middlewares/Authentication.d.ts +0 -0
  211. package/dist/middlewares/Authentication.js +0 -2
  212. package/dist/middlewares/Authentication.js.map +0 -1
  213. package/dist/models/data/DataValidationError.d.ts +0 -18
  214. package/dist/models/data/DataValidationError.js +0 -21
  215. package/dist/models/data/DataValidationError.js.map +0 -1
  216. package/dist/models/data/Errors.d.ts +0 -18
  217. package/dist/models/data/Errors.js +0 -21
  218. package/dist/models/data/Errors.js.map +0 -1
  219. package/dist/models/data/Service.d.ts +0 -33
  220. package/dist/models/data/Service.js +0 -41
  221. package/dist/models/data/Service.js.map +0 -1
  222. package/dist/models/graphql/Global.d.ts +0 -4
  223. package/dist/models/graphql/Global.js +0 -13
  224. package/dist/models/graphql/Global.js.map +0 -1
  225. package/dist/models/graphql/TweetTypes.d.ts +0 -6
  226. package/dist/models/graphql/TweetTypes.js +0 -156
  227. package/dist/models/graphql/TweetTypes.js.map +0 -1
  228. package/dist/models/graphql/UserTypes.d.ts +0 -3
  229. package/dist/models/graphql/UserTypes.js +0 -139
  230. package/dist/models/graphql/UserTypes.js.map +0 -1
  231. package/dist/models/query/Variables.d.ts +0 -2
  232. package/dist/models/query/Variables.js +0 -10
  233. package/dist/models/query/Variables.js.map +0 -1
  234. package/dist/queries/RootQuery.d.ts +0 -4
  235. package/dist/queries/RootQuery.js +0 -70
  236. package/dist/queries/RootQuery.js.map +0 -1
  237. package/dist/requests/Url.d.ts +0 -5
  238. package/dist/requests/Url.js +0 -12
  239. package/dist/requests/Url.js.map +0 -1
  240. package/dist/requests/payloads/Variables.d.ts +0 -23
  241. package/dist/requests/payloads/Variables.js +0 -24
  242. package/dist/requests/payloads/Variables.js.map +0 -1
  243. package/dist/resolvers/AccountResolver.d.ts +0 -12
  244. package/dist/resolvers/AccountResolver.js +0 -84
  245. package/dist/resolvers/AccountResolver.js.map +0 -1
  246. package/dist/resolvers/ResolverBase.d.ts +0 -5
  247. package/dist/resolvers/ResolverBase.js +0 -11
  248. package/dist/resolvers/ResolverBase.js.map +0 -1
  249. package/dist/resolvers/TweetResolver.d.ts +0 -54
  250. package/dist/resolvers/TweetResolver.js +0 -332
  251. package/dist/resolvers/TweetResolver.js.map +0 -1
  252. package/dist/resolvers/UserResolver.d.ts +0 -38
  253. package/dist/resolvers/UserResolver.js +0 -253
  254. package/dist/resolvers/UserResolver.js.map +0 -1
  255. package/dist/services/AuthService.d.ts +0 -22
  256. package/dist/services/AuthService.js +0 -106
  257. package/dist/services/AuthService.js.map +0 -1
  258. package/dist/services/CacheService.d.ts +0 -30
  259. package/dist/services/CacheService.js +0 -93
  260. package/dist/services/CacheService.js.map +0 -1
  261. package/dist/services/FetcherService.d.ts +0 -61
  262. package/dist/services/FetcherService.js +0 -209
  263. package/dist/services/FetcherService.js.map +0 -1
  264. package/dist/services/accounts/AccountService.d.ts +0 -65
  265. package/dist/services/accounts/AccountService.js +0 -336
  266. package/dist/services/accounts/AccountService.js.map +0 -1
  267. package/dist/services/accounts/LoginFlows.d.ts +0 -77
  268. package/dist/services/accounts/LoginFlows.js +0 -92
  269. package/dist/services/accounts/LoginFlows.js.map +0 -1
  270. package/dist/services/auth/LoginFlows.d.ts +0 -77
  271. package/dist/services/auth/LoginFlows.js +0 -92
  272. package/dist/services/auth/LoginFlows.js.map +0 -1
  273. package/dist/services/data/TrendService.d.ts +0 -17
  274. package/dist/services/data/TrendService.js +0 -116
  275. package/dist/services/data/TrendService.js.map +0 -1
  276. package/dist/services/data/UserAccountService.d.ts +0 -42
  277. package/dist/services/data/UserAccountService.js +0 -239
  278. package/dist/services/data/UserAccountService.js.map +0 -1
  279. package/dist/services/helper/Deserializers.d.ts +0 -19
  280. package/dist/services/helper/Deserializers.js +0 -115
  281. package/dist/services/helper/Deserializers.js.map +0 -1
  282. package/dist/services/helper/Extractors.d.ts +0 -104
  283. package/dist/services/helper/Extractors.js +0 -432
  284. package/dist/services/helper/Extractors.js.map +0 -1
  285. package/dist/services/helper/Urls.d.ts +0 -85
  286. package/dist/services/helper/Urls.js +0 -130
  287. package/dist/services/helper/Urls.js.map +0 -1
  288. package/dist/services/helper/deserializers/Tweets.d.ts +0 -12
  289. package/dist/services/helper/deserializers/Tweets.js +0 -92
  290. package/dist/services/helper/deserializers/Tweets.js.map +0 -1
  291. package/dist/services/helper/deserializers/Users.d.ts +0 -7
  292. package/dist/services/helper/deserializers/Users.js +0 -27
  293. package/dist/services/helper/deserializers/Users.js.map +0 -1
  294. package/dist/services/helper/extractors/Trends.d.ts +0 -3
  295. package/dist/services/helper/extractors/Trends.js +0 -51
  296. package/dist/services/helper/extractors/Trends.js.map +0 -1
  297. package/dist/services/helper/urls/Trends.d.ts +0 -7
  298. package/dist/services/helper/urls/Trends.js +0 -13
  299. package/dist/services/helper/urls/Trends.js.map +0 -1
  300. package/dist/services/helper/urls/Tweets.d.ts +0 -32
  301. package/dist/services/helper/urls/Tweets.js +0 -51
  302. package/dist/services/helper/urls/Tweets.js.map +0 -1
  303. package/dist/services/helper/urls/Users.d.ts +0 -38
  304. package/dist/services/helper/urls/Users.js +0 -76
  305. package/dist/services/helper/urls/Users.js.map +0 -1
  306. package/dist/types/HTTP.d.ts +0 -17
  307. package/dist/types/HTTP.js +0 -23
  308. package/dist/types/HTTP.js.map +0 -1
  309. package/dist/types/Query.js.map +0 -1
  310. package/dist/types/Trends.d.ts +0 -50
  311. package/dist/types/Trends.js.map +0 -1
  312. package/dist/types/UserAccount.d.ts +0 -19
  313. package/dist/types/UserAccount.js +0 -4
  314. package/dist/types/UserAccount.js.map +0 -1
  315. package/dist/types/args/TweetFilter.d.ts +0 -54
  316. package/dist/types/args/TweetFilter.js +0 -96
  317. package/dist/types/args/TweetFilter.js.map +0 -1
  318. package/dist/types/args/TweetListArg.d.ts +0 -10
  319. package/dist/types/args/TweetListArg.js +0 -42
  320. package/dist/types/args/TweetListArg.js.map +0 -1
  321. package/dist/types/args/TweetListArgs.d.ts +0 -20
  322. package/dist/types/args/TweetListArgs.js +0 -52
  323. package/dist/types/args/TweetListArgs.js.map +0 -1
  324. package/dist/types/args/UserListArgs.d.ts +0 -16
  325. package/dist/types/args/UserListArgs.js +0 -48
  326. package/dist/types/args/UserListArgs.js.map +0 -1
  327. package/dist/types/data/Errors.d.ts +0 -35
  328. package/dist/types/data/Errors.js +0 -45
  329. package/dist/types/data/Errors.js.map +0 -1
  330. package/dist/types/data/Service.d.ts +0 -43
  331. package/dist/types/data/Service.js +0 -22
  332. package/dist/types/data/Service.js.map +0 -1
  333. package/dist/types/data/Tweet.d.ts +0 -98
  334. package/dist/types/data/Tweet.js.map +0 -1
  335. package/dist/types/data/TweetFilter.d.ts +0 -49
  336. package/dist/types/data/TweetFilter.js +0 -63
  337. package/dist/types/data/TweetFilter.js.map +0 -1
  338. package/dist/types/data/User.d.ts +0 -38
  339. package/dist/types/graphql/Errors.d.ts +0 -15
  340. package/dist/types/graphql/Errors.js +0 -23
  341. package/dist/types/graphql/Errors.js.map +0 -1
  342. package/dist/types/interfaces/Args.d.ts +0 -38
  343. package/dist/types/interfaces/Args.js +0 -5
  344. package/dist/types/interfaces/Args.js.map +0 -1
  345. package/dist/types/interfaces/Authentication.d.ts +0 -40
  346. package/dist/types/interfaces/Authentication.js +0 -5
  347. package/dist/types/interfaces/Authentication.js.map +0 -1
  348. package/dist/types/interfaces/Resolvers.d.ts +0 -14
  349. package/dist/types/interfaces/Resolvers.js +0 -3
  350. package/dist/types/interfaces/Resolvers.js.map +0 -1
  351. package/dist/types/interfaces/Rettiwt.d.ts +0 -16
  352. package/dist/types/interfaces/Rettiwt.js.map +0 -1
  353. package/dist/types/interfaces/Service.d.ts +0 -13
  354. package/dist/types/interfaces/Service.js +0 -3
  355. package/dist/types/interfaces/Service.js.map +0 -1
  356. package/dist/types/interfaces/Services.d.ts +0 -13
  357. package/dist/types/interfaces/Services.js +0 -3
  358. package/dist/types/interfaces/Services.js.map +0 -1
  359. package/dist/types/interfaces/Tweet.d.ts +0 -46
  360. package/dist/types/interfaces/Tweet.js +0 -3
  361. package/dist/types/interfaces/Tweet.js.map +0 -1
  362. package/dist/types/interfaces/TweetFilter.d.ts +0 -0
  363. package/dist/types/interfaces/TweetFilter.js +0 -2
  364. package/dist/types/interfaces/TweetFilter.js.map +0 -1
  365. package/dist/types/interfaces/User.d.ts +0 -35
  366. package/dist/types/interfaces/User.js.map +0 -1
  367. package/dist/types/raw/auth/Cookie.d.ts +0 -16
  368. package/dist/types/raw/auth/Cookie.js +0 -3
  369. package/dist/types/raw/auth/Cookie.js.map +0 -1
  370. package/dist/types/raw/data/tweet/Favouriters.js +0 -3
  371. package/dist/types/raw/data/tweet/Favouriters.js.map +0 -1
  372. package/dist/types/raw/data/tweet/Retweeters.d.ts +0 -171
  373. package/dist/types/raw/data/tweet/Retweeters.js +0 -3
  374. package/dist/types/raw/data/tweet/Retweeters.js.map +0 -1
  375. package/dist/types/raw/data/tweet/Tweet.js +0 -3
  376. package/dist/types/raw/data/tweet/Tweet.js.map +0 -1
  377. package/dist/types/raw/data/tweet/Tweets.d.ts +0 -386
  378. package/dist/types/raw/data/tweet/Tweets.js +0 -3
  379. package/dist/types/raw/data/tweet/Tweets.js.map +0 -1
  380. package/dist/types/raw/data/user/Followers.d.ts +0 -176
  381. package/dist/types/raw/data/user/Followers.js +0 -3
  382. package/dist/types/raw/data/user/Followers.js.map +0 -1
  383. package/dist/types/raw/data/user/Following.d.ts +0 -176
  384. package/dist/types/raw/data/user/Following.js +0 -3
  385. package/dist/types/raw/data/user/Following.js.map +0 -1
  386. package/dist/types/raw/data/user/Likes.js +0 -3
  387. package/dist/types/raw/data/user/Likes.js.map +0 -1
  388. package/dist/types/raw/data/user/User.d.ts +0 -117
  389. package/dist/types/raw/data/user/User.js.map +0 -1
  390. package/dist/types/raw/general/Trends.d.ts +0 -324
  391. package/dist/types/raw/general/Trends.js +0 -3
  392. package/dist/types/raw/general/Trends.js.map +0 -1
  393. package/dist/types/raw/query/tweet/Details.d.ts +0 -80
  394. package/dist/types/raw/query/tweet/Details.js +0 -5
  395. package/dist/types/raw/query/tweet/Details.js.map +0 -1
  396. package/dist/types/raw/query/tweet/Engagements.js +0 -3
  397. package/dist/types/raw/query/tweet/Engagements.js.map +0 -1
  398. package/dist/types/raw/query/tweet/Likes.d.ts +0 -29
  399. package/dist/types/raw/query/tweet/Likes.js +0 -3
  400. package/dist/types/raw/query/tweet/Likes.js.map +0 -1
  401. package/dist/types/raw/query/tweet/Retweets.d.ts +0 -29
  402. package/dist/types/raw/query/tweet/Retweets.js +0 -3
  403. package/dist/types/raw/query/tweet/Retweets.js.map +0 -1
  404. package/dist/types/raw/query/tweet/Search.d.ts +0 -40
  405. package/dist/types/raw/query/tweet/Search.js +0 -3
  406. package/dist/types/raw/query/tweet/Search.js.map +0 -1
  407. package/dist/types/raw/query/tweet/TweetDetails.d.ts +0 -34
  408. package/dist/types/raw/query/tweet/TweetDetails.js +0 -5
  409. package/dist/types/raw/query/tweet/TweetDetails.js.map +0 -1
  410. package/dist/types/raw/query/tweet/TweetLike.d.ts +0 -29
  411. package/dist/types/raw/query/tweet/TweetLike.js +0 -3
  412. package/dist/types/raw/query/tweet/TweetLike.js.map +0 -1
  413. package/dist/types/raw/query/tweet/TweetLikes.d.ts +0 -29
  414. package/dist/types/raw/query/tweet/TweetLikes.js +0 -3
  415. package/dist/types/raw/query/tweet/TweetLikes.js.map +0 -1
  416. package/dist/types/raw/query/tweet/TweetRetweets.d.ts +0 -0
  417. package/dist/types/raw/query/tweet/TweetRetweets.js +0 -2
  418. package/dist/types/raw/query/tweet/TweetRetweets.js.map +0 -1
  419. package/dist/types/raw/query/user/Details.d.ts +0 -34
  420. package/dist/types/raw/query/user/Details.js +0 -3
  421. package/dist/types/raw/query/user/Details.js.map +0 -1
  422. package/dist/types/raw/tweet/Favouriters.d.ts +0 -164
  423. package/dist/types/raw/tweet/Favouriters.js +0 -3
  424. package/dist/types/raw/tweet/Favouriters.js.map +0 -1
  425. package/dist/types/raw/tweet/Retweeters.js +0 -3
  426. package/dist/types/raw/tweet/Retweeters.js.map +0 -1
  427. package/dist/types/raw/tweet/Tweet.d.ts +0 -746
  428. package/dist/types/raw/tweet/Tweet.js +0 -3
  429. package/dist/types/raw/tweet/Tweet.js.map +0 -1
  430. package/dist/types/raw/tweet/Tweets.js +0 -3
  431. package/dist/types/raw/tweet/Tweets.js.map +0 -1
  432. package/dist/types/raw/user/Followers.js +0 -3
  433. package/dist/types/raw/user/Followers.js.map +0 -1
  434. package/dist/types/raw/user/Following.js +0 -3
  435. package/dist/types/raw/user/Following.js.map +0 -1
  436. package/dist/types/raw/user/Likes.d.ts +0 -1059
  437. package/dist/types/raw/user/Likes.js +0 -3
  438. package/dist/types/raw/user/Likes.js.map +0 -1
  439. package/dist/types/raw/user/Tweets.js +0 -3
  440. package/dist/types/raw/user/Tweets.js.map +0 -1
  441. package/dist/types/raw/user/User.js.map +0 -1
  442. package/dist/types/services/args/TweetFilter.d.ts +0 -50
  443. package/dist/types/services/args/TweetFilter.js +0 -76
  444. package/dist/types/services/args/TweetFilter.js.map +0 -1
  445. package/src/services/helper/urls/Tweets.ts +0 -46
  446. package/src/services/helper/urls/Users.ts +0 -78
  447. /package/src/{types/raw → twitter/types}/tweet/Favouriters.ts +0 -0
  448. /package/src/{types/raw → twitter/types}/tweet/Retweeters.ts +0 -0
  449. /package/src/{types/raw → twitter/types}/tweet/Tweet.ts +0 -0
  450. /package/src/{types/raw → twitter/types}/tweet/Tweets.ts +0 -0
  451. /package/src/{types/raw → twitter/types}/user/Followers.ts +0 -0
  452. /package/src/{types/raw → twitter/types}/user/Following.ts +0 -0
  453. /package/src/{types/raw → twitter/types}/user/Likes.ts +0 -0
  454. /package/src/{types/raw → twitter/types}/user/User.ts +0 -0
@@ -3,6 +3,7 @@ import { FetcherService } from "../util/FetcherService";
3
3
  import { AuthService } from "../auth/AuthService";
4
4
 
5
5
  // MODELS
6
+ import { Url } from '../../twitter/Url';
6
7
  import { Tweet } from "../../models/data/Tweet";
7
8
  import { User } from "../../models/data/User";
8
9
  import { TweetListArgs } from "../../models/args/TweetListArgs";
@@ -10,24 +11,19 @@ import { TweetFilter } from "../../models/args/TweetFilter";
10
11
  import { CursoredData } from '../../models/data/CursoredData';
11
12
 
12
13
  // TYPES
13
- import RawTweet, { Result as TweetData } from '../../types/raw/tweet/Tweet';
14
- import { Result as UserData } from "../../types/raw/user/User";
15
- import RawTweets from '../../types/raw/tweet/Tweets';
16
- import RawLikers from '../../types/raw/tweet/Favouriters';
17
- import RawRetweeters from '../../types/raw/tweet/Retweeters';
14
+ import RawTweet, { Result as TweetData } from '../../twitter/types/tweet/Tweet';
15
+ import { Result as UserData } from "../../twitter/types/user/User";
16
+ import RawTweets from '../../twitter/types/tweet/Tweets';
17
+ import RawLikers from '../../twitter/types/tweet/Favouriters';
18
+ import RawRetweeters from '../../twitter/types/tweet/Retweeters';
18
19
 
19
20
  // ENUMS
21
+ import { ResourceType } from '../../twitter/enums/Resources';
20
22
  import { AuthenticationErrors } from '../../enums/Errors';
21
23
 
22
- // URLS
23
- import * as TweetUrls from '../helper/urls/Tweets';
24
-
25
24
  // EXTRACTORS
26
25
  import * as TweetExtractors from "../helper/extractors/Tweets";
27
26
 
28
- // PARSERS
29
- import { toQueryString } from '../helper/Parser';
30
-
31
27
  /**
32
28
  * Handles fetching of data related to tweets.
33
29
  * @public
@@ -47,19 +43,24 @@ export class TweetService extends FetcherService {
47
43
  *
48
44
  * @returns The list of tweets that match the given filter.
49
45
  *
46
+ * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
50
47
  * @throws {@link Errors.ValidationErrors.InvalidCount} error, if an invalid count has been provided.
51
- *
52
- * @remarks
53
- *
54
- * Cookies are required to use this method!
55
48
  */
56
49
  async getTweets(query: TweetFilter, count?: number, cursor?: string): Promise<CursoredData<Tweet>> {
50
+ // If user is not authenticated, abort
51
+ if (!this.isAuthenticated) {
52
+ throw new Error(AuthenticationErrors.NotAuthenticated);
53
+ }
54
+
57
55
  // Objectifying parameters
58
56
  let filter: TweetFilter = new TweetFilter(query);
59
57
  let args: TweetListArgs = new TweetListArgs(count, cursor);
60
58
 
59
+ // Preparing the URL
60
+ const url: string = new Url(ResourceType.TWEETS, { query: filter.toString(), count: args.count, cursor: args.cursor }).toString();
61
+
61
62
  // Getting the raw data
62
- let res = await this.request<RawTweets>(TweetUrls.tweetsUrl(toQueryString(filter), args.count, args.cursor), this.isAuthenticated).then(res => res.data);
63
+ let res = await this.request<RawTweets>(url).then(res => res.data);
63
64
 
64
65
  // Extracting data
65
66
  let data = TweetExtractors.extractTweets(res);
@@ -81,13 +82,15 @@ export class TweetService extends FetcherService {
81
82
  *
82
83
  * @returns The details of a single tweet with the given tweet id.
83
84
  *
85
+ * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
84
86
  * @throws {@link Errors.DataErrors.TweetNotFound} error, if no tweet with the given id was found.
85
- *
86
- * @remarks
87
- *
88
- * No cookies are required to use this method.
89
87
  */
90
88
  async getTweetDetails(id: string): Promise<Tweet> {
89
+ // If user is not authenticated, abort
90
+ if (!this.isAuthenticated) {
91
+ throw new Error(AuthenticationErrors.NotAuthenticated);
92
+ }
93
+
91
94
  // Getting data from cache
92
95
  let cachedData = await this.readData(id);
93
96
 
@@ -96,8 +99,11 @@ export class TweetService extends FetcherService {
96
99
  return cachedData;
97
100
  }
98
101
 
102
+ // Preparing the URL
103
+ const url: string = new Url(ResourceType.TWEET_DETAILS, { id: id }).toString();
104
+
99
105
  // Fetching the raw data
100
- let res = await this.request<RawTweet>(TweetUrls.tweetDetailsUrl(id), false).then(res => res.data);
106
+ let res = await this.request<RawTweet>(url).then(res => res.data);
101
107
 
102
108
  // Extracting data
103
109
  let data = TweetExtractors.extractTweet(res, id);
@@ -121,10 +127,6 @@ export class TweetService extends FetcherService {
121
127
  * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
122
128
  * @throws {@link Errors.ValidationErrors.InvalidCount} error, if invalid count is provided.
123
129
  * @throws {@link Errors.DataErrors.TweetNotFound} error, if no tweet with the given id was found.
124
- *
125
- * @remarks
126
- *
127
- * Cookies are required to use this method!
128
130
  */
129
131
  async getTweetLikers(tweetId: string, count?: number, cursor?: string): Promise<CursoredData<User>> {
130
132
  // If user is not authenticated, abort
@@ -135,8 +137,11 @@ export class TweetService extends FetcherService {
135
137
  // Objectifying parameters
136
138
  let args: TweetListArgs = new TweetListArgs(count, cursor);
137
139
 
140
+ // Preparing the URL
141
+ const url: string = new Url(ResourceType.TWEET_LIKES, { id: tweetId, count: args.count, cursor: args.cursor }).toString();
142
+
138
143
  // Fetching the raw data
139
- let res = await this.request<RawLikers>(TweetUrls.tweetLikesUrl(tweetId, args.count, args.cursor)).then(res => res.data);
144
+ let res = await this.request<RawLikers>(url).then(res => res.data);
140
145
 
141
146
  // Extracting data
142
147
  let data = TweetExtractors.extractTweetLikers(res);
@@ -160,10 +165,6 @@ export class TweetService extends FetcherService {
160
165
  * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
161
166
  * @throws {@link Errors.ValidationErrors.InvalidCount} error, if invalid count is provided.
162
167
  * @throws {@link Errors.DataErrors.TweetNotFound} error, if no tweet with the given id was found.
163
- *
164
- * @remarks
165
- *
166
- * Cookies are required to use this method!
167
168
  */
168
169
  async getTweetRetweeters(tweetId: string, count?: number, cursor?: string): Promise<CursoredData<User>> {
169
170
  // If user is not authenticated, abort
@@ -174,8 +175,11 @@ export class TweetService extends FetcherService {
174
175
  // Objectifying parameters
175
176
  let args: TweetListArgs = new TweetListArgs(count, cursor);
176
177
 
178
+ // Preparing the URL
179
+ const url: string = new Url(ResourceType.TWEET_RETWEETS, { id: tweetId, count: args.count, cursor: args.cursor }).toString();
180
+
177
181
  // Fetching the raw data
178
- let res = await this.request<RawRetweeters>(TweetUrls.tweetRetweetUrl(tweetId, args.count, args.cursor)).then(res => res.data);
182
+ let res = await this.request<RawRetweeters>(url).then(res => res.data);
179
183
 
180
184
  // Extracting data
181
185
  let data = TweetExtractors.extractTweetRetweeters(res);
@@ -188,38 +192,4 @@ export class TweetService extends FetcherService {
188
192
 
189
193
  return new CursoredData<User>(users, data.cursor);
190
194
  }
191
-
192
- /**
193
- * THIS IS DISABLED FOR USE FOR NOW BECAUSE TWITTER DOESN'T HAVE ANY ENDPOINT FOR FETCHING REPLIES.
194
- * THE DATA THIS RETURNS IS INCONSISTENT!
195
- *
196
- * @param tweetId The rest id of the target tweet.
197
- * @param cursor The cursor to the next batch of replies. If blank, first batch is fetched.
198
- * @returns The list of replies to the given tweet.
199
- */
200
- /*
201
- async getTweetReplies(tweetId: string, cursor: string): Promise<CursoredData<Tweet>> {
202
- // If user is not authenticated, abort
203
- if(!this.isAuthenticated) {
204
- throw new Error(Errors.AuthenticationErrors.NotAuthenticated);
205
- }
206
-
207
- // Fetching the raw data
208
- let res = await this.request<RawTweet>(TweetUrls.tweetRepliesUrl(tweetId, cursor)).then(res => res.data);
209
-
210
- // Extracting data
211
- let data = TweetExtractors.extractTweetReplies(res, tweetId);
212
-
213
- // Caching data
214
- this.cacheData(data);
215
-
216
- // Parsing data
217
- let tweets = data.required.map((item: TweetData) => TweetDeserializers.toTweet(item));
218
-
219
- return {
220
- list: tweets,
221
- next: { value: data.cursor }
222
- };
223
- }
224
- */
225
195
  }
@@ -3,27 +3,26 @@ import { FetcherService } from '../util/FetcherService';
3
3
  import { AuthService } from '../auth/AuthService';
4
4
 
5
5
  // MODELS
6
+ import { Url } from '../../twitter/Url';
6
7
  import { User } from '../../models/data/User';
7
8
  import { UserListArgs } from '../../models/args/UserListArgs';
8
9
  import { Tweet } from '../../models/data/Tweet';
9
10
 
10
11
  // TYPES
11
12
  import { CursoredData } from '../../models/data/CursoredData';
12
- import { Result as TweetData } from '../../types/raw/tweet/Tweet';
13
- import RawUser, { Result as UserData } from '../../types/raw/user/User';
14
- import RawUserTweets from '../../types/raw/user/Tweets';
15
- import RawUserFollowers from '../../types/raw/user/Followers';
16
- import RawUserFollowing from '../../types/raw/user/Following';
17
- import RawUserLikes from '../../types/raw/user/Likes';
13
+ import { Result as TweetData } from '../../twitter/types/tweet/Tweet';
14
+ import RawUser, { Result as UserData } from '../../twitter/types/user/User';
15
+ import RawUserFollowers from '../../twitter/types/user/Followers';
16
+ import RawUserFollowing from '../../twitter/types/user/Following';
17
+ import RawUserLikes from '../../twitter/types/user/Likes';
18
18
 
19
19
  // ENUMS
20
+ import { ResourceType } from '../../twitter/enums/Resources';
20
21
  import { AuthenticationErrors } from '../../enums/Errors';
21
22
 
22
- // URLS
23
- import * as UserUrls from '../helper/urls/Users';
24
-
25
23
  // EXTRACTORS
26
24
  import * as UserExtractors from '../helper/extractors/Users';
25
+ import { TweetService } from './TweetService';
27
26
 
28
27
  /**
29
28
  * Handles fetching of data related to user account
@@ -41,19 +40,24 @@ export class UserService extends FetcherService {
41
40
  *
42
41
  * @returns The details of the given user.
43
42
  *
43
+ * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
44
44
  * @throws {@link Errors.DataErrors.UserNotFound} error, if no user with the given username was found.
45
- *
46
- * @remarks
47
- *
48
- * No cookies are required to use this method.
49
45
  */
50
46
  async getUserDetails(id: string): Promise<User> {
47
+ // If user is not authenticated, abort
48
+ if (!this.isAuthenticated) {
49
+ throw new Error(AuthenticationErrors.NotAuthenticated);
50
+ }
51
+
51
52
  let res: RawUser;
52
53
 
53
54
  // If id is not a numeric string => username is supplied
54
55
  if (isNaN(Number(id))) {
56
+ // Preparing the URL
57
+ const url: string = new Url(ResourceType.USER_DETAILS, { id: id }).toString();
58
+
55
59
  // Fetching the raw data
56
- res = await this.request<RawUser>(UserUrls.userDetailsUrl(id), false).then(res => res.data);
60
+ res = await this.request<RawUser>(url).then(res => res.data);
57
61
  }
58
62
  // If id is a numeric string => id is supplied
59
63
  else {
@@ -65,8 +69,11 @@ export class UserService extends FetcherService {
65
69
  return cachedData;
66
70
  }
67
71
 
72
+ // Preparing the URL
73
+ const url: string = new Url(ResourceType.USER_DETAILS_BY_ID, { id: id }).toString();
74
+
68
75
  // Fetching the raw data
69
- res = await this.request<RawUser>(UserUrls.userDetailsByIdUrl(id), false).then(res => res.data);
76
+ res = await this.request<RawUser>(url).then(res => res.data);
70
77
  }
71
78
 
72
79
  // Extracting data
@@ -88,30 +95,20 @@ export class UserService extends FetcherService {
88
95
  *
89
96
  * @returns The list of tweets nade by the target user.
90
97
  *
98
+ * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
91
99
  * @throws {@link Errors.ValidationErrors.InvalidCount} error, if invalid count has been provided.
92
100
  * @throws {@link Errors.DataErrors.UserNotFound} error, if invalid count has been provided.
93
101
  *
94
- * @remarks
95
- *
96
- * No cookies are required to use this method.
102
+ * @deprecated Use [this](https://rishikant181.github.io/Rettiwt-API/classes/TweetService.html#getTweets) method instead. It's better in every possible way!
97
103
  */
98
104
  async getUserTweets(userId: string, count?: number, cursor?: string): Promise<CursoredData<Tweet>> {
99
- // Objectifying parameters
100
- let args: UserListArgs = new UserListArgs(count, cursor);
101
-
102
- // Fetching the raw data
103
- let res = await this.request<RawUserTweets>(UserUrls.userTweetsUrl(userId, args.count, args.cursor), false).then(res => res.data);
105
+ // Getting the username of the target user
106
+ const userName: string = (await this.getUserDetails(userId)).userName;
104
107
 
105
- // Extracting data
106
- let data = UserExtractors.extractUserTweets(res);
107
-
108
- // Caching data
109
- this.cacheData(data);
110
-
111
- // Parsing data
112
- let tweets = data.required.map((item: TweetData) => new Tweet(item));
113
-
114
- return new CursoredData<Tweet>(tweets, data.cursor);
108
+ // Getting the tweets of the target user
109
+ return new TweetService(this.auth).getTweets({
110
+ fromUsers: [userName]
111
+ }, count, cursor);
115
112
  }
116
113
 
117
114
  /**
@@ -124,10 +121,6 @@ export class UserService extends FetcherService {
124
121
  * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
125
122
  * @throws {@link Errors.ValidationErrors.InvalidCount} error, if invalid count has been provided.
126
123
  * @throws {@link Errors.DataErrors.UserNotFound} error, if invalid count has been provided.
127
- *
128
- * @remarks
129
- *
130
- * Cookies are required to use this method!
131
124
  */
132
125
  async getUserFollowing(userId: string, count?: number, cursor?: string): Promise<CursoredData<User>> {
133
126
  // If user is not authenticated, abort
@@ -138,8 +131,11 @@ export class UserService extends FetcherService {
138
131
  // Objectifying parameters
139
132
  let args: UserListArgs = new UserListArgs(count, cursor);
140
133
 
134
+ // Preparing the URL
135
+ const url: string = new Url(ResourceType.USER_FOLLOWING, { id: userId, count: args.count, cursor: args.cursor }).toString();
136
+
141
137
  // Fetchin the raw data
142
- let res = await this.request<RawUserFollowing>(UserUrls.userFollowingUrl(userId, args.count, args.cursor)).then(res => res.data);
138
+ let res = await this.request<RawUserFollowing>(url).then(res => res.data);
143
139
 
144
140
  // Extracting data
145
141
  let data = UserExtractors.extractUserFollow(res);
@@ -163,10 +159,6 @@ export class UserService extends FetcherService {
163
159
  * @throws {@link Errors.AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
164
160
  * @throws {@link Errors.ValidationErrors.InvalidCount} error, if invalid count has been provided.
165
161
  * @throws {@link Errors.DataErrors.UserNotFound} error, if invalid count has been provided.
166
- *
167
- * @remarks
168
- *
169
- * Cookies are required to use this method!
170
162
  */
171
163
  async getUserFollowers(userId: string, count?: number, cursor?: string): Promise<CursoredData<User>> {
172
164
  // If user is not authenticated, abort
@@ -177,8 +169,11 @@ export class UserService extends FetcherService {
177
169
  // Objectifying parameters
178
170
  let args: UserListArgs = new UserListArgs(count, cursor);
179
171
 
172
+ // Preparing the URL
173
+ const url: string = new Url(ResourceType.USER_FOLLOWERS, { id: userId, count: args.count, cursor: args.cursor }).toString();
174
+
180
175
  // Fetching the raw data
181
- let res = await this.request<RawUserFollowers>(UserUrls.userFollowersUrl(userId, args.count, args.cursor)).then(res => res.data);
176
+ let res = await this.request<RawUserFollowers>(url).then(res => res.data);
182
177
 
183
178
  // Extracting data
184
179
  let data = UserExtractors.extractUserFollow(res);
@@ -200,10 +195,6 @@ export class UserService extends FetcherService {
200
195
  * @returns The list of tweets liked by the target user.
201
196
  *
202
197
  * @throws {@link AuthenticationErrors.NotAuthenticated} error, if no cookies have been provided.
203
- *
204
- * @remarks
205
- *
206
- * Cookies are required to use this method!
207
198
  */
208
199
  async getUserLikes(userId: string, count?: number, cursor?: string): Promise<CursoredData<Tweet>> {
209
200
  // If user is not authenticated, abort
@@ -214,8 +205,11 @@ export class UserService extends FetcherService {
214
205
  // Objectifying parameters
215
206
  let args: UserListArgs = new UserListArgs(count, cursor);
216
207
 
208
+ // Preparing the URL
209
+ const url: string = new Url(ResourceType.USER_LIKES, { id: userId, count: args.count, cursor: args.cursor }).toString();
210
+
217
211
  // Fetching the raw data
218
- let res = await this.request<RawUserLikes>(UserUrls.userLikesUrl(userId, args.count, args.cursor)).then(res => res.data);
212
+ let res = await this.request<RawUserLikes>(url).then(res => res.data);
219
213
 
220
214
  // Extracting data
221
215
  let data = UserExtractors.extractUserLikes(res);
@@ -7,7 +7,7 @@ import { ITweetFilter } from '../../types/Args';
7
7
  */
8
8
  export function isJSONEmpty(data: any): boolean {
9
9
  // If the JSON has any keys, it's not empty
10
- if(Object.keys(data).length == 0) {
10
+ if (Object.keys(data).length == 0) {
11
11
  return true;
12
12
  }
13
13
  // Else, it's empty
@@ -78,33 +78,12 @@ export function dataToList(data: any | any[]): any[] {
78
78
  */
79
79
  export function normalizeText(text: string): string {
80
80
  let normalizedText: string = ''; // To store the normalized text
81
-
81
+
82
82
  // Removing unnecessary full stops, and other characters
83
83
  normalizedText = text.replace(/\n/g, '.').replace(/[.]+[\s+.\s+]+/g, '. ');
84
-
84
+
85
85
  // Adding full-stop to the end if does not exist already
86
86
  normalizedText = normalizedText.endsWith('.') ? normalizedText : (normalizedText + '.');
87
87
 
88
88
  return normalizedText;
89
- }
90
-
91
- /**
92
- * @param filter The tweet filter to use for getting filtered tweets
93
- * @returns The same tweet filter, in a URL query format string
94
- */
95
- export function toQueryString(filter: ITweetFilter): string {
96
- // Concatenating the input filter arguments to a URL query formatted string
97
- return [
98
- filter.words ? filter.words.join(' ') : '',
99
- filter.hashtags ? `(${filter.hashtags.map(hashtag => '#' + hashtag).join(' OR ')})` : '',
100
- filter.fromUsers ? `(${filter.fromUsers.map(user => `from:${user}`).join(' OR ')})` : '',
101
- filter.toUsers ? `(${filter.toUsers.map(user => `to:${user}`).join(' OR ')})` : '',
102
- filter.mentions ? `(${filter.mentions.map(mention => '@' + mention).join(' OR ')})` : '',
103
- filter.startDate ? `since:${filter.startDate}` : '',
104
- filter.endDate ? `until:${filter.endDate}` : '',
105
- filter.sinceId ? `since_id:${filter.sinceId}` : '',
106
- filter.quoted ? `quoted_tweet_id:${filter.quoted}` : ''
107
- ]
108
- .filter(item => item !== '()' && item !== '')
109
- .join(' ') + (!filter.links ? ' -filter:links' : '');
110
89
  }
@@ -1,10 +1,10 @@
1
1
  // TYPES
2
2
  import { IDataExtract } from '../../../types/Resolvers';
3
3
  import { DataErrors } from '../../../enums/Errors';
4
- import RawTweet from '../../../types/raw/tweet/Tweet';
5
- import RawTweets from '../../../types/raw/tweet/Tweets';
6
- import RawRetweeters from '../../../types/raw/tweet/Retweeters';
7
- import RawLikers from '../../../types/raw/tweet/Favouriters';
4
+ import RawTweet from '../../../twitter/types/tweet/Tweet';
5
+ import RawTweets from '../../../twitter/types/tweet/Tweets';
6
+ import RawRetweeters from '../../../twitter/types/tweet/Retweeters';
7
+ import RawLikers from '../../../twitter/types/tweet/Favouriters';
8
8
 
9
9
  // PARSERS
10
10
  import * as Parsers from '../Parser';
@@ -1,11 +1,11 @@
1
1
  // TYPES
2
2
  import { IDataExtract } from '../../../types/Resolvers'
3
3
  import { DataErrors } from '../../../enums/Errors';
4
- import RawUser from '../../../types/raw/user/User';
5
- import RawUserTweets from '../../../types/raw/user/Tweets';
6
- import RawUserFollowers from '../../../types/raw/user/Followers';
7
- import RawUserFollowing from '../../../types/raw/user/Following';
8
- import RawUserLikes from '../../../types/raw/user/Likes';
4
+ import RawUser from '../../../twitter/types/user/User';
5
+ import RawUserTweets from '../../../twitter/types/user/Tweets';
6
+ import RawUserFollowers from '../../../twitter/types/user/Followers';
7
+ import RawUserFollowing from '../../../twitter/types/user/Following';
8
+ import RawUserLikes from '../../../twitter/types/user/Likes';
9
9
 
10
10
  // PARSERS
11
11
  import * as Parsers from '../Parser';
@@ -10,8 +10,8 @@ import { Tweet } from '../../models/data/Tweet';
10
10
  import { User } from '../../models/data/User';
11
11
 
12
12
  // TYPES
13
- import { Result as RawUser } from '../../types/raw/user/User';
14
- import { Result as RawTweet } from '../../types/raw/tweet/Tweet';
13
+ import { Result as RawUser } from '../../twitter/types/user/User';
14
+ import { Result as RawTweet } from '../../twitter/types/tweet/Tweet';
15
15
 
16
16
  // ENUMS
17
17
  import { HttpStatus } from "../../enums/HTTP";
@@ -37,7 +37,7 @@ export enum HttpMethods {
37
37
  export class FetcherService {
38
38
  // MEMBER DATA
39
39
  /** The authentication service instance. */
40
- private auth: AuthService;
40
+ protected auth: AuthService;
41
41
 
42
42
  /** The caching service instance. */
43
43
  private cache: CacheService;
@@ -71,7 +71,7 @@ export class FetcherService {
71
71
  if (res.statusCode != 200 && res.statusCode in HttpStatus) {
72
72
  throw new Error(HttpStatus[res.statusCode])
73
73
  }
74
-
74
+
75
75
  return res;
76
76
  }
77
77
 
@@ -0,0 +1,37 @@
1
+ // ENUMS
2
+ import { ResourceType } from "./enums/Resources";
3
+
4
+ // PAYLOADS
5
+ import { Args } from './payloads/Args';
6
+ import { Query } from './params/Query';
7
+
8
+ /**
9
+ * A class that deals with generation of URLs to various resources on Twitter.
10
+ */
11
+ export class Url {
12
+ /** The base Twitter API url. */
13
+ private baseUrl: string = 'https://api.twitter.com';
14
+
15
+ /** The fully initialized target resource URL. */
16
+ public fullUrl: string;
17
+
18
+ /**
19
+ * Initializes a URL for fetching the specified resource, using the given arguments.
20
+ *
21
+ * @param resourceType The type of resource to fetch.
22
+ * @param args Any additional arguments.
23
+ */
24
+ constructor(resourceType: ResourceType, args: Args) {
25
+ /**
26
+ * Initializing full URL along with additional URL parameters.
27
+ */
28
+ this.fullUrl = `${this.baseUrl}${resourceType}?${new Query(resourceType, args).toString()}`;
29
+ }
30
+
31
+ /**
32
+ * @returns The string representation of thi Url.
33
+ */
34
+ public toString(): string {
35
+ return this.fullUrl;
36
+ }
37
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The different types of resources that can be fetched.
3
+ */
4
+ export enum ResourceType {
5
+ 'TWEETS' = '/2/search/adaptive.json',
6
+ 'TWEET_DETAILS' = '/graphql/lXI2kaM2hgmbf7h42kpxuA/TweetDetail',
7
+ 'TWEET_LIKES' = '/graphql/56ZwFC3Vui31fF8IYX8EGA/Favoriters',
8
+ 'TWEET_RETWEETS' = '/graphql/Wd7DVeLqMj_JQiTL0tjJwQ/Retweeters',
9
+ 'USER_DETAILS' = '/graphql/hVhfo_TquFTmgL7gYwf91Q/UserByScreenName',
10
+ 'USER_DETAILS_BY_ID' = '/graphql/mi_IjXgFyr41N9zkszPz9w/UserByRestId',
11
+ 'USER_TWEETS' = '/graphql/xxLjoOBBPpYBHbBTI-hevQ/UserTweetsAndReplies',
12
+ 'USER_FOLLOWING' = '/graphql/mSnjZc5CTm2Z5Lu_i4XsPQ/Following',
13
+ 'USER_FOLLOWERS' = '/graphql/nwlAnaw7oKXcVLi91ehy7Q/Followers',
14
+ 'USER_LIKES' = '/graphql/gP4ZKghLd4tpILgS6VudAQ/Likes'
15
+ };
@@ -0,0 +1,100 @@
1
+ // PAYLOADS
2
+ import { Variables } from '../payloads/Variables';
3
+ import { Features } from '../payloads/Features';
4
+ import { Args } from '../payloads/Args';
5
+
6
+ // TYPES
7
+ import { IQuery } from '../types/request/Query';
8
+
9
+ // ENUMS
10
+ import { ResourceType } from '../enums/Resources';
11
+
12
+ /**
13
+ * The URL query parameters that must be sent while making requests to Twitter API.
14
+ */
15
+ export class Query implements IQuery {
16
+ cards_platform?: string;
17
+ count?: number;
18
+ cursor?: string;
19
+ ext?: string;
20
+ include_blocked_by?: number;
21
+ include_blocking?: number;
22
+ include_can_dm?: number;
23
+ include_can_media_tag?: number;
24
+ include_cards?: number;
25
+ include_entities?: boolean = true;
26
+ include_ext_alt_text?: boolean;
27
+ include_ext_collab_control?: boolean;
28
+ include_ext_edit_control?: boolean;
29
+ include_ext_has_nft_avatar?: number;
30
+ include_ext_is_blue_verified?: number;
31
+ include_ext_limited_action_results?: boolean;
32
+ include_ext_media_availability?: boolean;
33
+ include_ext_media_color?: boolean;
34
+ include_ext_sensitive_media_warning?: boolean;
35
+ include_ext_trusted_friends_metadata?: boolean;
36
+ include_ext_verified_type?: number;
37
+ include_ext_views?: boolean;
38
+ include_followed_by?: number;
39
+ include_mute_edge?: number;
40
+ include_profile_interstitial_type?: number;
41
+ include_quote_count?: boolean = true;
42
+ include_reply_count?: number = 1;
43
+ include_user_entities?: boolean = true;
44
+ include_want_retweets?: number = 1;
45
+ pc?: number;
46
+ q?: string;
47
+ query_source?: string;
48
+ send_error_codes?: boolean;
49
+ simple_quoted_tweet?: boolean;
50
+ skip_status?: number;
51
+ spelling_corrections?: number;
52
+ tweet_mode?: string = 'extended';
53
+ tweet_search_mode?: string = 'live';
54
+
55
+ /**
56
+ * Variables for fetching data.
57
+ */
58
+ variables?: string;
59
+
60
+ /**
61
+ * Additional data features that must be fetched.
62
+ */
63
+ features?: string;
64
+
65
+ /**
66
+ * Initializes the URL parameters.
67
+ *
68
+ * @param resourceType The type of resource requested.
69
+ * @param args Additional user-defined arguments to be sent in the request.
70
+ */
71
+ constructor(resourceType: ResourceType, args: Args) {
72
+ /**
73
+ * Only the endpoint for fetching tweets (using advanced search) requires the parameters defined in this class.
74
+ * All other endpoints required only 'variables' and 'features' fields.
75
+ */
76
+ if (resourceType == ResourceType.TWEETS) {
77
+ this.q = encodeURIComponent(args.query ?? '');
78
+ this.count = args.count;
79
+ this.cursor = args.cursor;
80
+ }
81
+ else {
82
+ this.variables = new Variables(resourceType, args).toString();
83
+ this.features = new Features().toString();
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Converts this object to it's string representation.
89
+ *
90
+ * @returns 'this' object's string representation;
91
+ */
92
+ toString(): string {
93
+ /**
94
+ * This first filters out all the empty paramters.
95
+ * Then it formats each parameter key value pair as 'key=value'.
96
+ * Then it joins the list of all formatted parameters using '&' as a separator.
97
+ */
98
+ return Object.entries(this).filter(([key, value]) => value).map(([key, value]) => `${key}=${value}`).join('&');
99
+ }
100
+ }
@@ -0,0 +1,21 @@
1
+ // TYPES
2
+ import { IArgs } from '../types/request/Query';
3
+
4
+ /**
5
+ * The arguments for fetching cursored list.
6
+ *
7
+ * @public
8
+ */
9
+ export class Args implements IArgs {
10
+ /** The query string that may be used to filter data. */
11
+ query?: string;
12
+
13
+ /** The rest id of the data item to be requested. */
14
+ id?: string;
15
+
16
+ /** The number of data items to fetch. */
17
+ count?: number;
18
+
19
+ /** The cursor to the batch of data to fetch. */
20
+ cursor?: string;
21
+ };