@book000/twitterts 0.57.55 → 0.58.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 (338) hide show
  1. package/dist/converter.d.ts +48 -0
  2. package/dist/converter.d.ts.map +1 -1
  3. package/dist/converter.js +94 -17
  4. package/dist/converter.js.map +1 -1
  5. package/dist/generate-types/custom-types-generator.d.ts +60 -1
  6. package/dist/generate-types/custom-types-generator.d.ts.map +1 -1
  7. package/dist/generate-types/custom-types-generator.js +213 -24
  8. package/dist/generate-types/custom-types-generator.js.map +1 -1
  9. package/dist/generate-types/endpoint-type-generator.d.ts +59 -5
  10. package/dist/generate-types/endpoint-type-generator.d.ts.map +1 -1
  11. package/dist/generate-types/endpoint-type-generator.js +63 -9
  12. package/dist/generate-types/endpoint-type-generator.js.map +1 -1
  13. package/dist/generate-types/types-generator.d.ts +42 -1
  14. package/dist/generate-types/types-generator.d.ts.map +1 -1
  15. package/dist/generate-types/types-generator.js +28 -6
  16. package/dist/generate-types/types-generator.js.map +1 -1
  17. package/dist/generate-types/utils.d.ts +39 -0
  18. package/dist/generate-types/utils.d.ts.map +1 -1
  19. package/dist/generate-types/utils.js +39 -0
  20. package/dist/generate-types/utils.js.map +1 -1
  21. package/dist/generate-types.js +65 -23
  22. package/dist/generate-types.js.map +1 -1
  23. package/dist/migrate-saved-response.js +24 -4
  24. package/dist/migrate-saved-response.js.map +1 -1
  25. package/dist/models/exceptions.d.ts +33 -0
  26. package/dist/models/exceptions.d.ts.map +1 -1
  27. package/dist/models/exceptions.js +33 -0
  28. package/dist/models/exceptions.js.map +1 -1
  29. package/dist/models/responses/custom/custom-entity-video-info-object.d.ts +11 -0
  30. package/dist/models/responses/custom/custom-entity-video-info-object.d.ts.map +1 -0
  31. package/dist/models/responses/custom/custom-entity-video-info-object.js +4 -0
  32. package/dist/models/responses/custom/custom-entity-video-info-object.js.map +1 -0
  33. package/dist/models/responses/custom/custom-graph-qltimeline-success-response.d.ts +11372 -3028
  34. package/dist/models/responses/custom/custom-graph-qltimeline-success-response.d.ts.map +1 -1
  35. package/dist/models/responses/custom/custom-graph-qltimeline-success-response.js +1 -0
  36. package/dist/models/responses/custom/custom-graph-qltimeline-success-response.js.map +1 -1
  37. package/dist/models/responses/custom/custom-search-timeline-entry.d.ts +2225 -316
  38. package/dist/models/responses/custom/custom-search-timeline-entry.d.ts.map +1 -1
  39. package/dist/models/responses/custom/custom-search-timeline-entry.js +1 -0
  40. package/dist/models/responses/custom/custom-search-timeline-entry.js.map +1 -1
  41. package/dist/models/responses/custom/custom-timeline-tweet-entry.d.ts +9410 -3511
  42. package/dist/models/responses/custom/custom-timeline-tweet-entry.d.ts.map +1 -1
  43. package/dist/models/responses/custom/custom-timeline-tweet-entry.js +1 -0
  44. package/dist/models/responses/custom/custom-timeline-tweet-entry.js.map +1 -1
  45. package/dist/models/responses/custom/custom-tweet-legacy-object.d.ts +4409 -1115
  46. package/dist/models/responses/custom/custom-tweet-legacy-object.d.ts.map +1 -1
  47. package/dist/models/responses/custom/custom-tweet-legacy-object.js +1 -0
  48. package/dist/models/responses/custom/custom-tweet-legacy-object.js.map +1 -1
  49. package/dist/models/responses/custom/custom-tweet-object.d.ts +10845 -2154
  50. package/dist/models/responses/custom/custom-tweet-object.d.ts.map +1 -1
  51. package/dist/models/responses/custom/custom-tweet-object.js +1 -0
  52. package/dist/models/responses/custom/custom-tweet-object.js.map +1 -1
  53. package/dist/models/responses/custom/custom-user-legacy-object.d.ts +9 -8
  54. package/dist/models/responses/custom/custom-user-legacy-object.d.ts.map +1 -1
  55. package/dist/models/responses/custom/custom-user-legacy-object.js +1 -0
  56. package/dist/models/responses/custom/custom-user-legacy-object.js.map +1 -1
  57. package/dist/models/responses/custom/custom-user-like-tweet-entry.d.ts +1483 -1224
  58. package/dist/models/responses/custom/custom-user-like-tweet-entry.d.ts.map +1 -1
  59. package/dist/models/responses/custom/custom-user-like-tweet-entry.js +1 -0
  60. package/dist/models/responses/custom/custom-user-like-tweet-entry.js.map +1 -1
  61. package/dist/models/responses/custom/custom-user-tweet-entry.d.ts +10995 -2446
  62. package/dist/models/responses/custom/custom-user-tweet-entry.d.ts.map +1 -1
  63. package/dist/models/responses/custom/custom-user-tweet-entry.js +1 -0
  64. package/dist/models/responses/custom/custom-user-tweet-entry.js.map +1 -1
  65. package/dist/models/responses/endpoints.d.ts +61 -36
  66. package/dist/models/responses/endpoints.d.ts.map +1 -1
  67. package/dist/models/responses/graphql/get/article-nudge-domains-error.d.ts +1 -0
  68. package/dist/models/responses/graphql/get/article-nudge-domains-error.d.ts.map +1 -1
  69. package/dist/models/responses/graphql/get/article-nudge-domains-error.js +1 -0
  70. package/dist/models/responses/graphql/get/article-nudge-domains-error.js.map +1 -1
  71. package/dist/models/responses/graphql/get/article-nudge-domains-success.d.ts +1 -0
  72. package/dist/models/responses/graphql/get/article-nudge-domains-success.d.ts.map +1 -1
  73. package/dist/models/responses/graphql/get/article-nudge-domains-success.js +1 -0
  74. package/dist/models/responses/graphql/get/article-nudge-domains-success.js.map +1 -1
  75. package/dist/models/responses/graphql/get/audio-space-by-id-success.d.ts +1446 -32
  76. package/dist/models/responses/graphql/get/audio-space-by-id-success.d.ts.map +1 -1
  77. package/dist/models/responses/graphql/get/audio-space-by-id-success.js +1 -0
  78. package/dist/models/responses/graphql/get/audio-space-by-id-success.js.map +1 -1
  79. package/dist/models/responses/graphql/get/authenticated-user-tflists-success.d.ts +1 -0
  80. package/dist/models/responses/graphql/get/authenticated-user-tflists-success.d.ts.map +1 -1
  81. package/dist/models/responses/graphql/get/authenticated-user-tflists-success.js +1 -0
  82. package/dist/models/responses/graphql/get/authenticated-user-tflists-success.js.map +1 -1
  83. package/dist/models/responses/graphql/get/bookmarks-success.d.ts +1 -0
  84. package/dist/models/responses/graphql/get/bookmarks-success.d.ts.map +1 -1
  85. package/dist/models/responses/graphql/get/bookmarks-success.js +1 -0
  86. package/dist/models/responses/graphql/get/bookmarks-success.js.map +1 -1
  87. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-error.d.ts +8 -0
  88. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-error.d.ts.map +1 -0
  89. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-error.js +4 -0
  90. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-error.js.map +1 -0
  91. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-success.d.ts +7 -1
  92. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-success.d.ts.map +1 -1
  93. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-success.js +1 -0
  94. package/dist/models/responses/graphql/get/communities-tab-bar-item-query-success.js.map +1 -1
  95. package/dist/models/responses/graphql/get/connect-tab-timeline-success.d.ts +1 -0
  96. package/dist/models/responses/graphql/get/connect-tab-timeline-success.d.ts.map +1 -1
  97. package/dist/models/responses/graphql/get/connect-tab-timeline-success.js +1 -0
  98. package/dist/models/responses/graphql/get/connect-tab-timeline-success.js.map +1 -1
  99. package/dist/models/responses/graphql/get/data-saver-mode-error.d.ts +1 -0
  100. package/dist/models/responses/graphql/get/data-saver-mode-error.d.ts.map +1 -1
  101. package/dist/models/responses/graphql/get/data-saver-mode-error.js +1 -0
  102. package/dist/models/responses/graphql/get/data-saver-mode-error.js.map +1 -1
  103. package/dist/models/responses/graphql/get/data-saver-mode-success.d.ts +1 -0
  104. package/dist/models/responses/graphql/get/data-saver-mode-success.d.ts.map +1 -1
  105. package/dist/models/responses/graphql/get/data-saver-mode-success.js +1 -0
  106. package/dist/models/responses/graphql/get/data-saver-mode-success.js.map +1 -1
  107. package/dist/models/responses/graphql/get/dmpinned-inbox-query-success.d.ts +1 -0
  108. package/dist/models/responses/graphql/get/dmpinned-inbox-query-success.d.ts.map +1 -1
  109. package/dist/models/responses/graphql/get/dmpinned-inbox-query-success.js +1 -0
  110. package/dist/models/responses/graphql/get/dmpinned-inbox-query-success.js.map +1 -1
  111. package/dist/models/responses/graphql/get/follow-host-button-query-success.d.ts +1 -0
  112. package/dist/models/responses/graphql/get/follow-host-button-query-success.d.ts.map +1 -1
  113. package/dist/models/responses/graphql/get/follow-host-button-query-success.js +1 -0
  114. package/dist/models/responses/graphql/get/follow-host-button-query-success.js.map +1 -1
  115. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-error.d.ts +1 -0
  116. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-error.d.ts.map +1 -1
  117. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-error.js +1 -0
  118. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-error.js.map +1 -1
  119. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-success.d.ts +1 -0
  120. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-success.d.ts.map +1 -1
  121. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-success.js +1 -0
  122. package/dist/models/responses/graphql/get/get-alt-text-prompt-preference-success.js.map +1 -1
  123. package/dist/models/responses/graphql/get/get-user-claims-error.d.ts +1 -0
  124. package/dist/models/responses/graphql/get/get-user-claims-error.d.ts.map +1 -1
  125. package/dist/models/responses/graphql/get/get-user-claims-error.js +1 -0
  126. package/dist/models/responses/graphql/get/get-user-claims-error.js.map +1 -1
  127. package/dist/models/responses/graphql/get/get-user-claims-success.d.ts +1 -0
  128. package/dist/models/responses/graphql/get/get-user-claims-success.d.ts.map +1 -1
  129. package/dist/models/responses/graphql/get/get-user-claims-success.js +1 -0
  130. package/dist/models/responses/graphql/get/get-user-claims-success.js.map +1 -1
  131. package/dist/models/responses/graphql/get/home-latest-timeline-error.d.ts +8 -0
  132. package/dist/models/responses/graphql/get/home-latest-timeline-error.d.ts.map +1 -0
  133. package/dist/models/responses/graphql/get/home-latest-timeline-error.js +4 -0
  134. package/dist/models/responses/graphql/get/home-latest-timeline-error.js.map +1 -0
  135. package/dist/models/responses/graphql/get/home-latest-timeline-success.d.ts +7278 -2237
  136. package/dist/models/responses/graphql/get/home-latest-timeline-success.d.ts.map +1 -1
  137. package/dist/models/responses/graphql/get/home-latest-timeline-success.js +1 -0
  138. package/dist/models/responses/graphql/get/home-latest-timeline-success.js.map +1 -1
  139. package/dist/models/responses/graphql/get/home-timeline-success.d.ts +11757 -2587
  140. package/dist/models/responses/graphql/get/home-timeline-success.d.ts.map +1 -1
  141. package/dist/models/responses/graphql/get/home-timeline-success.js +1 -0
  142. package/dist/models/responses/graphql/get/home-timeline-success.js.map +1 -1
  143. package/dist/models/responses/graphql/get/likes-error.d.ts +1 -0
  144. package/dist/models/responses/graphql/get/likes-error.d.ts.map +1 -1
  145. package/dist/models/responses/graphql/get/likes-error.js +1 -0
  146. package/dist/models/responses/graphql/get/likes-error.js.map +1 -1
  147. package/dist/models/responses/graphql/get/likes-success.d.ts +1496 -1220
  148. package/dist/models/responses/graphql/get/likes-success.d.ts.map +1 -1
  149. package/dist/models/responses/graphql/get/likes-success.js +1 -0
  150. package/dist/models/responses/graphql/get/likes-success.js.map +1 -1
  151. package/dist/models/responses/graphql/get/list-latest-tweets-timeline-success.d.ts +3375 -1587
  152. package/dist/models/responses/graphql/get/list-latest-tweets-timeline-success.d.ts.map +1 -1
  153. package/dist/models/responses/graphql/get/list-latest-tweets-timeline-success.js +1 -0
  154. package/dist/models/responses/graphql/get/list-latest-tweets-timeline-success.js.map +1 -1
  155. package/dist/models/responses/graphql/get/list-pins-error.d.ts +1 -0
  156. package/dist/models/responses/graphql/get/list-pins-error.d.ts.map +1 -1
  157. package/dist/models/responses/graphql/get/list-pins-error.js +1 -0
  158. package/dist/models/responses/graphql/get/list-pins-error.js.map +1 -1
  159. package/dist/models/responses/graphql/get/list-pins-success.d.ts +4 -3
  160. package/dist/models/responses/graphql/get/list-pins-success.d.ts.map +1 -1
  161. package/dist/models/responses/graphql/get/list-pins-success.js +1 -0
  162. package/dist/models/responses/graphql/get/list-pins-success.js.map +1 -1
  163. package/dist/models/responses/graphql/get/lists-management-page-timeline-success.d.ts +1 -0
  164. package/dist/models/responses/graphql/get/lists-management-page-timeline-success.d.ts.map +1 -1
  165. package/dist/models/responses/graphql/get/lists-management-page-timeline-success.js +1 -0
  166. package/dist/models/responses/graphql/get/lists-management-page-timeline-success.js.map +1 -1
  167. package/dist/models/responses/graphql/get/pinned-timelines-error.d.ts +8 -0
  168. package/dist/models/responses/graphql/get/pinned-timelines-error.d.ts.map +1 -0
  169. package/dist/models/responses/graphql/get/pinned-timelines-error.js +4 -0
  170. package/dist/models/responses/graphql/get/pinned-timelines-error.js.map +1 -0
  171. package/dist/models/responses/graphql/get/pinned-timelines-success.d.ts +168 -0
  172. package/dist/models/responses/graphql/get/pinned-timelines-success.d.ts.map +1 -0
  173. package/dist/models/responses/graphql/get/pinned-timelines-success.js +4 -0
  174. package/dist/models/responses/graphql/get/pinned-timelines-success.js.map +1 -0
  175. package/dist/models/responses/graphql/get/profile-spotlights-query-error.d.ts +2 -1
  176. package/dist/models/responses/graphql/get/profile-spotlights-query-error.d.ts.map +1 -1
  177. package/dist/models/responses/graphql/get/profile-spotlights-query-error.js +1 -0
  178. package/dist/models/responses/graphql/get/profile-spotlights-query-error.js.map +1 -1
  179. package/dist/models/responses/graphql/get/profile-spotlights-query-success.d.ts +171 -1
  180. package/dist/models/responses/graphql/get/profile-spotlights-query-success.d.ts.map +1 -1
  181. package/dist/models/responses/graphql/get/profile-spotlights-query-success.js +1 -0
  182. package/dist/models/responses/graphql/get/profile-spotlights-query-success.js.map +1 -1
  183. package/dist/models/responses/graphql/get/quick-promote-eligibility-success.d.ts +1 -0
  184. package/dist/models/responses/graphql/get/quick-promote-eligibility-success.d.ts.map +1 -1
  185. package/dist/models/responses/graphql/get/quick-promote-eligibility-success.js +1 -0
  186. package/dist/models/responses/graphql/get/quick-promote-eligibility-success.js.map +1 -1
  187. package/dist/models/responses/graphql/get/search-timeline-error.d.ts +8 -0
  188. package/dist/models/responses/graphql/get/search-timeline-error.d.ts.map +1 -0
  189. package/dist/models/responses/graphql/get/search-timeline-error.js +4 -0
  190. package/dist/models/responses/graphql/get/search-timeline-error.js.map +1 -0
  191. package/dist/models/responses/graphql/get/search-timeline-success.d.ts +2244 -242
  192. package/dist/models/responses/graphql/get/search-timeline-success.d.ts.map +1 -1
  193. package/dist/models/responses/graphql/get/search-timeline-success.js +1 -0
  194. package/dist/models/responses/graphql/get/search-timeline-success.js.map +1 -1
  195. package/dist/models/responses/graphql/get/tweet-detail-error.d.ts +1 -0
  196. package/dist/models/responses/graphql/get/tweet-detail-error.d.ts.map +1 -1
  197. package/dist/models/responses/graphql/get/tweet-detail-error.js +1 -0
  198. package/dist/models/responses/graphql/get/tweet-detail-error.js.map +1 -1
  199. package/dist/models/responses/graphql/get/tweet-detail-success.d.ts +7359 -435
  200. package/dist/models/responses/graphql/get/tweet-detail-success.d.ts.map +1 -1
  201. package/dist/models/responses/graphql/get/tweet-detail-success.js +1 -0
  202. package/dist/models/responses/graphql/get/tweet-detail-success.js.map +1 -1
  203. package/dist/models/responses/graphql/get/tweet-result-by-rest-id-success.d.ts +1964 -0
  204. package/dist/models/responses/graphql/get/tweet-result-by-rest-id-success.d.ts.map +1 -0
  205. package/dist/models/responses/graphql/get/tweet-result-by-rest-id-success.js +4 -0
  206. package/dist/models/responses/graphql/get/tweet-result-by-rest-id-success.js.map +1 -0
  207. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-error.d.ts +8 -0
  208. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-error.d.ts.map +1 -0
  209. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-error.js +4 -0
  210. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-error.js.map +1 -0
  211. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-success.d.ts +14 -0
  212. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-success.d.ts.map +1 -0
  213. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-success.js +4 -0
  214. package/dist/models/responses/graphql/get/use-fetch-profile-blocks-profile-exists-query-success.js.map +1 -0
  215. package/dist/models/responses/graphql/get/user-by-rest-id-error.d.ts +8 -0
  216. package/dist/models/responses/graphql/get/user-by-rest-id-error.d.ts.map +1 -0
  217. package/dist/models/responses/graphql/get/user-by-rest-id-error.js +4 -0
  218. package/dist/models/responses/graphql/get/user-by-rest-id-error.js.map +1 -0
  219. package/dist/models/responses/graphql/get/user-by-rest-id-success.d.ts +49 -6
  220. package/dist/models/responses/graphql/get/user-by-rest-id-success.d.ts.map +1 -1
  221. package/dist/models/responses/graphql/get/user-by-rest-id-success.js +1 -0
  222. package/dist/models/responses/graphql/get/user-by-rest-id-success.js.map +1 -1
  223. package/dist/models/responses/graphql/get/user-by-screen-name-error.d.ts +1 -0
  224. package/dist/models/responses/graphql/get/user-by-screen-name-error.d.ts.map +1 -1
  225. package/dist/models/responses/graphql/get/user-by-screen-name-error.js +1 -0
  226. package/dist/models/responses/graphql/get/user-by-screen-name-error.js.map +1 -1
  227. package/dist/models/responses/graphql/get/user-by-screen-name-success.d.ts +44 -19
  228. package/dist/models/responses/graphql/get/user-by-screen-name-success.d.ts.map +1 -1
  229. package/dist/models/responses/graphql/get/user-by-screen-name-success.js +1 -0
  230. package/dist/models/responses/graphql/get/user-by-screen-name-success.js.map +1 -1
  231. package/dist/models/responses/graphql/get/user-media-success.d.ts +1 -0
  232. package/dist/models/responses/graphql/get/user-media-success.d.ts.map +1 -1
  233. package/dist/models/responses/graphql/get/user-media-success.js +1 -0
  234. package/dist/models/responses/graphql/get/user-media-success.js.map +1 -1
  235. package/dist/models/responses/graphql/get/user-tweets-and-replies-success.d.ts +1 -0
  236. package/dist/models/responses/graphql/get/user-tweets-and-replies-success.d.ts.map +1 -1
  237. package/dist/models/responses/graphql/get/user-tweets-and-replies-success.js +1 -0
  238. package/dist/models/responses/graphql/get/user-tweets-and-replies-success.js.map +1 -1
  239. package/dist/models/responses/graphql/get/user-tweets-error.d.ts +1 -0
  240. package/dist/models/responses/graphql/get/user-tweets-error.d.ts.map +1 -1
  241. package/dist/models/responses/graphql/get/user-tweets-error.js +1 -0
  242. package/dist/models/responses/graphql/get/user-tweets-error.js.map +1 -1
  243. package/dist/models/responses/graphql/get/user-tweets-success.d.ts +18299 -3027
  244. package/dist/models/responses/graphql/get/user-tweets-success.d.ts.map +1 -1
  245. package/dist/models/responses/graphql/get/user-tweets-success.js +1 -0
  246. package/dist/models/responses/graphql/get/user-tweets-success.js.map +1 -1
  247. package/dist/models/responses/graphql/get/users-by-rest-ids-success.d.ts +1 -0
  248. package/dist/models/responses/graphql/get/users-by-rest-ids-success.d.ts.map +1 -1
  249. package/dist/models/responses/graphql/get/users-by-rest-ids-success.js +1 -0
  250. package/dist/models/responses/graphql/get/users-by-rest-ids-success.js.map +1 -1
  251. package/dist/models/responses/graphql/get/users-verified-avatars-success.d.ts +1 -0
  252. package/dist/models/responses/graphql/get/users-verified-avatars-success.d.ts.map +1 -1
  253. package/dist/models/responses/graphql/get/users-verified-avatars-success.js +1 -0
  254. package/dist/models/responses/graphql/get/users-verified-avatars-success.js.map +1 -1
  255. package/dist/models/responses/graphql/get/viewer-error.d.ts +8 -0
  256. package/dist/models/responses/graphql/get/viewer-error.d.ts.map +1 -0
  257. package/dist/models/responses/graphql/get/viewer-error.js +4 -0
  258. package/dist/models/responses/graphql/get/viewer-error.js.map +1 -0
  259. package/dist/models/responses/graphql/get/viewer-success.d.ts +76 -26
  260. package/dist/models/responses/graphql/get/viewer-success.d.ts.map +1 -1
  261. package/dist/models/responses/graphql/get/viewer-success.js +1 -0
  262. package/dist/models/responses/graphql/get/viewer-success.js.map +1 -1
  263. package/dist/models/responses/graphql/post/create-retweet-success.d.ts +1 -0
  264. package/dist/models/responses/graphql/post/create-retweet-success.d.ts.map +1 -1
  265. package/dist/models/responses/graphql/post/create-retweet-success.js +1 -0
  266. package/dist/models/responses/graphql/post/create-retweet-success.js.map +1 -1
  267. package/dist/models/responses/graphql/post/delete-retweet-success.d.ts +1 -0
  268. package/dist/models/responses/graphql/post/delete-retweet-success.d.ts.map +1 -1
  269. package/dist/models/responses/graphql/post/delete-retweet-success.js +1 -0
  270. package/dist/models/responses/graphql/post/delete-retweet-success.js.map +1 -1
  271. package/dist/models/responses/graphql/post/favorite-tweet-success.d.ts +1 -0
  272. package/dist/models/responses/graphql/post/favorite-tweet-success.d.ts.map +1 -1
  273. package/dist/models/responses/graphql/post/favorite-tweet-success.js +1 -0
  274. package/dist/models/responses/graphql/post/favorite-tweet-success.js.map +1 -1
  275. package/dist/models/responses/graphql/post/home-latest-timeline-error.d.ts +1 -0
  276. package/dist/models/responses/graphql/post/home-latest-timeline-error.d.ts.map +1 -1
  277. package/dist/models/responses/graphql/post/home-latest-timeline-error.js +1 -0
  278. package/dist/models/responses/graphql/post/home-latest-timeline-error.js.map +1 -1
  279. package/dist/models/responses/graphql/post/home-latest-timeline-success.d.ts +8155 -2720
  280. package/dist/models/responses/graphql/post/home-latest-timeline-success.d.ts.map +1 -1
  281. package/dist/models/responses/graphql/post/home-latest-timeline-success.js +1 -0
  282. package/dist/models/responses/graphql/post/home-latest-timeline-success.js.map +1 -1
  283. package/dist/models/responses/graphql/post/home-timeline-success.d.ts +10471 -2451
  284. package/dist/models/responses/graphql/post/home-timeline-success.d.ts.map +1 -1
  285. package/dist/models/responses/graphql/post/home-timeline-success.js +1 -0
  286. package/dist/models/responses/graphql/post/home-timeline-success.js.map +1 -1
  287. package/dist/models/responses/graphql/post/put-client-education-flag-success.d.ts +1 -0
  288. package/dist/models/responses/graphql/post/put-client-education-flag-success.d.ts.map +1 -1
  289. package/dist/models/responses/graphql/post/put-client-education-flag-success.js +1 -0
  290. package/dist/models/responses/graphql/post/put-client-education-flag-success.js.map +1 -1
  291. package/dist/models/responses/graphql/post/unfavorite-tweet-success.d.ts +1 -0
  292. package/dist/models/responses/graphql/post/unfavorite-tweet-success.d.ts.map +1 -1
  293. package/dist/models/responses/graphql/post/unfavorite-tweet-success.js +1 -0
  294. package/dist/models/responses/graphql/post/unfavorite-tweet-success.js.map +1 -1
  295. package/dist/options.d.ts +72 -0
  296. package/dist/options.d.ts.map +1 -1
  297. package/dist/options.js +14 -0
  298. package/dist/options.js.map +1 -1
  299. package/dist/parser/base.d.ts +6 -0
  300. package/dist/parser/base.d.ts.map +1 -1
  301. package/dist/parser/base.js +6 -0
  302. package/dist/parser/base.js.map +1 -1
  303. package/dist/parser/home-timeline-parser.d.ts +11 -0
  304. package/dist/parser/home-timeline-parser.d.ts.map +1 -1
  305. package/dist/parser/home-timeline-parser.js +14 -0
  306. package/dist/parser/home-timeline-parser.js.map +1 -1
  307. package/dist/parser/search-timeline.d.ts +11 -0
  308. package/dist/parser/search-timeline.d.ts.map +1 -1
  309. package/dist/parser/search-timeline.js +14 -0
  310. package/dist/parser/search-timeline.js.map +1 -1
  311. package/dist/parser/user-like-tweets.d.ts +11 -0
  312. package/dist/parser/user-like-tweets.d.ts.map +1 -1
  313. package/dist/parser/user-like-tweets.js +11 -0
  314. package/dist/parser/user-like-tweets.js.map +1 -1
  315. package/dist/parser/user-tweets.d.ts +11 -0
  316. package/dist/parser/user-tweets.d.ts.map +1 -1
  317. package/dist/parser/user-tweets.js +11 -0
  318. package/dist/parser/user-tweets.js.map +1 -1
  319. package/dist/save-responses.js +11 -0
  320. package/dist/save-responses.js.map +1 -1
  321. package/dist/saving-responses/index.d.ts +81 -0
  322. package/dist/saving-responses/index.d.ts.map +1 -1
  323. package/dist/saving-responses/index.js +105 -4
  324. package/dist/saving-responses/index.js.map +1 -1
  325. package/dist/scraper.d.ts +247 -0
  326. package/dist/scraper.d.ts.map +1 -1
  327. package/dist/scraper.js +144 -0
  328. package/dist/scraper.js.map +1 -1
  329. package/dist/tsconfig.build.tsbuildinfo +1 -1
  330. package/dist/twitter.d.ts +119 -0
  331. package/dist/twitter.d.ts.map +1 -1
  332. package/dist/twitter.js +163 -1
  333. package/dist/twitter.js.map +1 -1
  334. package/package.json +1 -1
  335. package/dist/parser/parser.test.d.ts +0 -2
  336. package/dist/parser/parser.test.d.ts.map +0 -1
  337. package/dist/parser/parser.test.js +0 -92
  338. package/dist/parser/parser.test.js.map +0 -1
