e621 2.2.6 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -41
  3. package/dist/lib/Debug.d.ts +1 -0
  4. package/dist/lib/Debug.js +16 -0
  5. package/dist/lib/errors.d.ts +8 -0
  6. package/dist/lib/errors.js +37 -0
  7. package/dist/lib/generated/client/client.d.ts +2 -0
  8. package/dist/lib/generated/client/client.js +236 -0
  9. package/dist/lib/generated/client/index.d.ts +8 -0
  10. package/dist/lib/generated/client/index.js +7 -0
  11. package/dist/lib/generated/client/types.d.ts +117 -0
  12. package/dist/lib/generated/client/types.js +3 -0
  13. package/dist/lib/generated/client/utils.d.ts +33 -0
  14. package/dist/lib/generated/client/utils.js +229 -0
  15. package/dist/lib/generated/client.d.ts +12 -0
  16. package/dist/lib/generated/client.js +4 -0
  17. package/dist/lib/generated/core/auth.d.ts +18 -0
  18. package/dist/lib/generated/core/auth.js +15 -0
  19. package/dist/lib/generated/core/bodySerializer.d.ts +25 -0
  20. package/dist/lib/generated/core/bodySerializer.js +58 -0
  21. package/dist/lib/generated/core/params.d.ts +43 -0
  22. package/dist/lib/generated/core/params.js +101 -0
  23. package/dist/lib/generated/core/pathSerializer.d.ts +33 -0
  24. package/dist/lib/generated/core/pathSerializer.js +107 -0
  25. package/dist/lib/generated/core/queryKeySerializer.d.ts +18 -0
  26. package/dist/lib/generated/core/queryKeySerializer.js +93 -0
  27. package/dist/lib/generated/core/serverSentEvents.d.ts +71 -0
  28. package/dist/lib/generated/core/serverSentEvents.js +134 -0
  29. package/dist/lib/generated/core/types.d.ts +78 -0
  30. package/dist/lib/generated/core/types.js +3 -0
  31. package/dist/lib/generated/core/utils.d.ts +19 -0
  32. package/dist/lib/generated/core/utils.js +88 -0
  33. package/dist/lib/generated/schemas.d.ts +2989 -0
  34. package/dist/lib/generated/schemas.js +4014 -0
  35. package/dist/lib/generated/sdk.d.ts +1417 -0
  36. package/dist/lib/generated/sdk.js +2633 -0
  37. package/dist/lib/generated/source.json +18815 -0
  38. package/dist/lib/generated/types.d.ts +9923 -0
  39. package/dist/lib/generated/types.js +3 -0
  40. package/dist/lib/generated.d.ts +4 -0
  41. package/dist/lib/generated.js +5 -0
  42. package/dist/lib/index.d.ts +58 -0
  43. package/dist/lib/index.js +74 -0
  44. package/dist/lib/models/ApiKey.d.ts +14 -0
  45. package/dist/lib/models/ApiKey.js +17 -0
  46. package/dist/lib/models/Artist.d.ts +61 -0
  47. package/dist/lib/models/Artist.js +86 -0
  48. package/dist/lib/models/ArtistUrl.d.ts +14 -0
  49. package/dist/lib/models/ArtistUrl.js +17 -0
  50. package/dist/lib/models/ArtistVersion.d.ts +14 -0
  51. package/dist/lib/models/ArtistVersion.js +17 -0
  52. package/dist/lib/models/AvoidPosting.d.ts +63 -0
  53. package/dist/lib/models/AvoidPosting.js +97 -0
  54. package/dist/lib/models/AvoidPostingVersion.d.ts +14 -0
  55. package/dist/lib/models/AvoidPostingVersion.js +17 -0
  56. package/dist/lib/models/Ban.d.ts +14 -0
  57. package/dist/lib/models/Ban.js +17 -0
  58. package/dist/lib/models/Base.d.ts +11 -0
  59. package/dist/lib/models/Base.js +39 -0
  60. package/dist/lib/models/Blip.d.ts +79 -0
  61. package/dist/lib/models/Blip.js +120 -0
  62. package/dist/lib/models/BulkUpdateRequest.d.ts +49 -0
  63. package/dist/lib/models/BulkUpdateRequest.js +75 -0
  64. package/dist/lib/models/Comment.d.ts +101 -0
  65. package/dist/lib/models/Comment.js +157 -0
  66. package/dist/lib/models/CurrentUser.d.ts +14 -0
  67. package/dist/lib/models/CurrentUser.js +17 -0
  68. package/dist/lib/models/DMail.d.ts +46 -0
  69. package/dist/lib/models/DMail.js +73 -0
  70. package/dist/lib/models/EditHistory.d.ts +14 -0
  71. package/dist/lib/models/EditHistory.js +17 -0
  72. package/dist/lib/models/EmailBlacklist.d.ts +26 -0
  73. package/dist/lib/models/EmailBlacklist.js +37 -0
  74. package/dist/lib/models/ForumPost.d.ts +98 -0
  75. package/dist/lib/models/ForumPost.js +154 -0
  76. package/dist/lib/models/ForumPostVote.d.ts +24 -0
  77. package/dist/lib/models/ForumPostVote.js +35 -0
  78. package/dist/lib/models/ForumTopic.d.ts +81 -0
  79. package/dist/lib/models/ForumTopic.js +131 -0
  80. package/dist/lib/models/FullCurrentUser.d.ts +14 -0
  81. package/dist/lib/models/FullCurrentUser.js +17 -0
  82. package/dist/lib/models/FullUser.d.ts +14 -0
  83. package/dist/lib/models/FullUser.js +17 -0
  84. package/dist/lib/models/Help.d.ts +39 -0
  85. package/dist/lib/models/Help.js +57 -0
  86. package/dist/lib/models/IpBan.d.ts +28 -0
  87. package/dist/lib/models/IpBan.js +39 -0
  88. package/dist/lib/models/IqdbPost.d.ts +14 -0
  89. package/dist/lib/models/IqdbPost.js +17 -0
  90. package/dist/lib/models/Mascot.d.ts +39 -0
  91. package/dist/lib/models/Mascot.js +57 -0
  92. package/dist/lib/models/ModAction.d.ts +14 -0
  93. package/dist/lib/models/ModAction.js +17 -0
  94. package/dist/lib/models/NewsUpdate.d.ts +39 -0
  95. package/dist/lib/models/NewsUpdate.js +57 -0
  96. package/dist/lib/models/Note.d.ts +45 -0
  97. package/dist/lib/models/Note.js +71 -0
  98. package/dist/lib/models/NoteVersion.d.ts +24 -0
  99. package/dist/lib/models/NoteVersion.js +35 -0
  100. package/dist/lib/models/Pool.d.ts +67 -0
  101. package/dist/lib/models/Pool.js +109 -0
  102. package/dist/lib/models/PoolVersion.d.ts +24 -0
  103. package/dist/lib/models/PoolVersion.js +35 -0
  104. package/dist/lib/models/Post.d.ts +175 -0
  105. package/dist/lib/models/Post.js +287 -0
  106. package/dist/lib/models/PostApproval.d.ts +26 -0
  107. package/dist/lib/models/PostApproval.js +37 -0
  108. package/dist/lib/models/PostDisapproval.d.ts +14 -0
  109. package/dist/lib/models/PostDisapproval.js +17 -0
  110. package/dist/lib/models/PostEvent.d.ts +14 -0
  111. package/dist/lib/models/PostEvent.js +17 -0
  112. package/dist/lib/models/PostFlag.d.ts +38 -0
  113. package/dist/lib/models/PostFlag.js +57 -0
  114. package/dist/lib/models/PostReplacement.d.ts +75 -0
  115. package/dist/lib/models/PostReplacement.js +117 -0
  116. package/dist/lib/models/PostSet.d.ts +75 -0
  117. package/dist/lib/models/PostSet.js +117 -0
  118. package/dist/lib/models/PostVersion.d.ts +58 -0
  119. package/dist/lib/models/PostVersion.js +93 -0
  120. package/dist/lib/models/RisingSearchTrend.d.ts +14 -0
  121. package/dist/lib/models/RisingSearchTrend.js +17 -0
  122. package/dist/lib/models/SearchTrend.d.ts +14 -0
  123. package/dist/lib/models/SearchTrend.js +17 -0
  124. package/dist/lib/models/SearchTrendBlacklist.d.ts +14 -0
  125. package/dist/lib/models/SearchTrendBlacklist.js +17 -0
  126. package/dist/lib/models/StaffNote.d.ts +53 -0
  127. package/dist/lib/models/StaffNote.js +79 -0
  128. package/dist/lib/models/Tag.d.ts +59 -0
  129. package/dist/lib/models/Tag.js +91 -0
  130. package/dist/lib/models/TagAlias.d.ts +51 -0
  131. package/dist/lib/models/TagAlias.js +77 -0
  132. package/dist/lib/models/TagCorrection.d.ts +15 -0
  133. package/dist/lib/models/TagCorrection.js +20 -0
  134. package/dist/lib/models/TagImplication.d.ts +51 -0
  135. package/dist/lib/models/TagImplication.js +77 -0
  136. package/dist/lib/models/TagPreview.d.ts +14 -0
  137. package/dist/lib/models/TagPreview.js +17 -0
  138. package/dist/lib/models/TagTypeVersion.d.ts +14 -0
  139. package/dist/lib/models/TagTypeVersion.js +17 -0
  140. package/dist/lib/models/Takedown.d.ts +87 -0
  141. package/dist/lib/models/Takedown.js +137 -0
  142. package/dist/lib/models/Ticket.d.ts +51 -0
  143. package/dist/lib/models/Ticket.js +77 -0
  144. package/dist/lib/models/Upload.d.ts +14 -0
  145. package/dist/lib/models/Upload.js +17 -0
  146. package/dist/lib/models/UploadWhitelist.d.ts +37 -0
  147. package/dist/lib/models/UploadWhitelist.js +55 -0
  148. package/dist/lib/models/User.d.ts +97 -0
  149. package/dist/lib/models/User.js +160 -0
  150. package/dist/lib/models/UserFeedback.d.ts +63 -0
  151. package/dist/lib/models/UserFeedback.js +97 -0
  152. package/dist/lib/models/UserNameChangeRequest.d.ts +26 -0
  153. package/dist/lib/models/UserNameChangeRequest.js +37 -0
  154. package/dist/lib/models/WikiPage.d.ts +49 -0
  155. package/dist/lib/models/WikiPage.js +75 -0
  156. package/dist/lib/models/WikiPageVersion.d.ts +24 -0
  157. package/dist/lib/models/WikiPageVersion.js +35 -0
  158. package/dist/lib/models/index.d.ts +56 -0
  159. package/dist/lib/models/index.js +57 -0
  160. package/dist/lib/modules/ArtistUrls.d.ts +18 -0
  161. package/dist/lib/modules/ArtistUrls.js +28 -0
  162. package/dist/lib/modules/ArtistVersions.d.ts +18 -0
  163. package/dist/lib/modules/ArtistVersions.js +28 -0
  164. package/dist/lib/modules/Artists.d.ts +90 -0
  165. package/dist/lib/modules/Artists.js +151 -0
  166. package/dist/lib/modules/AvoidPostingVersions.d.ts +18 -0
  167. package/dist/lib/modules/AvoidPostingVersions.js +28 -0
  168. package/dist/lib/modules/AvoidPostings.d.ts +112 -0
  169. package/dist/lib/modules/AvoidPostings.js +181 -0
  170. package/dist/lib/modules/Bans.d.ts +26 -0
  171. package/dist/lib/modules/Bans.js +47 -0
  172. package/dist/lib/modules/Base.d.ts +20 -0
  173. package/dist/lib/modules/Base.js +39 -0
  174. package/dist/lib/modules/Blips.d.ts +108 -0
  175. package/dist/lib/modules/Blips.js +188 -0
  176. package/dist/lib/modules/BulkUpdateRequests.d.ts +76 -0
  177. package/dist/lib/modules/BulkUpdateRequests.js +136 -0
  178. package/dist/lib/modules/CommentVotes.d.ts +30 -0
  179. package/dist/lib/modules/CommentVotes.js +56 -0
  180. package/dist/lib/modules/Comments.d.ts +115 -0
  181. package/dist/lib/modules/Comments.js +195 -0
  182. package/dist/lib/modules/DMails.d.ts +70 -0
  183. package/dist/lib/modules/DMails.js +134 -0
  184. package/dist/lib/modules/DText.d.ts +22 -0
  185. package/dist/lib/modules/DText.js +32 -0
  186. package/dist/lib/modules/EditHistories.d.ts +34 -0
  187. package/dist/lib/modules/EditHistories.js +56 -0
  188. package/dist/lib/modules/EmailBlacklists.d.ts +45 -0
  189. package/dist/lib/modules/EmailBlacklists.js +74 -0
  190. package/dist/lib/modules/Favorites.d.ts +44 -0
  191. package/dist/lib/modules/Favorites.js +73 -0
  192. package/dist/lib/modules/ForumPosts.d.ts +110 -0
  193. package/dist/lib/modules/ForumPosts.js +190 -0
  194. package/dist/lib/modules/ForumTopics.d.ts +125 -0
  195. package/dist/lib/modules/ForumTopics.js +237 -0
  196. package/dist/lib/modules/HelpPages.d.ts +67 -0
  197. package/dist/lib/modules/HelpPages.js +118 -0
  198. package/dist/lib/modules/IpBans.d.ts +47 -0
  199. package/dist/lib/modules/IpBans.js +76 -0
  200. package/dist/lib/modules/IqdbQueries.d.ts +36 -0
  201. package/dist/lib/modules/IqdbQueries.js +63 -0
  202. package/dist/lib/modules/Mascots.d.ts +60 -0
  203. package/dist/lib/modules/Mascots.js +98 -0
  204. package/dist/lib/modules/ModActions.d.ts +34 -0
  205. package/dist/lib/modules/ModActions.js +55 -0
  206. package/dist/lib/modules/NewsUpdates.d.ts +60 -0
  207. package/dist/lib/modules/NewsUpdates.js +98 -0
  208. package/dist/lib/modules/NoteVersions.d.ts +18 -0
  209. package/dist/lib/modules/NoteVersions.js +28 -0
  210. package/dist/lib/modules/Notes.d.ts +72 -0
  211. package/dist/lib/modules/Notes.js +133 -0
  212. package/dist/lib/modules/PoolVersions.d.ts +18 -0
  213. package/dist/lib/modules/PoolVersions.js +28 -0
  214. package/dist/lib/modules/Pools.d.ts +107 -0
  215. package/dist/lib/modules/Pools.js +197 -0
  216. package/dist/lib/modules/Popular.d.ts +18 -0
  217. package/dist/lib/modules/Popular.js +31 -0
  218. package/dist/lib/modules/PostApprovals.d.ts +42 -0
  219. package/dist/lib/modules/PostApprovals.js +77 -0
  220. package/dist/lib/modules/PostDisapprovals.d.ts +37 -0
  221. package/dist/lib/modules/PostDisapprovals.js +55 -0
  222. package/dist/lib/modules/PostEvents.d.ts +20 -0
  223. package/dist/lib/modules/PostEvents.js +30 -0
  224. package/dist/lib/modules/PostFlags.d.ts +53 -0
  225. package/dist/lib/modules/PostFlags.js +93 -0
  226. package/dist/lib/modules/PostReplacements.d.ts +97 -0
  227. package/dist/lib/modules/PostReplacements.js +167 -0
  228. package/dist/lib/modules/PostSets.d.ts +119 -0
  229. package/dist/lib/modules/PostSets.js +211 -0
  230. package/dist/lib/modules/PostVersions.d.ts +51 -0
  231. package/dist/lib/modules/PostVersions.js +94 -0
  232. package/dist/lib/modules/PostVotes.d.ts +28 -0
  233. package/dist/lib/modules/PostVotes.js +54 -0
  234. package/dist/lib/modules/Posts.d.ts +193 -0
  235. package/dist/lib/modules/Posts.js +395 -0
  236. package/dist/lib/modules/RelatedTags.d.ts +22 -0
  237. package/dist/lib/modules/RelatedTags.js +29 -0
  238. package/dist/lib/modules/SearchTrendBlacklists.d.ts +64 -0
  239. package/dist/lib/modules/SearchTrendBlacklists.js +101 -0
  240. package/dist/lib/modules/SearchTrends.d.ts +57 -0
  241. package/dist/lib/modules/SearchTrends.js +92 -0
  242. package/dist/lib/modules/StaffNotes.d.ts +80 -0
  243. package/dist/lib/modules/StaffNotes.js +140 -0
  244. package/dist/lib/modules/TagAliases.d.ts +80 -0
  245. package/dist/lib/modules/TagAliases.js +140 -0
  246. package/dist/lib/modules/TagCorrections.d.ts +25 -0
  247. package/dist/lib/modules/TagCorrections.js +52 -0
  248. package/dist/lib/modules/TagImplications.d.ts +80 -0
  249. package/dist/lib/modules/TagImplications.js +140 -0
  250. package/dist/lib/modules/TagTypeVersions.d.ts +18 -0
  251. package/dist/lib/modules/TagTypeVersions.js +28 -0
  252. package/dist/lib/modules/Tags.d.ts +64 -0
  253. package/dist/lib/modules/Tags.js +116 -0
  254. package/dist/lib/modules/Takedowns.d.ts +123 -0
  255. package/dist/lib/modules/Takedowns.js +211 -0
  256. package/dist/lib/modules/Tickets.d.ts +71 -0
  257. package/dist/lib/modules/Tickets.js +123 -0
  258. package/dist/lib/modules/UploadWhitelists.d.ts +71 -0
  259. package/dist/lib/modules/UploadWhitelists.js +117 -0
  260. package/dist/lib/modules/Uploads.d.ts +42 -0
  261. package/dist/lib/modules/Uploads.js +78 -0
  262. package/dist/lib/modules/UserFeedbacks.d.ts +94 -0
  263. package/dist/lib/modules/UserFeedbacks.js +165 -0
  264. package/dist/lib/modules/UserNameChangeRequests.d.ts +59 -0
  265. package/dist/lib/modules/UserNameChangeRequests.js +99 -0
  266. package/dist/lib/modules/Users.d.ts +135 -0
  267. package/dist/lib/modules/Users.js +263 -0
  268. package/dist/lib/modules/WikiPageVersions.d.ts +26 -0
  269. package/dist/lib/modules/WikiPageVersions.js +47 -0
  270. package/dist/lib/modules/WikiPages.d.ts +76 -0
  271. package/dist/lib/modules/WikiPages.js +137 -0
  272. package/dist/lib/modules/admin/Users.d.ts +45 -0
  273. package/dist/lib/modules/admin/Users.js +77 -0
  274. package/dist/lib/modules/comments/Votes.d.ts +31 -0
  275. package/dist/lib/modules/comments/Votes.js +51 -0
  276. package/dist/lib/modules/forum_posts/Votes.d.ts +29 -0
  277. package/dist/lib/modules/forum_posts/Votes.js +51 -0
  278. package/dist/lib/modules/index.d.ts +178 -0
  279. package/dist/lib/modules/index.js +118 -0
  280. package/dist/lib/modules/posts/Flag.d.ts +16 -0
  281. package/dist/lib/modules/posts/Flag.js +31 -0
  282. package/dist/lib/modules/posts/Votes.d.ts +31 -0
  283. package/dist/lib/modules/posts/Votes.js +51 -0
  284. package/dist/lib/modules/users/DMails.d.ts +29 -0
  285. package/dist/lib/modules/users/DMails.js +55 -0
  286. package/dist/lib/util.d.ts +50 -0
  287. package/dist/lib/util.js +49 -0
  288. package/dist/package.json +73 -0
  289. package/package.json +46 -20
  290. package/tsconfig.json +54 -0
  291. package/.mocharc.json +0 -6
  292. package/.ncurc.json +0 -3
  293. package/.node-version +0 -1
  294. package/Features/Artists.md +0 -39
  295. package/Features/Blips.md +0 -33
  296. package/Features/E621SearchInconsistencies.md +0 -54
  297. package/Features/FuturePlans.md +0 -50
  298. package/Features/Notes.md +0 -34
  299. package/Features/Pools.md +0 -38
  300. package/Features/PostFlags.md +0 -31
  301. package/Features/PostSets.md +0 -36
  302. package/Features/Posts.md +0 -46
  303. package/Features/README.md +0 -15
  304. package/Features/Tags.md +0 -34
  305. package/Features/Takedowns.md +0 -32
  306. package/Features/UserFeedback.md +0 -32
  307. package/Features/Users.md +0 -36
  308. package/Features/WikiPages.md +0 -36
  309. package/build/package.json +0 -45
  310. package/build/src/index.d.ts +0 -68
  311. package/build/src/index.js +0 -194
  312. package/build/src/modules/Artists.d.ts +0 -128
  313. package/build/src/modules/Artists.js +0 -295
  314. package/build/src/modules/Blips.d.ts +0 -79
  315. package/build/src/modules/Blips.js +0 -157
  316. package/build/src/modules/Notes.d.ts +0 -88
  317. package/build/src/modules/Notes.js +0 -189
  318. package/build/src/modules/Pools.d.ts +0 -130
  319. package/build/src/modules/Pools.js +0 -261
  320. package/build/src/modules/PostFlags.d.ts +0 -55
  321. package/build/src/modules/PostFlags.js +0 -126
  322. package/build/src/modules/PostSets.d.ts +0 -102
  323. package/build/src/modules/PostSets.js +0 -208
  324. package/build/src/modules/Posts.d.ts +0 -154
  325. package/build/src/modules/Posts.js +0 -390
  326. package/build/src/modules/Tags.d.ts +0 -78
  327. package/build/src/modules/Tags.js +0 -174
  328. package/build/src/modules/Takedowns.d.ts +0 -81
  329. package/build/src/modules/Takedowns.js +0 -195
  330. package/build/src/modules/UserFeedback.d.ts +0 -66
  331. package/build/src/modules/UserFeedback.js +0 -136
  332. package/build/src/modules/Users.d.ts +0 -117
  333. package/build/src/modules/Users.js +0 -261
  334. package/build/src/modules/WikiPages.d.ts +0 -107
  335. package/build/src/modules/WikiPages.js +0 -220
  336. package/build/src/structures/Artist.d.ts +0 -36
  337. package/build/src/structures/Artist.js +0 -51
  338. package/build/src/structures/ArtistHistory.d.ts +0 -39
  339. package/build/src/structures/ArtistHistory.js +0 -50
  340. package/build/src/structures/AuthenticatedUser.d.ts +0 -109
  341. package/build/src/structures/AuthenticatedUser.js +0 -128
  342. package/build/src/structures/Blip.d.ts +0 -66
  343. package/build/src/structures/Blip.js +0 -85
  344. package/build/src/structures/Note.d.ts +0 -32
  345. package/build/src/structures/Note.js +0 -41
  346. package/build/src/structures/NoteHistory.d.ts +0 -38
  347. package/build/src/structures/NoteHistory.js +0 -47
  348. package/build/src/structures/Pool.d.ts +0 -85
  349. package/build/src/structures/Pool.js +0 -112
  350. package/build/src/structures/PoolHistory.d.ts +0 -43
  351. package/build/src/structures/PoolHistory.js +0 -54
  352. package/build/src/structures/Post.d.ts +0 -157
  353. package/build/src/structures/Post.js +0 -170
  354. package/build/src/structures/PostApproval.d.ts +0 -25
  355. package/build/src/structures/PostApproval.js +0 -33
  356. package/build/src/structures/PostFlag.d.ts +0 -38
  357. package/build/src/structures/PostFlag.js +0 -47
  358. package/build/src/structures/PostHistory.d.ts +0 -52
  359. package/build/src/structures/PostHistory.js +0 -93
  360. package/build/src/structures/PostSet.d.ts +0 -71
  361. package/build/src/structures/PostSet.js +0 -93
  362. package/build/src/structures/Tag.d.ts +0 -61
  363. package/build/src/structures/Tag.js +0 -87
  364. package/build/src/structures/TagHistory.d.ts +0 -28
  365. package/build/src/structures/TagHistory.js +0 -36
  366. package/build/src/structures/Takedown.d.ts +0 -49
  367. package/build/src/structures/Takedown.js +0 -64
  368. package/build/src/structures/User.d.ts +0 -62
  369. package/build/src/structures/User.js +0 -80
  370. package/build/src/structures/WikiPage.d.ts +0 -17
  371. package/build/src/structures/WikiPage.js +0 -27
  372. package/build/src/structures/WikiPageHistory.d.ts +0 -38
  373. package/build/src/structures/WikiPageHistory.js +0 -49
  374. package/build/src/types/artists.d.ts +0 -82
  375. package/build/src/types/blips.d.ts +0 -37
  376. package/build/src/types/index.d.ts +0 -96
  377. package/build/src/types/notes.d.ts +0 -64
  378. package/build/src/types/pools.d.ts +0 -62
  379. package/build/src/types/post_flags.d.ts +0 -36
  380. package/build/src/types/post_sets.d.ts +0 -33
  381. package/build/src/types/posts.d.ts +0 -181
  382. package/build/src/types/tags.d.ts +0 -56
  383. package/build/src/types/takedowns.d.ts +0 -62
  384. package/build/src/types/user_feedback.d.ts +0 -27
  385. package/build/src/types/users.d.ts +0 -277
  386. package/build/src/types/wiki_pages.d.ts +0 -66
  387. package/build/src/util/Debug.d.ts +0 -1
  388. package/build/src/util/Debug.js +0 -16
  389. package/build/src/util/FormHelper.d.ts +0 -9
  390. package/build/src/util/FormHelper.js +0 -15
  391. package/build/src/util/MultipartData.d.ts +0 -7
  392. package/build/src/util/MultipartData.js +0 -39
  393. package/build/src/util/RequestHandler.d.ts +0 -38
  394. package/build/src/util/RequestHandler.js +0 -343
  395. package/build/src/util/Timer.d.ts +0 -6
  396. package/build/src/util/Timer.js +0 -74
@@ -1,194 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.Custom = exports.Dev = exports.YiffyAPI = exports.WikiPageHistory = exports.WikiPage = exports.User = exports.Takedown = exports.TagHistory = exports.Tag = exports.PostSet = exports.PostHistory = exports.PostApproval = exports.Post = exports.PostFlag = exports.PoolHistory = exports.Pool = exports.NoteHistory = exports.Note = exports.Blip = exports.ArtistHistory = exports.Artist = exports.AuthenticatedUser = exports.APIError = void 0;
21
- const RequestHandler_1 = __importDefault(require("./util/RequestHandler"));
22
- // Modules
23
- const Artists_1 = __importDefault(require("./modules/Artists"));
24
- const Blips_1 = __importDefault(require("./modules/Blips"));
25
- const Notes_1 = __importDefault(require("./modules/Notes"));
26
- const Pools_1 = __importDefault(require("./modules/Pools"));
27
- const Posts_1 = __importDefault(require("./modules/Posts"));
28
- const PostFlags_1 = __importDefault(require("./modules/PostFlags"));
29
- const PostSets_1 = __importDefault(require("./modules/PostSets"));
30
- const Tags_1 = __importDefault(require("./modules/Tags"));
31
- const Takedowns_1 = __importDefault(require("./modules/Takedowns"));
32
- const UserFeedback_1 = __importDefault(require("./modules/UserFeedback"));
33
- const Users_1 = __importDefault(require("./modules/Users"));
34
- const WikiPages_1 = __importDefault(require("./modules/WikiPages"));
35
- // Structures
36
- const Artist_1 = __importDefault(require("./structures/Artist"));
37
- exports.Artist = Artist_1.default;
38
- const ArtistHistory_1 = __importDefault(require("./structures/ArtistHistory"));
39
- exports.ArtistHistory = ArtistHistory_1.default;
40
- const Blip_1 = __importDefault(require("./structures/Blip"));
41
- exports.Blip = Blip_1.default;
42
- const Note_1 = __importDefault(require("./structures/Note"));
43
- exports.Note = Note_1.default;
44
- const NoteHistory_1 = __importDefault(require("./structures/NoteHistory"));
45
- exports.NoteHistory = NoteHistory_1.default;
46
- const AuthenticatedUser_1 = __importDefault(require("./structures/AuthenticatedUser"));
47
- exports.AuthenticatedUser = AuthenticatedUser_1.default;
48
- const Pool_1 = __importDefault(require("./structures/Pool"));
49
- exports.Pool = Pool_1.default;
50
- const PoolHistory_1 = __importDefault(require("./structures/PoolHistory"));
51
- exports.PoolHistory = PoolHistory_1.default;
52
- const PostFlag_1 = __importDefault(require("./structures/PostFlag"));
53
- exports.PostFlag = PostFlag_1.default;
54
- const Post_1 = __importDefault(require("./structures/Post"));
55
- exports.Post = Post_1.default;
56
- const PostApproval_1 = __importDefault(require("./structures/PostApproval"));
57
- exports.PostApproval = PostApproval_1.default;
58
- const PostHistory_1 = __importDefault(require("./structures/PostHistory"));
59
- exports.PostHistory = PostHistory_1.default;
60
- const PostSet_1 = __importDefault(require("./structures/PostSet"));
61
- exports.PostSet = PostSet_1.default;
62
- const Tag_1 = __importDefault(require("./structures/Tag"));
63
- exports.Tag = Tag_1.default;
64
- const Takedown_1 = __importDefault(require("./structures/Takedown"));
65
- exports.Takedown = Takedown_1.default;
66
- const TagHistory_1 = __importDefault(require("./structures/TagHistory"));
67
- exports.TagHistory = TagHistory_1.default;
68
- const User_1 = __importDefault(require("./structures/User"));
69
- exports.User = User_1.default;
70
- const WikiPage_1 = __importDefault(require("./structures/WikiPage"));
71
- exports.WikiPage = WikiPage_1.default;
72
- const WikiPageHistory_1 = __importDefault(require("./structures/WikiPageHistory"));
73
- exports.WikiPageHistory = WikiPageHistory_1.default;
74
- const package_json_1 = __importDefault(require("../package.json"));
75
- // note for future reference (browser compatibility?)
76
- // POST with "_method=*" can be used in place of PUT/PATCH/DELETE
77
- class E621 {
78
- static YiffyAPI;
79
- static Dev;
80
- static Custom;
81
- POST_LIMIT_PER_REQUEST = 320;
82
- request = new RequestHandler_1.default(this);
83
- artists = new Artists_1.default(this);
84
- blips = new Blips_1.default(this);
85
- notes = new Notes_1.default(this);
86
- pools = new Pools_1.default(this);
87
- posts = new Posts_1.default(this);
88
- postFlags = new PostFlags_1.default(this);
89
- postSets = new PostSets_1.default(this);
90
- tags = new Tags_1.default(this);
91
- takedowns = new Takedowns_1.default(this);
92
- userFeedback = new UserFeedback_1.default(this);
93
- users = new Users_1.default(this);
94
- wikiPages = new WikiPages_1.default(this);
95
- auth;
96
- options;
97
- constructor(options) {
98
- if (!options)
99
- options = {};
100
- Object.defineProperties(this, {
101
- auth: {
102
- get() {
103
- return !this.options.authUser || !this.options.authKey ? null : `Basic ${Buffer.from(`${this.options.authUser}:${this.options.authKey}`).toString("base64")}`;
104
- },
105
- configurable: false,
106
- enumerable: false
107
- },
108
- options: {
109
- value: {
110
- authUser: options.authUser ?? null,
111
- authKey: options.authKey ?? null,
112
- userAgent: options.userAgent ?? `E621/${package_json_1.default.version} (https://github.com/DonovanDMC/E621${!options.authUser ? "" : `; "${options.authUser}"`})`,
113
- requestTimeout: options.requestTimeout ?? 30
114
- },
115
- configurable: false,
116
- enumerable: false,
117
- writable: false
118
- }
119
- });
120
- this.setInstance({});
121
- }
122
- setInstance(opt) {
123
- if (!opt.host)
124
- opt.host = "e621.net";
125
- opt.ssl = opt.ssl ?? ["e621.net", "yiff.rest"].includes(opt.host);
126
- if (!opt.port)
127
- opt.port = opt.ssl ? 443 : 80;
128
- if (!opt.imageReconstructionType) {
129
- switch (opt.host) {
130
- case "e621.net":
131
- opt.imageReconstructionType = "e621";
132
- break;
133
- case "yiff.rest":
134
- opt.imageReconstructionType = "yiffy";
135
- break;
136
- case "e621.local":
137
- case "e621ng.local":
138
- case "localhost":
139
- opt.imageReconstructionType = "dev";
140
- break;
141
- default: {
142
- opt.imageReconstructionType = null;
143
- if (!opt.reconstructStaticURL)
144
- process.emitWarning("You specified a host that wasn't in our known list (e621.net, yiff.rest, e621.local) and didn't also specify imageReconstructionType or reconstructStaticURL. This WILL cause an error if we see any null file urls.");
145
- }
146
- }
147
- }
148
- Object.assign(this.options, {
149
- instanceHost: opt.host,
150
- instancePort: opt.port,
151
- instanceSSL: opt.ssl,
152
- reconstructStaticURL: opt.reconstructStaticURL || null,
153
- imageReconstructionType: opt.imageReconstructionType || "hierarchy"
154
- });
155
- }
156
- }
157
- exports.default = E621;
158
- class YiffyAPI extends E621 {
159
- constructor(options) {
160
- super(options);
161
- this.setInstance({
162
- host: "yiff.rest",
163
- port: 443,
164
- ssl: true
165
- });
166
- }
167
- }
168
- exports.YiffyAPI = YiffyAPI;
169
- class Dev extends E621 {
170
- constructor(options, ssl = false) {
171
- super(options);
172
- this.setInstance({
173
- host: "localhost",
174
- port: 3000,
175
- ssl
176
- });
177
- }
178
- }
179
- exports.Dev = Dev;
180
- class Custom extends E621 {
181
- constructor(options, instanceOptions) {
182
- super(options);
183
- this.setInstance(instanceOptions);
184
- }
185
- }
186
- exports.Custom = Custom;
187
- // due to extending the main class, neither of these (E621 class & sub-class) can happen "first", when both need to
188
- E621.YiffyAPI = YiffyAPI;
189
- E621.Dev = Dev;
190
- E621.Custom = Custom;
191
- module.exports = E621;
192
- var RequestHandler_2 = require("./util/RequestHandler");
193
- Object.defineProperty(exports, "APIError", { enumerable: true, get: function () { return RequestHandler_2.APIError; } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyRUFBbUQ7QUFDbkQsVUFBVTtBQUNWLGdFQUF3QztBQUN4Qyw0REFBb0M7QUFDcEMsNERBQW9DO0FBQ3BDLDREQUFvQztBQUNwQyw0REFBb0M7QUFDcEMsb0VBQTRDO0FBQzVDLGtFQUEwQztBQUMxQywwREFBa0M7QUFDbEMsb0VBQTRDO0FBQzVDLDBFQUFrRDtBQUNsRCw0REFBb0M7QUFDcEMsb0VBQTRDO0FBQzVDLGFBQWE7QUFDYixpRUFBeUM7QUF1SXhDLGlCQXZJTSxnQkFBTSxDQXVJTjtBQXRJUCwrRUFBdUQ7QUF1SXRELHdCQXZJTSx1QkFBYSxDQXVJTjtBQXRJZCw2REFBcUM7QUF1SXBDLGVBdklNLGNBQUksQ0F1SU47QUF0SUwsNkRBQXFDO0FBdUlwQyxlQXZJTSxjQUFJLENBdUlOO0FBdElMLDJFQUFtRDtBQXVJbEQsc0JBdklNLHFCQUFXLENBdUlOO0FBdElaLHVGQUErRDtBQWlJOUQsNEJBaklNLDJCQUFpQixDQWlJTjtBQWhJbEIsNkRBQXFDO0FBc0lwQyxlQXRJTSxjQUFJLENBc0lOO0FBcklMLDJFQUFtRDtBQXNJbEQsc0JBdElNLHFCQUFXLENBc0lOO0FBcklaLHFFQUE2QztBQXNJNUMsbUJBdElNLGtCQUFRLENBc0lOO0FBcklULDZEQUFxQztBQXNJcEMsZUF0SU0sY0FBSSxDQXNJTjtBQXJJTCw2RUFBcUQ7QUFzSXBELHVCQXRJTSxzQkFBWSxDQXNJTjtBQXJJYiwyRUFBbUQ7QUFzSWxELHNCQXRJTSxxQkFBVyxDQXNJTjtBQXJJWixtRUFBMkM7QUFzSTFDLGtCQXRJTSxpQkFBTyxDQXNJTjtBQXJJUiwyREFBbUM7QUFzSWxDLGNBdElNLGFBQUcsQ0FzSU47QUFySUoscUVBQTZDO0FBdUk1QyxtQkF2SU0sa0JBQVEsQ0F1SU47QUF0SVQseUVBQWlE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
@@ -1,128 +0,0 @@
1
- import type E621 from "..";
2
- import Artist from "../structures/Artist";
3
- import type { SearchArtistsOptions, CreateArtistOptions, ModifyArtistOptions, SearchArtistHistoryOptions } from "../types";
4
- import ArtistHistory from "../structures/ArtistHistory";
5
- export default class Artists {
6
- private readonly auth;
7
- private readonly main;
8
- constructor(main: E621);
9
- /**
10
- * Get an artist by their id
11
- *
12
- * @param {number} id - The id of the artist to get
13
- * @returns {Promise<(Artist | null)>}
14
- */
15
- get(id: number): Promise<Artist | null>;
16
- /**
17
- * Get an artist by their name
18
- *
19
- * @param {string} name - The name of the artist to get
20
- * @returns {Promise<(Artist | null)>}
21
- */
22
- getByName(name: string): Promise<Artist | null>;
23
- /**
24
- * Search for artists
25
- *
26
- * @param {object} [options]
27
- * @param {string} [options.name] - narrow the results by the name of the artist
28
- * @param {string} [options.url] - narrow the results by urls of the artist
29
- * @param {string} [options.creator] - narrow the results by the (name of the) creator of the artist page
30
- * @param {boolean} [options.active] - narrow the results by the artist being active
31
- * @param {boolean} [options.banned] - narrow the results by the artist being banned
32
- * @param {boolean} [options.has_tag] - narrow the results by the artist having a matching tag
33
- * @param {SearchArtistsOrder} [options.order] - the order of the results
34
- * @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
35
- * @param {number} [options.limit] - limit the maximum amount of results returned
36
- * @returns {Promise<Array<ArtistProperties>>}
37
- */
38
- search(options?: SearchArtistsOptions): Promise<Artist[]>;
39
- /**
40
- * Create an artist
41
- *
42
- * * Requires Authentication
43
- *
44
- * @param {object} options
45
- * @param {string} options.name - the name of artist
46
- * @param {number} [options.linked_user_id] - the id of the user associated with this artist (requires janitor)
47
- * @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
48
- * @param {(Array<string> | string)} [options.other_names] - the other names for this artist
49
- * @param {string} [options.group_name] - the group name of this artist (this is [planned to be removed](https://github.com/zwagoth/e621ng/pull/357))
50
- * @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
51
- * @param {string} [options.notes] - notes for this artist
52
- * @returns {Promise<Artist>}
53
- */
54
- create(options: CreateArtistOptions): Promise<Artist>;
55
- /**
56
- * modify an artist
57
- *
58
- * * Requires Authentication
59
- *
60
- * @param {number} id - the id of the artists to edit
61
- * @param {object} options
62
- * @param {string} [options.name] - the name of artist (requires janitor)
63
- * @param {number} [options.linked_user_id] - the id of the user associated with this artist (requires janitor)
64
- * @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
65
- * @param {(Array<string> | string)} [options.other_names] - the other names for this artist
66
- * @param {string} [options.group_name] - the group name of this artist (this is [planned to be removed](https://github.com/zwagoth/e621ng/pull/357))
67
- * @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
68
- * @param {string} [options.notes] - notes for this artist
69
- * @returns {Promise<Artist>}
70
- */
71
- modify(id: number, options: ModifyArtistOptions): Promise<Artist>;
72
- /**
73
- * Delete an artist
74
- *
75
- * * Requires Authentication
76
- *
77
- * * Requires Janitor
78
- *
79
- * @param {number} id - the id of the artist to delete
80
- * @returns {Promise<null>}
81
- */
82
- delete(id: number): Promise<null>;
83
- /**
84
- * Revert an artist to a previous version
85
- *
86
- * * Requires Authentication
87
- *
88
- * @param {number} id - the id of the artist to revert
89
- * @param {number} versionID - the version id to revert to (see history)
90
- */
91
- revert(id: number, versionID: number): Promise<null>;
92
- /**
93
- * Get a specific artist history
94
- *
95
- * @param {number} id - the id of the history to get
96
- * @returns {Promise<ArtistHistory | null>}
97
- */
98
- getHistory(id: number): Promise<ArtistHistory | null>;
99
- /**
100
- * Search the artist history
101
- *
102
- * * Requires Authentication
103
- *
104
- * @param {object} [options]
105
- * @param {number} [options.id] - get a specific artist history entry
106
- * @param {string} [options.artist] - narrow the results by artist name
107
- * @param {number} [options.artist_id] - narrow the results by artist id
108
- * @param {number} [options.updater_id] - narrow the results by updater id
109
- * @param {string} [options.updater] - narrow the results by updater name
110
- * @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
111
- * @param {number} [options.limit] - limit the maximum amount of results returned
112
- * @param
113
- * @returns {Promise<Array<ArtistHistory>>}
114
- */
115
- searchHistory(options?: SearchArtistHistoryOptions): Promise<ArtistHistory[]>;
116
- /**
117
- * Get the list of do not post & conditional do not post artists.
118
- *
119
- * This assumes whatever instance you're running against has the same structure as e621!
120
- *
121
- * @param {number} [id=85] - the id of the dnp wiki page (85 on e621)
122
- * @returns {Promise<DoNotPostList>}
123
- */
124
- getDoNotPost(id?: number): Promise<{
125
- dnp: string[];
126
- conditionalDNP: string[];
127
- }>;
128
- }
@@ -1,295 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const Artist_1 = __importDefault(require("../structures/Artist"));
7
- const FormHelper_1 = __importDefault(require("../util/FormHelper"));
8
- const RequestHandler_1 = require("../util/RequestHandler");
9
- const ArtistHistory_1 = __importDefault(require("../structures/ArtistHistory"));
10
- class Artists {
11
- auth;
12
- main;
13
- constructor(main) {
14
- Object.defineProperties(this, {
15
- auth: {
16
- get() {
17
- return !this.main.options.authUser || !this.main.options.authKey ? null : `Basic ${Buffer.from(`${this.main.options.authUser}:${this.main.options.authKey}`).toString("base64")}`;
18
- },
19
- configurable: false,
20
- enumerable: false
21
- },
22
- main: {
23
- value: main,
24
- configurable: false,
25
- enumerable: false,
26
- writable: false
27
- }
28
- });
29
- }
30
- /**
31
- * Get an artist by their id
32
- *
33
- * @param {number} id - The id of the artist to get
34
- * @returns {Promise<(Artist | null)>}
35
- */
36
- async get(id) {
37
- const res = await this.main.request.get(`/artists/${id}.json`).catch(err => {
38
- if (err instanceof RequestHandler_1.APIError && err.statusCode === 404)
39
- return null;
40
- throw err;
41
- });
42
- return res === null ? null : new Artist_1.default(this.main, res);
43
- }
44
- /**
45
- * Get an artist by their name
46
- *
47
- * @param {string} name - The name of the artist to get
48
- * @returns {Promise<(Artist | null)>}
49
- */
50
- async getByName(name) {
51
- return this.search({
52
- name,
53
- limit: 1
54
- }).then(r => r.length === 0 ? null : r[0]);
55
- }
56
- /**
57
- * Search for artists
58
- *
59
- * @param {object} [options]
60
- * @param {string} [options.name] - narrow the results by the name of the artist
61
- * @param {string} [options.url] - narrow the results by urls of the artist
62
- * @param {string} [options.creator] - narrow the results by the (name of the) creator of the artist page
63
- * @param {boolean} [options.active] - narrow the results by the artist being active
64
- * @param {boolean} [options.banned] - narrow the results by the artist being banned
65
- * @param {boolean} [options.has_tag] - narrow the results by the artist having a matching tag
66
- * @param {SearchArtistsOrder} [options.order] - the order of the results
67
- * @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
68
- * @param {number} [options.limit] - limit the maximum amount of results returned
69
- * @returns {Promise<Array<ArtistProperties>>}
70
- */
71
- async search(options) {
72
- options = options ?? {};
73
- const qs = new FormHelper_1.default();
74
- if (typeof options.name === "string")
75
- qs.add("search[any_name_matches]", options.name);
76
- if (typeof options.url === "string")
77
- qs.add("search[url_matches]", options.url);
78
- if (typeof options.creator === "string")
79
- qs.add("search[creator_name]", options.creator);
80
- if (typeof options.active === "boolean")
81
- qs.add("search[is_active]", options.active);
82
- if (typeof options.banned === "boolean")
83
- qs.add("search[is_banned]", options.banned);
84
- if (typeof options.has_tag === "boolean")
85
- qs.add("search[has_tag]", options.has_tag);
86
- if (typeof options.order === "string")
87
- qs.add("search[order]", options.order);
88
- if (typeof options.page !== "undefined")
89
- qs.add("page", options.page);
90
- if (typeof options.limit === "number")
91
- qs.add("limit", options.limit);
92
- const res = await this.main.request.get(`/artists.json?${qs.build()}`);
93
- return res.map(info => new Artist_1.default(this.main, info));
94
- }
95
- /**
96
- * Create an artist
97
- *
98
- * * Requires Authentication
99
- *
100
- * @param {object} options
101
- * @param {string} options.name - the name of artist
102
- * @param {number} [options.linked_user_id] - the id of the user associated with this artist (requires janitor)
103
- * @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
104
- * @param {(Array<string> | string)} [options.other_names] - the other names for this artist
105
- * @param {string} [options.group_name] - the group name of this artist (this is [planned to be removed](https://github.com/zwagoth/e621ng/pull/357))
106
- * @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
107
- * @param {string} [options.notes] - notes for this artist
108
- * @returns {Promise<Artist>}
109
- */
110
- async create(options) {
111
- this.main.request.authCheck.call(this, "Artists#create");
112
- if (!options)
113
- throw new Error("options is required in Artists#create");
114
- const qs = new FormHelper_1.default()
115
- .add("artist[name]", options.name);
116
- if (typeof options.linked_user_id === "number")
117
- qs.add("artist[linked_user_id]", options.linked_user_id);
118
- if (typeof options.locked === "boolean")
119
- qs.add("artist[is_locked]", options.locked);
120
- if (typeof options.other_names === "string")
121
- qs.add("artist[other_names_string]", options.other_names);
122
- if (Array.isArray(options.other_names))
123
- qs.add("artist[other_names_string]", options.other_names.join(" "));
124
- if (typeof options.group_name === "string")
125
- qs.add("artist[group_name]", options.group_name);
126
- if (typeof options.urls === "string")
127
- qs.add("artist[url_string]", options.urls);
128
- if (Array.isArray(options.urls))
129
- qs.add("artist[url_string]", options.urls.join("\n"));
130
- if (typeof options.notes === "string")
131
- qs.add("artist[notes]", options.notes);
132
- const res = await this.main.request.post("/artists.json", qs.build());
133
- return new Artist_1.default(this.main, res);
134
- }
135
- /**
136
- * modify an artist
137
- *
138
- * * Requires Authentication
139
- *
140
- * @param {number} id - the id of the artists to edit
141
- * @param {object} options
142
- * @param {string} [options.name] - the name of artist (requires janitor)
143
- * @param {number} [options.linked_user_id] - the id of the user associated with this artist (requires janitor)
144
- * @param {boolean} [options.locked] - if the artist should be locked (requires janitor)
145
- * @param {(Array<string> | string)} [options.other_names] - the other names for this artist
146
- * @param {string} [options.group_name] - the group name of this artist (this is [planned to be removed](https://github.com/zwagoth/e621ng/pull/357))
147
- * @param {(Array<string> | string)} [options.urls] - the urls associated with this artist
148
- * @param {string} [options.notes] - notes for this artist
149
- * @returns {Promise<Artist>}
150
- */
151
- async modify(id, options) {
152
- this.main.request.authCheck.call(this, "Artists#modify");
153
- if (!options)
154
- throw new Error("options is required in Artists#modify");
155
- const qs = new FormHelper_1.default();
156
- if (typeof options.name === "string")
157
- qs.add("artist[name]", options.name);
158
- if (typeof options.linked_user_id === "number")
159
- qs.add("artist[linked_user_id]", options.linked_user_id);
160
- if (typeof options.locked === "boolean")
161
- qs.add("artist[is_locked]", options.locked);
162
- if (typeof options.other_names === "string")
163
- qs.add("artist[other_names_string]", options.other_names);
164
- if (Array.isArray(options.other_names))
165
- qs.add("artist[other_names_string]", options.other_names.join(" "));
166
- if (typeof options.group_name === "string")
167
- qs.add("artist[group_name]", options.group_name);
168
- if (typeof options.urls === "string")
169
- qs.add("artist[url_string]", options.urls);
170
- if (Array.isArray(options.urls))
171
- qs.add("artist[url_string]", options.urls.join("\n"));
172
- if (typeof options.notes === "string")
173
- qs.add("artist[notes]", options.notes);
174
- const res = await this.main.request.patch(`/artists/${id}.json`, qs.build());
175
- return new Artist_1.default(this.main, res);
176
- }
177
- /**
178
- * Delete an artist
179
- *
180
- * * Requires Authentication
181
- *
182
- * * Requires Janitor
183
- *
184
- * @param {number} id - the id of the artist to delete
185
- * @returns {Promise<null>}
186
- */
187
- async delete(id) {
188
- this.main.request.authCheck.call(this, "Artists#delete");
189
- return this.main.request.delete(`/artists/${id}.json`);
190
- }
191
- /**
192
- * Revert an artist to a previous version
193
- *
194
- * * Requires Authentication
195
- *
196
- * @param {number} id - the id of the artist to revert
197
- * @param {number} versionID - the version id to revert to (see history)
198
- */
199
- async revert(id, versionID) {
200
- this.main.request.authCheck.call(this, "Artists#revert");
201
- const qs = new FormHelper_1.default()
202
- .add("version_id", versionID);
203
- return this.main.request.put(`/artists/${id}/revert.json`, qs.build());
204
- }
205
- /**
206
- * Get a specific artist history
207
- *
208
- * @param {number} id - the id of the history to get
209
- * @returns {Promise<ArtistHistory | null>}
210
- */
211
- async getHistory(id) { return this.searchHistory({ id }).then(r => r.length === 0 ? null : r[0]); }
212
- /**
213
- * Search the artist history
214
- *
215
- * * Requires Authentication
216
- *
217
- * @param {object} [options]
218
- * @param {number} [options.id] - get a specific artist history entry
219
- * @param {string} [options.artist] - narrow the results by artist name
220
- * @param {number} [options.artist_id] - narrow the results by artist id
221
- * @param {number} [options.updater_id] - narrow the results by updater id
222
- * @param {string} [options.updater] - narrow the results by updater name
223
- * @param {(number |`${"" | "a" | "b"}${number}`)} [options.page] - page of results to get
224
- * @param {number} [options.limit] - limit the maximum amount of results returned
225
- * @param
226
- * @returns {Promise<Array<ArtistHistory>>}
227
- */
228
- async searchHistory(options) {
229
- options = options ?? {};
230
- const qs = new FormHelper_1.default();
231
- if (typeof options.id === "number")
232
- qs.add("search[id]", options.id);
233
- if (typeof options.artist === "number")
234
- qs.add("search[name]", options.artist);
235
- if (typeof options.artist_id === "number")
236
- qs.add("search[artist_id]", options.artist_id);
237
- if (typeof options.updater === "number")
238
- qs.add("search[updater]", options.updater);
239
- if (typeof options.updater_id === "number")
240
- qs.add("search[updater_id]", options.updater_id);
241
- if (typeof options.page !== "undefined")
242
- qs.add("page", options.page);
243
- if (typeof options.limit === "number")
244
- qs.add("limit", options.limit);
245
- const res = await this.main.request.get(`/artist_versions.json?${qs.build()}`);
246
- if (res && !Array.isArray(res) && "artist_versions" in res)
247
- return [];
248
- return res.map(info => new ArtistHistory_1.default(this.main, info));
249
- }
250
- /**
251
- * Get the list of do not post & conditional do not post artists.
252
- *
253
- * This assumes whatever instance you're running against has the same structure as e621!
254
- *
255
- * @param {number} [id=85] - the id of the dnp wiki page (85 on e621)
256
- * @returns {Promise<DoNotPostList>}
257
- */
258
- async getDoNotPost(id = 85) {
259
- const res = await this.main.wikiPages.get.call(this.main.wikiPages, id);
260
- if (res === null)
261
- throw new Error("failed to get dnp wiki page");
262
- const body = res.body.split("\n");
263
- const dnpStart = body.findIndex(line => line.includes("[#number]#"));
264
- const dnpEnd = body.findIndex(line => line.startsWith("h4") && line.includes("Conditional Do Not Post"));
265
- const condStart = dnpEnd;
266
- const condEnd = body.findIndex(line => line.includes("DNP List, Do-Not-Post List"));
267
- const dnp = [], cond = [];
268
- for (let i = dnpStart; i < dnpEnd; i++) {
269
- const line = body[i];
270
- if (!line || !line.startsWith("*"))
271
- continue;
272
- const names = line.slice(2).split("-")[0];
273
- if (names.includes("/"))
274
- dnp.push(...names.split("/").map(n => n.split(" on ")[0].trim()));
275
- else
276
- dnp.push(names.split(" on ")[0].trim());
277
- }
278
- for (let i = condStart; i < condEnd; i++) {
279
- const line = body[i];
280
- if (!line || !line.startsWith("*"))
281
- continue;
282
- const names = line.slice(2).split("-")[0].replace(/\[\/?b\]/g, "");
283
- if (names.includes("/"))
284
- cond.push(...names.split("/").map(n => n.split(" on ")[0].trim()));
285
- else
286
- cond.push(names.split(" on ")[0].trim());
287
- }
288
- return {
289
- dnp: Array.from(new Set(dnp)),
290
- conditionalDNP: Array.from(new Set(cond))
291
- };
292
- }
293
- }
294
- exports.default = Artists;
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJ0aXN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL0FydGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxrRUFBMEM7QUFXMUMsb0VBQTRDO0FBQzVDLDJEQUFrRDtBQUNsRCxnRkFBd0Q7QUFFeEQsTUFBcUIsT0FBTztJQUNWLElBQUksQ0FBZ0I7SUFDcEIsSUFBSSxDQUFPO0lBQzVCLFlBQVksSUFBVTtRQUNyQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQzdCLElBQUksRUFBRTtnQkFDTCxHQUFHO29CQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25MLENBQUM7Z0JBQ0QsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLFVBQVUsRUFBSSxLQUFLO2FBQ25CO1lBQ0QsSUFBSSxFQUFFO2dCQUNMLEtBQUssRUFBUyxJQUFJO2dCQUNsQixZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFJLEtBQUs7Z0JBQ25CLFFBQVEsRUFBTSxLQUFLO2FBQ25CO1NBQ0QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFVO1FBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFtQixZQUFZLEVBQUUs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