package/dist/twitter.d.ts CHANGED
@@ -3,28 +3,147 @@ import { TwitterScraper, TwitterScraperOptions } from './scraper';
3
3
  import { GraphQLGetUserByScreenNameSuccessResponse } from './models/responses/graphql/get/user-by-screen-name-success';
4
4
  import { FullUser, Status } from 'twitter-d';
5
5
  import { CustomTweetObject } from './models/responses/custom/custom-tweet-object';
6
+ /**
7
+ * {@link TwitterOptions} オプション
8
+ */
6
9
  export type TwitterOptions = TwitterScraperOptions;
10
+ /**
11
+ * Twitter スクレイピングライブラリクラス
12
+ */
7
13
  export declare class Twitter {
8
14
  readonly scraper: TwitterScraper;
15
+ /**
16
+ * @param scraper {@link TwitterScraper} インスタンス
17
+ */
9
18
  private constructor();
19
+ /**
20
+ * Twitter にログインする
21
+ *
22
+ * @param options ログインオプション
23
+ * @returns Twitter インスタンス
24
+ */
10
25
  static login(options: TwitterOptions): Promise<Twitter>;
26
+ /**
27
+ * スクリーンネームからユーザー情報を取得する
28
+ *
29
+ * @param options ユーザー情報取得オプション
30
+ * @returns ユーザー情報
31
+ */
11
32
  getUserByScreenName(options: GetUserByScreenNameOptions): Promise<GraphQLGetUserByScreenNameSuccessResponse>;
33
+ /**
34
+ * ユーザー ID からスクリーンネームを取得する
35
+ *
36
+ * @param userId ユーザー ID
37
+ * @returns スクリーンネーム
38
+ */
12
39
  getScreenNameByUserId(options: GetScreenNameByUserIdOptions): Promise<string>;
40
+ /**
41
+ * ユーザー ID からスクリーンネームを取得する
42
+ *
43
+ * @param userId ユーザー ID
44
+ * @returns スクリーンネーム
45
+ */
13
46
  getUserByUserId(options: GetUserByUserIdOptions): Promise<FullUser>;
47
+ /**
48
+ * ユーザー ID からユーザー情報を取得する。ユーザー情報は生レスポンスで返す
49
+ *
50
+ * @param userId ユーザー ID
51
+ * @returns ユーザー情報(生レスポンス)
52
+ */
14
53
  getRawUserByUserId(options: GetUserByUserIdOptions): Promise<GraphQLGetUserByScreenNameSuccessResponse>;
54
+ /**
55
+ * ホームタイムラインのツイートを取得する。
56
+ *
57
+ * @param options ホームタイムライン取得オプション
58
+ * @returns ホームタイムラインのツイート
59
+ */
15
60
  getHomeTimelineTweets(options: GetHomeTimelineTweetsOptions): Promise<Status[]>;
61
+ /**
62
+ * ホームタイムラインのツイートを取得する。ツイートは非正規化ツイート(CustomTweetObject)で返す
63
+ *
64
+ * @param options ホームタイムライン取得オプション
65
+ * @returns ホームタイムラインのツイート(非正規化ツイート)
66
+ */
16
67
  getHomeTimelineRawTweets(options: GetHomeTimelineTweetsOptions): Promise<CustomTweetObject[]>;
68
+ /**
69
+ * ツイートを検索する。
70
+ *
71
+ * @param options 検索オプション
72
+ * @returns 検索結果
73
+ */
17
74
  searchTweets(options: SearchTweetsOptions): Promise<Status[]>;
75
+ /**
76
+ * ツイートを検索する。ツイートは非正規化ツイート(CustomTweetObject)で返す
77
+ *
78
+ * @param options 検索オプション
79
+ * @returns 検索結果(非正規化ツイート)
80
+ */
18
81
  searchRawTweets(options: SearchTweetsOptions): Promise<CustomTweetObject[]>;
82
+ /**
83
+ * ユーザーのツイートを取得する
84
+ *
85
+ * @param options ユーザーツイート取得オプション
86
+ * @returns ユーザーのツイート
87
+ */
19
88
  getUserTweets(options: GetUserTweetsOptions): Promise<Status[]>;
89
+ /**
90
+ * ユーザーのいいねしたツイートを取得する
91
+ *
92
+ * @param options ユーザーいいねツイート取得オプション
93
+ * @returns ユーザーのツイート
94
+ */
20
95
  getUserLikeTweets(options: GetUserLikeTweetsOptions): Promise<Status[]>;
96
+ /**
97
+ * ツイートの情報を取得する
98
+ *
99
+ * @param options ツイート取得オプション
100
+ * @returns ツイート
101
+ */
21
102
  getTweet(options: GetTweetOptions): Promise<Status>;
103
+ /**
104
+ * ツイートの生情報を取得する
105
+ *
106
+ * @param options ツイート取得オプション
107
+ * @returns ツイートの生情報
108
+ */
22
109
  getRawTweet(options: GetTweetOptions): Promise<CustomTweetObject>;
110
+ /**
111
+ * ツイートをいいねする
112
+ *
113
+ * @param options いいねオプション
114
+ * @returns いいねできたかどうかの文字列(Done)
115
+ */
23
116
  likeTweet(options: LikeTweetOptions): Promise<string | undefined>;
117
+ /**
118
+ * ツイートのいいねを解除する
119
+ *
120
+ * @param options いいね解除オプション
121
+ * @returns いいね解除できたかどうかの文字列(Done)
122
+ */
24
123
  unlikeTweet(options: UnlikeTweetOptions): Promise<string | undefined>;
124
+ /**
125
+ * ユーザーをブロックする
126
+ *
127
+ * @param options ブロックオプション
128
+ */
25
129
  blockUser(options: BlockUserOptions): Promise<void>;
130
+ /**
131
+ * ユーザーのブロックを解除する
132
+ *
133
+ * @param options ブロック解除オプション
134
+ */
26
135
  unblockUser(options: UnblockUserOptions): Promise<void>;
136
+ /**
137
+ * ブラウザを閉じる
138
+ */
27
139
  close(): Promise<void>;
140
+ /**
141
+ * エラーレスポンスかどうかを判定する。
142
+ * これを使うことでエラーがどうかは判定できるが、レスポンス型は保証されないので利用側で型保証されるメソッドを書いたほうがよい。
143
+ *
144
+ * @param response レスポンス
145
+ * @returns エラーレスポンスかどうか
146
+ */
28
147
  isErrorResponse(response: any): response is {
29
148
  errors: any[];
30
149
  };
@@ -1 +1 @@
1
- {"version":3,"file":"twitter.d.ts","sourceRoot":"","sources":["../src/twitter.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EAEnB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAE5B,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,WAAW,CAAA;AAIlB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAGjE,OAAO,EAAE,yCAAyC,EAAE,MAAM,4DAA4D,CAAA;AACtH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AAMjF,MAAM,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAKlD,qBAAa,OAAO;IAClB,SAAgB,OAAO,EAAE,cAAc,CAAA;IAKvC,OAAO;WAUa,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAYvD,mBAAmB,CAC9B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yCAAyC,CAAC;IAkCxC,qBAAqB,CAChC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,CAAC;IAeL,eAAe,CAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAeP,kBAAkB,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,yCAAyC,CAAC;IAyCxC,qBAAqB,CAChC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,EAAE,CAAC;IAcP,wBAAwB,CACnC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAoFlB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAc7D,eAAe,CAC1B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA+DlB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0D/D,iBAAiB,CAC5B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;IA8DP,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnD,WAAW,CACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,iBAAiB,CAAC;IA0DhB,SAAS,CACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA6FjB,WAAW,CACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA4FjB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEnD,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDvD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,IAAI;QAAE,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE;YAItD,aAAa;CAwB5B"}
1
+ {"version":3,"file":"twitter.d.ts","sourceRoot":"","sources":["../src/twitter.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EAEnB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAE5B,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,WAAW,CAAA;AAIlB,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAGjE,OAAO,EAAE,yCAAyC,EAAE,MAAM,4DAA4D,CAAA;AACtH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AAGjF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAElD;;GAEG;AACH,qBAAa,OAAO;IAClB,SAAgB,OAAO,EAAE,cAAc,CAAA;IAEvC;;OAEG;IACH,OAAO;IAIP;;;;;OAKG;WACiB,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpE;;;;;OAKG;IACU,mBAAmB,CAC9B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yCAAyC,CAAC;IA4BrD;;;;;OAKG;IACU,qBAAqB,CAChC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,CAAC;IASlB;;;;;OAKG;IACU,eAAe,CAC1B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IASpB;;;;;OAKG;IACU,kBAAkB,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,yCAAyC,CAAC;IAmCrD;;;;;OAKG;IACU,qBAAqB,CAChC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,EAAE,CAAC;IAQpB;;;;;OAKG;IACU,wBAAwB,CACnC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA8E/B;;;;;OAKG;IACU,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ1E;;;;;OAKG;IACU,eAAe,CAC1B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAyD/B;;;;;OAKG;IACU,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAoD5E;;;;;OAKG;IACU,iBAAiB,CAC5B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;IAwDpB;;;;;OAKG;IACU,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhE;;;;;OAKG;IACU,WAAW,CACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAoD7B;;;;;OAKG;IACU,SAAS,CACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAuF9B;;;;;OAKG;IACU,WAAW,CACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAuF9B;;;;OAIG;IACU,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DhE;;;;OAIG;IACU,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDpE;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;;;;;OAMG;IACI,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,IAAI;QAAE,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE;YAItD,aAAa;CAwB5B"}
package/dist/twitter.js CHANGED
@@ -10,15 +10,33 @@ const user_tweets_1 = require("./parser/user-tweets");
10
10
  const scraper_1 = require("./scraper");
11
11
  const converter_1 = require("./converter");
12
12
  const home_timeline_parser_1 = require("./parser/home-timeline-parser");
13
+ /**
14
+ * Twitter スクレイピングライブラリクラス
15
+ */
13
16
  class Twitter {
17
+ /**
18
+ * @param scraper {@link TwitterScraper} インスタンス
19
+ */
14
20
  constructor(scraper) {
15
21
  this.scraper = scraper;
16
22
  }
23
+ /**
24
+ * Twitter にログインする
25
+ *
26
+ * @param options ログインオプション
27
+ * @returns Twitter インスタンス
28
+ */
17
29
  static async login(options) {
18
30
  const scraper = new scraper_1.TwitterScraper(options);
19
31
  await scraper.login();
20
32
  return new Twitter(scraper);
21
33
  }
34
+ /**
35
+ * スクリーンネームからユーザー情報を取得する
36
+ *
37
+ * @param options ユーザー情報取得オプション
38
+ * @returns ユーザー情報
39
+ */
22
40
  async getUserByScreenName(options) {
23
41
  if (!options.screenName) {
24
42
  throw new exceptions_1.IllegalArgumentError('screenName is required');
@@ -42,6 +60,12 @@ class Twitter {
42
60
  }
43
61
  return response;
44
62
  }
63
+ /**
64
+ * ユーザー ID からスクリーンネームを取得する
65
+ *
66
+ * @param userId ユーザー ID
67
+ * @returns スクリーンネーム
68
+ */
45
69
  async getScreenNameByUserId(options) {
46
70
  if (!options.userId) {
47
71
  throw new exceptions_1.IllegalArgumentError('userId is required');
@@ -49,6 +73,12 @@ class Twitter {
49
73
  const user = await this.getRawUserByUserId(options);
50
74
  return user.data.user.result.legacy.screen_name;
51
75
  }
76
+ /**
77
+ * ユーザー ID からスクリーンネームを取得する
78
+ *
79
+ * @param userId ユーザー ID
80
+ * @returns スクリーンネーム
81
+ */
52
82
  async getUserByUserId(options) {
53
83
  if (!options.userId) {
54
84
  throw new exceptions_1.IllegalArgumentError('userId is required');
@@ -56,13 +86,21 @@ class Twitter {
56
86
  const user = await this.getRawUserByUserId(options);
57
87
  return converter_1.ObjectConverter.convertToFullUser(user);
58
88
  }
89
+ /**
90
+ * ユーザー ID からユーザー情報を取得する。ユーザー情報は生レスポンスで返す
91
+ *
92
+ * @param userId ユーザー ID
93
+ * @returns ユーザー情報(生レスポンス)
94
+ */
59
95
  async getRawUserByUserId(options) {
96
+ // TODO: ユーザー情報をv1.1あたりのモデルに変換する処理を入れた方がいい
60
97
  if (!options.userId) {
61
98
  throw new exceptions_1.IllegalArgumentError('userId is required');
62
99
  }
63
100
  const page = await this.scraper.getScraperPage();
64
101
  let response;
65
102
  try {
103
+ // UserByRestIdだとログインユーザー自分自身の場合に取得できない。
66
104
  response = await page.waitSingleResponse(`https://twitter.com/intent/user?user_id=${options.userId}`, 'GET', 'GRAPHQL', 'UserByScreenName');
67
105
  }
68
106
  catch (error) {
@@ -82,11 +120,25 @@ class Twitter {
82
120
  }
83
121
  return response;
84
122
  }
123
+ /**
124
+ * ホームタイムラインのツイートを取得する。
125
+ *
126
+ * @param options ホームタイムライン取得オプション
127
+ * @returns ホームタイムラインのツイート
128
+ */
85
129
  async getHomeTimelineTweets(options) {
86
130
  const rawTweets = await this.getHomeTimelineRawTweets(options);
87
131
  return rawTweets.map((rawTweet) => converter_1.ObjectConverter.convertToStatus(rawTweet));
88
132
  }
133
+ /**
134
+ * ホームタイムラインのツイートを取得する。ツイートは非正規化ツイート(CustomTweetObject)で返す
135
+ *
136
+ * @param options ホームタイムライン取得オプション
137
+ * @returns ホームタイムラインのツイート(非正規化ツイート)
138
+ */
89
139
  async getHomeTimelineRawTweets(options) {
140
+ // おすすめタブ: HomeTimeline
141
+ // フォロー中タブ: HomeLatestTimeline
90
142
  if (!options.timelineType) {
91
143
  throw new exceptions_1.IllegalArgumentError('timelineType is required');
92
144
  }
@@ -102,6 +154,7 @@ class Twitter {
102
154
  const results = [];
103
155
  try {
104
156
  await page.goto(url);
157
+ // タブ選択
105
158
  const tabs = await page.page.$$('nav[aria-live="polite"] div[role="tablist"] > div');
106
159
  const tabIndex = options.timelineType === options_1.TimelineType.RECOMMEND ? 0 : 1;
107
160
  if (!tabs[tabIndex]) {
@@ -111,6 +164,7 @@ class Twitter {
111
164
  let lastResponseAt = Date.now();
112
165
  while (true) {
113
166
  if (Date.now() - lastResponseAt > 1000 * 30) {
167
+ // 30秒以上レスポンスがない場合はタイムアウトとして終了
114
168
  break;
115
169
  }
116
170
  const getResponse = page.shiftResponse('GET', 'GRAPHQL', endpointName);
@@ -144,10 +198,22 @@ class Twitter {
144
198
  }
145
199
  return results;
146
200
  }
201
+ /**
202
+ * ツイートを検索する。
203
+ *
204
+ * @param options 検索オプション
205
+ * @returns 検索結果
206
+ */
147
207
  async searchTweets(options) {
148
208
  const rawTweets = await this.searchRawTweets(options);
149
209
  return rawTweets.map((rawTweet) => converter_1.ObjectConverter.convertToStatus(rawTweet));
150
210
  }
211
+ /**
212
+ * ツイートを検索する。ツイートは非正規化ツイート(CustomTweetObject)で返す
213
+ *
214
+ * @param options 検索オプション
215
+ * @returns 検索結果(非正規化ツイート)
216
+ */
151
217
  async searchRawTweets(options) {
152
218
  if (!options.query) {
153
219
  throw new exceptions_1.IllegalArgumentError('query is required');
@@ -167,6 +233,7 @@ class Twitter {
167
233
  let lastResponseAt = Date.now();
168
234
  while (true) {
169
235
  if (Date.now() - lastResponseAt > 1000 * 30) {
236
+ // 30秒以上レスポンスがない場合はタイムアウトとして終了
170
237
  break;
171
238
  }
172
239
  const response = page.shiftResponse('GET', 'GRAPHQL', 'SearchTimeline');
@@ -197,6 +264,12 @@ class Twitter {
197
264
  }
198
265
  return results;
199
266
  }
267
+ /**
268
+ * ユーザーのツイートを取得する
269
+ *
270
+ * @param options ユーザーツイート取得オプション
271
+ * @returns ユーザーのツイート
272
+ */
200
273
  async getUserTweets(options) {
201
274
  if (!options.screenName) {
202
275
  throw new exceptions_1.IllegalArgumentError('screenName is required');
@@ -214,6 +287,7 @@ class Twitter {
214
287
  let lastResponseAt = Date.now();
215
288
  while (true) {
216
289
  if (Date.now() - lastResponseAt > 1000 * 30) {
290
+ // 30秒以上レスポンスがない場合はタイムアウトとして終了
217
291
  break;
218
292
  }
219
293
  const response = page.shiftResponse('GET', 'GRAPHQL', 'UserTweets');
@@ -244,6 +318,12 @@ class Twitter {
244
318
  }
245
319
  return results;
246
320
  }
321
+ /**
322
+ * ユーザーのいいねしたツイートを取得する
323
+ *
324
+ * @param options ユーザーいいねツイート取得オプション
325
+ * @returns ユーザーのツイート
326
+ */
247
327
  async getUserLikeTweets(options) {
248
328
  if (!options.screenName) {
249
329
  throw new exceptions_1.IllegalArgumentError('screenName is required');
@@ -261,6 +341,7 @@ class Twitter {
261
341
  let lastResponseAt = Date.now();
262
342
  while (true) {
263
343
  if (Date.now() - lastResponseAt > 1000 * 30) {
344
+ // 30秒以上レスポンスがない場合はタイムアウトとして終了
264
345
  break;
265
346
  }
266
347
  const response = page.shiftResponse('GET', 'GRAPHQL', 'Likes');
@@ -291,10 +372,22 @@ class Twitter {
291
372
  }
292
373
  return results;
293
374
  }
375
+ /**
376
+ * ツイートの情報を取得する
377
+ *
378
+ * @param options ツイート取得オプション
379
+ * @returns ツイート
380
+ */
294
381
  async getTweet(options) {
295
382
  const rawTweet = await this.getRawTweet(options);
296
383
  return converter_1.ObjectConverter.convertToStatus(rawTweet);
297
384
  }
385
+ /**
386
+ * ツイートの生情報を取得する
387
+ *
388
+ * @param options ツイート取得オプション
389
+ * @returns ツイートの生情報
390
+ */
298
391
  async getRawTweet(options) {
299
392
  if (!options.tweetId) {
300
393
  throw new exceptions_1.IllegalArgumentError('tweetId is required');
@@ -326,23 +419,40 @@ class Twitter {
326
419
  }
327
420
  catch (error) {
328
421
  await page.close();
422
+ // if timeout
329
423
  if (error instanceof puppeteer_core_1.TimeoutError) {
330
424
  throw new exceptions_1.TwitterTimeoutError('Failed to operate twitter');
331
425
  }
332
426
  throw error;
333
427
  }
334
428
  }
429
+ /**
430
+ * ツイートをいいねする
431
+ *
432
+ * @param options いいねオプション
433
+ * @returns いいねできたかどうかの文字列(Done)
434
+ */
335
435
  async likeTweet(options) {
336
436
  if (!options.tweetId) {
337
437
  throw new exceptions_1.IllegalArgumentError('tweetId is required');
338
438
  }
339
439
  const page = await this.scraper.getScraperPage();
440
+ // ツイートページを開く (30sec timeout)
441
+ // -> 削除済みその他でツイートが存在しない場合は TwitterOperationError を投げる (TweetDetail のレスポンスがerrorになる)
442
+ // いいねボタンが表示されるまで待つ (10sec timeout)
443
+ // -> いいねボタンがすでにクリック済みの場合は AlreadyLikedError を投げる
444
+ // -> いいねボタンが表示されなかった場合は TwitterOperationError を投げる
445
+ // いいねボタンをクリックする
446
+ // いいね完了まで待つ (10sec timeout)
447
+ // -> いいね完了しなかった場合は TwitterOperationError を投げる
448
+ // ツイートページを閉じる
340
449
  try {
341
450
  const url = `https://twitter.com/i/status/${options.tweetId}`;
342
451
  const responseDetail = await page.waitSingleResponse(url, 'GET', 'GRAPHQL', 'TweetDetail', 30000);
343
452
  if (!responseDetail) {
344
453
  throw new exceptions_1.TwitterOperationError('Failed to get tweet detail');
345
454
  }
455
+ // いいねボタンが表示されるまで待つ
346
456
  const likeButtonSelector = 'article[tabindex="-1"] div[role="button"][data-testid="like"]';
347
457
  const unlikeButtonSelector = 'article[tabindex="-1"] div[role="button"][data-testid="unlike"]';
348
458
  const likeButton = await page.page.waitForSelector(`${likeButtonSelector}, ${unlikeButtonSelector}`, {
@@ -358,34 +468,54 @@ class Twitter {
358
468
  if (isLiked) {
359
469
  throw new exceptions_1.AlreadyLikedError();
360
470
  }
471
+ // いいねボタンをクリックする
361
472
  const responseFavoritePromise = page.waitSingleResponse(null, 'POST', 'GRAPHQL', 'FavoriteTweet', 10000);
362
473
  await page.waitAndClick(likeButtonSelector, true);
474
+ // いいね完了まで待つ
363
475
  const responseFavorite = await responseFavoritePromise;
364
476
  if (!responseFavorite) {
365
477
  throw new exceptions_1.TwitterOperationError('Failed to favorite tweet');
366
478
  }
479
+ // ツイートページを閉じる
367
480
  await page.close();
368
481
  return responseFavorite.data.favorite_tweet;
369
482
  }
370
483
  catch (error) {
371
484
  await page.close();
485
+ // if timeout
372
486
  if (error instanceof puppeteer_core_1.TimeoutError) {
373
487
  throw new exceptions_1.TwitterTimeoutError('Failed to operate twitter');
374
488
  }
375
489
  throw error;
376
490
  }
377
491
  }
492
+ /**
493
+ * ツイートのいいねを解除する
494
+ *
495
+ * @param options いいね解除オプション
496
+ * @returns いいね解除できたかどうかの文字列(Done)
497
+ */
378
498
  async unlikeTweet(options) {
379
499
  if (!options.tweetId) {
380
500
  throw new exceptions_1.IllegalArgumentError('tweetId is required');
381
501
  }
382
502
  const page = await this.scraper.getScraperPage();
503
+ // ツイートページを開く (30sec timeout)
504
+ // -> 削除済みその他でツイートが存在しない場合は TwitterOperationError を投げる (TweetDetail のレスポンスがerrorになる)
505
+ // いいね済みボタンが表示されるまで待つ (10sec timeout)
506
+ // -> いいねボタンがすでにクリック済みではない場合は NotLikedError を投げる
507
+ // -> いいねボタンが表示されなかった場合は TwitterOperationError を投げる
508
+ // いいねボタンをクリックする
509
+ // いいね完了まで待つ (10sec timeout)
510
+ // -> いいね完了しなかった場合は TwitterOperationError を投げる
511
+ // ツイートページを閉じる
383
512
  try {
384
513
  const url = `https://twitter.com/i/status/${options.tweetId}`;
385
514
  const responseDetail = await page.waitSingleResponse(url, 'GET', 'GRAPHQL', 'TweetDetail', 30000);
386
515
  if (!responseDetail) {
387
516
  throw new exceptions_1.TwitterOperationError('Failed to get tweet detail');
388
517
  }
518
+ // いいねボタンが表示されるまで待つ
389
519
  const likeButtonSelector = 'article[tabindex="-1"] div[role="button"][data-testid="like"]';
390
520
  const unlikeButtonSelector = 'article[tabindex="-1"] div[role="button"][data-testid="unlike"]';
391
521
  const unlikeButton = await page.page.waitForSelector(`${likeButtonSelector}, ${unlikeButtonSelector}`, {
@@ -401,23 +531,32 @@ class Twitter {
401
531
  if (!isLiked) {
402
532
  throw new exceptions_1.NotLikedError();
403
533
  }
534
+ // いいねボタンをクリックする
404
535
  const responseFavoritePromise = page.waitSingleResponse(null, 'POST', 'GRAPHQL', 'UnfavoriteTweet', 10000);
405
536
  await page.waitAndClick(unlikeButtonSelector, true);
537
+ // いいね完了まで待つ
406
538
  const responseFavorite = await responseFavoritePromise;
407
539
  if (!responseFavorite) {
408
540
  throw new exceptions_1.TwitterOperationError('Failed to favorite tweet');
409
541
  }
542
+ // ツイートページを閉じる
410
543
  await page.close();
411
544
  return responseFavorite.data.unfavorite_tweet;
412
545
  }
413
546
  catch (error) {
414
547
  await page.close();
548
+ // if timeout
415
549
  if (error instanceof puppeteer_core_1.TimeoutError) {
416
550
  throw new exceptions_1.TwitterTimeoutError('Failed to operate twitter');
417
551
  }
418
552
  throw error;
419
553
  }
420
554
  }
555
+ /**
556
+ * ユーザーをブロックする
557
+ *
558
+ * @param options ブロックオプション
559
+ */
421
560
  async blockUser(options) {
422
561
  if (!options.screenName && !options.userId) {
423
562
  throw new exceptions_1.IllegalArgumentError('screenName or userId is required');
@@ -431,6 +570,7 @@ class Twitter {
431
570
  if (this.isErrorResponse(response)) {
432
571
  throw new exceptions_1.TwitterOperationError(response.errors[0].message);
433
572
  }
573
+ // プロフィールの表示制限
434
574
  const viewProfileButton = await page.page.$('div[data-testid="emptyState"] div[role="button"]');
435
575
  if (viewProfileButton) {
436
576
  await viewProfileButton.click();
@@ -441,6 +581,7 @@ class Twitter {
441
581
  throw new exceptions_1.TwitterOperationError('Failed to get user status');
442
582
  }
443
583
  if (userStatus === 'unblock') {
584
+ // 既にブロック済み
444
585
  throw new exceptions_1.AlreadyBlockedError();
445
586
  }
446
587
  await page.waitAndClick('div[data-testid="userActions"]', true);
@@ -453,12 +594,18 @@ class Twitter {
453
594
  }
454
595
  catch (error) {
455
596
  await page.close();
597
+ // if timeout
456
598
  if (error instanceof puppeteer_core_1.TimeoutError) {
457
599
  throw new exceptions_1.TwitterTimeoutError('Failed to operate twitter');
458
600
  }
459
601
  throw error;
460
602
  }
461
603
  }
604
+ /**
605
+ * ユーザーのブロックを解除する
606
+ *
607
+ * @param options ブロック解除オプション
608
+ */
462
609
  async unblockUser(options) {
463
610
  if (!options.screenName && !options.userId) {
464
611
  throw new exceptions_1.IllegalArgumentError('screenName or userId is required');
@@ -469,6 +616,7 @@ class Twitter {
469
616
  const page = await this.scraper.getScraperPage();
470
617
  await page.goto(url);
471
618
  try {
619
+ // プロフィールの表示制限
472
620
  const viewProfileButton = await page.page.$('div[data-testid="emptyState"] div[role="button"]');
473
621
  if (viewProfileButton) {
474
622
  await viewProfileButton.click();
@@ -479,6 +627,7 @@ class Twitter {
479
627
  throw new exceptions_1.TwitterOperationError('Failed to get user status');
480
628
  }
481
629
  if (userStatus !== 'unblock') {
630
+ // 既にブロック解除済み
482
631
  throw new exceptions_1.NotBlockedError();
483
632
  }
484
633
  await page.waitAndClick('div[data-testid="userActions"]', true);
@@ -491,19 +640,32 @@ class Twitter {
491
640
  }
492
641
  catch (error) {
493
642
  await page.close();
643
+ // if timeout
494
644
  if (error instanceof puppeteer_core_1.TimeoutError) {
495
645
  throw new exceptions_1.TwitterTimeoutError('Failed to operate twitter');
496
646
  }
497
647
  throw error;
498
648
  }
499
649
  }
650
+ /**
651
+ * ブラウザを閉じる
652
+ */
500
653
  async close() {
501
654
  await this.scraper.close();
502
655
  }
656
+ /**
657
+ * エラーレスポンスかどうかを判定する。
658
+ * これを使うことでエラーがどうかは判定できるが、レスポンス型は保証されないので利用側で型保証されるメソッドを書いたほうがよい。
659
+ *
660
+ * @param response レスポンス
661
+ * @returns エラーレスポンスかどうか
662
+ */
503
663
  isErrorResponse(response) {
504
664
  return response.errors && response.errors.length > 0;
505
665
  }
506
666
  async getUserStatus(page) {
667
+ // 1234567890-follow
668
+ // 1234567890-unblock
507
669
  const testId = await page.evaluate(() => {
508
670
  return new Promise((resolve) => {
509
671
  const interval = setInterval(() => {
@@ -515,7 +677,7 @@ class Twitter {
515
677
  setTimeout(() => {
516
678
  clearInterval(interval);
517
679
  resolve();
518
- }, 1000 * 60 * 2);
680
+ }, 1000 * 60 * 2); // 2分
519
681
  });
520
682
  });
521
683
  return testId;