e621 2.2.4 → 3.0.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 (386) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -40
  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 +2908 -0
  34. package/dist/lib/generated/schemas.js +3911 -0
  35. package/dist/lib/generated/sdk.d.ts +1373 -0
  36. package/dist/lib/generated/sdk.js +2557 -0
  37. package/dist/lib/generated/source.json +19299 -0
  38. package/dist/lib/generated/types.d.ts +9663 -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 +100 -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 +97 -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 +174 -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/StaffNote.d.ts +53 -0
  121. package/dist/lib/models/StaffNote.js +79 -0
  122. package/dist/lib/models/Tag.d.ts +59 -0
  123. package/dist/lib/models/Tag.js +91 -0
  124. package/dist/lib/models/TagAlias.d.ts +51 -0
  125. package/dist/lib/models/TagAlias.js +77 -0
  126. package/dist/lib/models/TagCorrection.d.ts +15 -0
  127. package/dist/lib/models/TagCorrection.js +20 -0
  128. package/dist/lib/models/TagImplication.d.ts +51 -0
  129. package/dist/lib/models/TagImplication.js +77 -0
  130. package/dist/lib/models/TagPreview.d.ts +14 -0
  131. package/dist/lib/models/TagPreview.js +17 -0
  132. package/dist/lib/models/TagTypeVersion.d.ts +14 -0
  133. package/dist/lib/models/TagTypeVersion.js +17 -0
  134. package/dist/lib/models/Takedown.d.ts +87 -0
  135. package/dist/lib/models/Takedown.js +137 -0
  136. package/dist/lib/models/Ticket.d.ts +51 -0
  137. package/dist/lib/models/Ticket.js +77 -0
  138. package/dist/lib/models/Upload.d.ts +14 -0
  139. package/dist/lib/models/Upload.js +17 -0
  140. package/dist/lib/models/UploadWhitelist.d.ts +37 -0
  141. package/dist/lib/models/UploadWhitelist.js +55 -0
  142. package/dist/lib/models/User.d.ts +97 -0
  143. package/dist/lib/models/User.js +160 -0
  144. package/dist/lib/models/UserFeedback.d.ts +63 -0
  145. package/dist/lib/models/UserFeedback.js +97 -0
  146. package/dist/lib/models/UserNameChangeRequest.d.ts +26 -0
  147. package/dist/lib/models/UserNameChangeRequest.js +37 -0
  148. package/dist/lib/models/WikiPage.d.ts +49 -0
  149. package/dist/lib/models/WikiPage.js +75 -0
  150. package/dist/lib/models/WikiPageVersion.d.ts +24 -0
  151. package/dist/lib/models/WikiPageVersion.js +35 -0
  152. package/dist/lib/models/index.d.ts +53 -0
  153. package/dist/lib/models/index.js +54 -0
  154. package/dist/lib/modules/ArtistUrls.d.ts +18 -0
  155. package/dist/lib/modules/ArtistUrls.js +28 -0
  156. package/dist/lib/modules/ArtistVersions.d.ts +18 -0
  157. package/dist/lib/modules/ArtistVersions.js +28 -0
  158. package/dist/lib/modules/Artists.d.ts +90 -0
  159. package/dist/lib/modules/Artists.js +151 -0
  160. package/dist/lib/modules/AvoidPostingVersions.d.ts +18 -0
  161. package/dist/lib/modules/AvoidPostingVersions.js +28 -0
  162. package/dist/lib/modules/AvoidPostings.d.ts +112 -0
  163. package/dist/lib/modules/AvoidPostings.js +181 -0
  164. package/dist/lib/modules/Bans.d.ts +26 -0
  165. package/dist/lib/modules/Bans.js +47 -0
  166. package/dist/lib/modules/Base.d.ts +20 -0
  167. package/dist/lib/modules/Base.js +39 -0
  168. package/dist/lib/modules/Blips.d.ts +105 -0
  169. package/dist/lib/modules/Blips.js +188 -0
  170. package/dist/lib/modules/BulkUpdateRequests.d.ts +76 -0
  171. package/dist/lib/modules/BulkUpdateRequests.js +136 -0
  172. package/dist/lib/modules/CommentVotes.d.ts +30 -0
  173. package/dist/lib/modules/CommentVotes.js +56 -0
  174. package/dist/lib/modules/Comments.d.ts +112 -0
  175. package/dist/lib/modules/Comments.js +195 -0
  176. package/dist/lib/modules/DMails.d.ts +70 -0
  177. package/dist/lib/modules/DMails.js +134 -0
  178. package/dist/lib/modules/DText.d.ts +18 -0
  179. package/dist/lib/modules/DText.js +32 -0
  180. package/dist/lib/modules/EditHistories.d.ts +34 -0
  181. package/dist/lib/modules/EditHistories.js +56 -0
  182. package/dist/lib/modules/EmailBlacklists.d.ts +45 -0
  183. package/dist/lib/modules/EmailBlacklists.js +74 -0
  184. package/dist/lib/modules/Favorites.d.ts +38 -0
  185. package/dist/lib/modules/Favorites.js +73 -0
  186. package/dist/lib/modules/ForumPosts.d.ts +107 -0
  187. package/dist/lib/modules/ForumPosts.js +190 -0
  188. package/dist/lib/modules/ForumTopics.d.ts +125 -0
  189. package/dist/lib/modules/ForumTopics.js +237 -0
  190. package/dist/lib/modules/HelpPages.d.ts +67 -0
  191. package/dist/lib/modules/HelpPages.js +118 -0
  192. package/dist/lib/modules/IpBans.d.ts +47 -0
  193. package/dist/lib/modules/IpBans.js +76 -0
  194. package/dist/lib/modules/IqdbQueries.d.ts +36 -0
  195. package/dist/lib/modules/IqdbQueries.js +63 -0
  196. package/dist/lib/modules/Mascots.d.ts +60 -0
  197. package/dist/lib/modules/Mascots.js +98 -0
  198. package/dist/lib/modules/ModActions.d.ts +34 -0
  199. package/dist/lib/modules/ModActions.js +55 -0
  200. package/dist/lib/modules/NewsUpdates.d.ts +60 -0
  201. package/dist/lib/modules/NewsUpdates.js +98 -0
  202. package/dist/lib/modules/NoteVersions.d.ts +18 -0
  203. package/dist/lib/modules/NoteVersions.js +28 -0
  204. package/dist/lib/modules/Notes.d.ts +72 -0
  205. package/dist/lib/modules/Notes.js +133 -0
  206. package/dist/lib/modules/PoolVersions.d.ts +18 -0
  207. package/dist/lib/modules/PoolVersions.js +28 -0
  208. package/dist/lib/modules/Pools.d.ts +104 -0
  209. package/dist/lib/modules/Pools.js +197 -0
  210. package/dist/lib/modules/Popular.d.ts +18 -0
  211. package/dist/lib/modules/Popular.js +31 -0
  212. package/dist/lib/modules/PostApprovals.d.ts +42 -0
  213. package/dist/lib/modules/PostApprovals.js +77 -0
  214. package/dist/lib/modules/PostDisapprovals.d.ts +37 -0
  215. package/dist/lib/modules/PostDisapprovals.js +55 -0
  216. package/dist/lib/modules/PostEvents.d.ts +20 -0
  217. package/dist/lib/modules/PostEvents.js +30 -0
  218. package/dist/lib/modules/PostFlags.d.ts +53 -0
  219. package/dist/lib/modules/PostFlags.js +93 -0
  220. package/dist/lib/modules/PostReplacements.d.ts +94 -0
  221. package/dist/lib/modules/PostReplacements.js +167 -0
  222. package/dist/lib/modules/PostSets.d.ts +116 -0
  223. package/dist/lib/modules/PostSets.js +211 -0
  224. package/dist/lib/modules/PostVersions.d.ts +51 -0
  225. package/dist/lib/modules/PostVersions.js +94 -0
  226. package/dist/lib/modules/PostVotes.d.ts +28 -0
  227. package/dist/lib/modules/PostVotes.js +54 -0
  228. package/dist/lib/modules/Posts.d.ts +193 -0
  229. package/dist/lib/modules/Posts.js +395 -0
  230. package/dist/lib/modules/RelatedTags.d.ts +19 -0
  231. package/dist/lib/modules/RelatedTags.js +29 -0
  232. package/dist/lib/modules/StaffNotes.d.ts +80 -0
  233. package/dist/lib/modules/StaffNotes.js +140 -0
  234. package/dist/lib/modules/TagAliases.d.ts +80 -0
  235. package/dist/lib/modules/TagAliases.js +140 -0
  236. package/dist/lib/modules/TagCorrections.d.ts +25 -0
  237. package/dist/lib/modules/TagCorrections.js +52 -0
  238. package/dist/lib/modules/TagImplications.d.ts +80 -0
  239. package/dist/lib/modules/TagImplications.js +140 -0
  240. package/dist/lib/modules/TagTypeVersions.d.ts +18 -0
  241. package/dist/lib/modules/TagTypeVersions.js +28 -0
  242. package/dist/lib/modules/Tags.d.ts +64 -0
  243. package/dist/lib/modules/Tags.js +116 -0
  244. package/dist/lib/modules/Takedowns.d.ts +114 -0
  245. package/dist/lib/modules/Takedowns.js +211 -0
  246. package/dist/lib/modules/Tickets.d.ts +71 -0
  247. package/dist/lib/modules/Tickets.js +123 -0
  248. package/dist/lib/modules/UploadWhitelists.d.ts +68 -0
  249. package/dist/lib/modules/UploadWhitelists.js +117 -0
  250. package/dist/lib/modules/Uploads.d.ts +42 -0
  251. package/dist/lib/modules/Uploads.js +78 -0
  252. package/dist/lib/modules/UserFeedbacks.d.ts +94 -0
  253. package/dist/lib/modules/UserFeedbacks.js +165 -0
  254. package/dist/lib/modules/UserNameChangeRequests.d.ts +59 -0
  255. package/dist/lib/modules/UserNameChangeRequests.js +99 -0
  256. package/dist/lib/modules/Users.d.ts +132 -0
  257. package/dist/lib/modules/Users.js +263 -0
  258. package/dist/lib/modules/WikiPageVersions.d.ts +26 -0
  259. package/dist/lib/modules/WikiPageVersions.js +47 -0
  260. package/dist/lib/modules/WikiPages.d.ts +76 -0
  261. package/dist/lib/modules/WikiPages.js +137 -0
  262. package/dist/lib/modules/admin/Users.d.ts +45 -0
  263. package/dist/lib/modules/admin/Users.js +77 -0
  264. package/dist/lib/modules/comments/Votes.d.ts +26 -0
  265. package/dist/lib/modules/comments/Votes.js +51 -0
  266. package/dist/lib/modules/forum_posts/Votes.d.ts +26 -0
  267. package/dist/lib/modules/forum_posts/Votes.js +51 -0
  268. package/dist/lib/modules/index.d.ts +172 -0
  269. package/dist/lib/modules/index.js +114 -0
  270. package/dist/lib/modules/posts/Flag.d.ts +16 -0
  271. package/dist/lib/modules/posts/Flag.js +31 -0
  272. package/dist/lib/modules/posts/Votes.d.ts +26 -0
  273. package/dist/lib/modules/posts/Votes.js +51 -0
  274. package/dist/lib/modules/users/DMails.d.ts +29 -0
  275. package/dist/lib/modules/users/DMails.js +55 -0
  276. package/dist/lib/util.d.ts +48 -0
  277. package/dist/lib/util.js +49 -0
  278. package/dist/package.json +73 -0
  279. package/package.json +46 -20
  280. package/tsconfig.json +54 -0
  281. package/.mocharc.json +0 -6
  282. package/.ncurc.json +0 -3
  283. package/.node-version +0 -1
  284. package/Features/Artists.md +0 -39
  285. package/Features/Blips.md +0 -33
  286. package/Features/E621SearchInconsistencies.md +0 -54
  287. package/Features/FuturePlans.md +0 -50
  288. package/Features/Notes.md +0 -34
  289. package/Features/Pools.md +0 -38
  290. package/Features/PostFlags.md +0 -31
  291. package/Features/PostSets.md +0 -36
  292. package/Features/Posts.md +0 -46
  293. package/Features/README.md +0 -15
  294. package/Features/Tags.md +0 -34
  295. package/Features/Takedowns.md +0 -32
  296. package/Features/UserFeedback.md +0 -32
  297. package/Features/Users.md +0 -36
  298. package/Features/WikiPages.md +0 -36
  299. package/build/package.json +0 -45
  300. package/build/src/index.d.ts +0 -68
  301. package/build/src/index.js +0 -194
  302. package/build/src/modules/Artists.d.ts +0 -128
  303. package/build/src/modules/Artists.js +0 -295
  304. package/build/src/modules/Blips.d.ts +0 -79
  305. package/build/src/modules/Blips.js +0 -157
  306. package/build/src/modules/Notes.d.ts +0 -88
  307. package/build/src/modules/Notes.js +0 -189
  308. package/build/src/modules/Pools.d.ts +0 -130
  309. package/build/src/modules/Pools.js +0 -261
  310. package/build/src/modules/PostFlags.d.ts +0 -55
  311. package/build/src/modules/PostFlags.js +0 -126
  312. package/build/src/modules/PostSets.d.ts +0 -102
  313. package/build/src/modules/PostSets.js +0 -208
  314. package/build/src/modules/Posts.d.ts +0 -154
  315. package/build/src/modules/Posts.js +0 -390
  316. package/build/src/modules/Tags.d.ts +0 -78
  317. package/build/src/modules/Tags.js +0 -174
  318. package/build/src/modules/Takedowns.d.ts +0 -81
  319. package/build/src/modules/Takedowns.js +0 -195
  320. package/build/src/modules/UserFeedback.d.ts +0 -66
  321. package/build/src/modules/UserFeedback.js +0 -136
  322. package/build/src/modules/Users.d.ts +0 -117
  323. package/build/src/modules/Users.js +0 -261
  324. package/build/src/modules/WikiPages.d.ts +0 -107
  325. package/build/src/modules/WikiPages.js +0 -220
  326. package/build/src/structures/Artist.d.ts +0 -36
  327. package/build/src/structures/Artist.js +0 -51
  328. package/build/src/structures/ArtistHistory.d.ts +0 -39
  329. package/build/src/structures/ArtistHistory.js +0 -50
  330. package/build/src/structures/AuthenticatedUser.d.ts +0 -109
  331. package/build/src/structures/AuthenticatedUser.js +0 -128
  332. package/build/src/structures/Blip.d.ts +0 -66
  333. package/build/src/structures/Blip.js +0 -85
  334. package/build/src/structures/Note.d.ts +0 -32
  335. package/build/src/structures/Note.js +0 -41
  336. package/build/src/structures/NoteHistory.d.ts +0 -38
  337. package/build/src/structures/NoteHistory.js +0 -47
  338. package/build/src/structures/Pool.d.ts +0 -85
  339. package/build/src/structures/Pool.js +0 -112
  340. package/build/src/structures/PoolHistory.d.ts +0 -43
  341. package/build/src/structures/PoolHistory.js +0 -54
  342. package/build/src/structures/Post.d.ts +0 -157
  343. package/build/src/structures/Post.js +0 -170
  344. package/build/src/structures/PostApproval.d.ts +0 -25
  345. package/build/src/structures/PostApproval.js +0 -33
  346. package/build/src/structures/PostFlag.d.ts +0 -38
  347. package/build/src/structures/PostFlag.js +0 -47
  348. package/build/src/structures/PostHistory.d.ts +0 -52
  349. package/build/src/structures/PostHistory.js +0 -93
  350. package/build/src/structures/PostSet.d.ts +0 -71
  351. package/build/src/structures/PostSet.js +0 -93
  352. package/build/src/structures/Tag.d.ts +0 -61
  353. package/build/src/structures/Tag.js +0 -87
  354. package/build/src/structures/TagHistory.d.ts +0 -28
  355. package/build/src/structures/TagHistory.js +0 -36
  356. package/build/src/structures/Takedown.d.ts +0 -49
  357. package/build/src/structures/Takedown.js +0 -64
  358. package/build/src/structures/User.d.ts +0 -62
  359. package/build/src/structures/User.js +0 -80
  360. package/build/src/structures/WikiPage.d.ts +0 -17
  361. package/build/src/structures/WikiPage.js +0 -27
  362. package/build/src/structures/WikiPageHistory.d.ts +0 -38
  363. package/build/src/structures/WikiPageHistory.js +0 -49
  364. package/build/src/types/artists.d.ts +0 -82
  365. package/build/src/types/blips.d.ts +0 -37
  366. package/build/src/types/index.d.ts +0 -96
  367. package/build/src/types/notes.d.ts +0 -64
  368. package/build/src/types/pools.d.ts +0 -62
  369. package/build/src/types/post_flags.d.ts +0 -36
  370. package/build/src/types/post_sets.d.ts +0 -33
  371. package/build/src/types/posts.d.ts +0 -181
  372. package/build/src/types/tags.d.ts +0 -56
  373. package/build/src/types/takedowns.d.ts +0 -62
  374. package/build/src/types/user_feedback.d.ts +0 -27
  375. package/build/src/types/users.d.ts +0 -277
  376. package/build/src/types/wiki_pages.d.ts +0 -66
  377. package/build/src/util/Debug.d.ts +0 -1
  378. package/build/src/util/Debug.js +0 -16
  379. package/build/src/util/FormHelper.d.ts +0 -9
  380. package/build/src/util/FormHelper.js +0 -15
  381. package/build/src/util/MultipartData.d.ts +0 -7
  382. package/build/src/util/MultipartData.js +0 -39
  383. package/build/src/util/RequestHandler.d.ts +0 -38
  384. package/build/src/util/RequestHandler.js +0 -343
  385. package/build/src/util/Timer.d.ts +0 -6
  386. package/build/src/util/Timer.js +0 -71
@@ -1,9 +0,0 @@
1
- export default class FormHelper {
2
- private parts;
3
- add(value: string): this;
4
- add(name: string, value: string | number | boolean): this;
5
- build(): string;
6
- getRaw(): string[];
7
- get2d(): string[][];
8
- toString(): string;
9
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class FormHelper {
4
- parts = [];
5
- add(first, second) {
6
- this.parts.push(second === undefined ? encodeURIComponent(first) : `${first}=${encodeURIComponent(second)}`);
7
- return this;
8
- }
9
- build() { return this.parts.join("&"); }
10
- getRaw() { return Array.from(this.parts); }
11
- get2d() { return Array.from(this.parts).map(p => p.split("=")); }
12
- toString() { return this.build.call(this); }
13
- }
14
- exports.default = FormHelper;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL0Zvcm1IZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFxQixVQUFVO0lBQ3RCLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBSWxDLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBa0M7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RyxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxLQUFLLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxLQUFLLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEtBQUssS0FBSyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVDO0FBZEQsNkJBY0MifQ==
@@ -1,7 +0,0 @@
1
- /// <reference types="node" />
2
- export default class MultipartData {
3
- boundary: string;
4
- bufs: Array<Buffer>;
5
- attach(fieldName: string, data: any, filename?: string): void;
6
- finish(): Buffer[];
7
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- /* eslint-disable @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/restrict-plus-operands */
3
- // lovingly borrowed from Eris
4
- // https://github.com/abalabahaha/eris/blob/master/lib/util/MultipartData.js
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- class MultipartData {
7
- boundary = "----E621Multipart";
8
- bufs = [];
9
- attach(fieldName, data, filename) {
10
- if (data === undefined) {
11
- return;
12
- }
13
- let str = "\r\n--" + this.boundary + "\r\nContent-Disposition: form-data; name=\"" + fieldName + "\"";
14
- if (filename) {
15
- str += "; filename=\"" + filename + "\"";
16
- }
17
- if (ArrayBuffer.isView(data)) {
18
- str += "\r\nContent-Type: application/octet-stream";
19
- if (!(data instanceof Uint8Array)) {
20
- data = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
21
- }
22
- }
23
- else if (typeof data === "object") {
24
- str += "\r\nContent-Type: application/json";
25
- data = Buffer.from(JSON.stringify(data));
26
- }
27
- else {
28
- data = Buffer.from("" + data);
29
- }
30
- this.bufs.push(Buffer.from(str + "\r\n\r\n"));
31
- this.bufs.push(data);
32
- }
33
- finish() {
34
- this.bufs.push(Buffer.from("\r\n--" + this.boundary + "--"));
35
- return this.bufs;
36
- }
37
- }
38
- exports.default = MultipartData;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlwYXJ0RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL011bHRpcGFydERhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlJQUF5STtBQUN6SSw4QkFBOEI7QUFDOUIsNEVBQTRFOztBQUU1RSxNQUFxQixhQUFhO0lBQ2pDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztJQUMvQixJQUFJLEdBQWtCLEVBQUUsQ0FBQztJQUV6QixNQUFNLENBQUMsU0FBaUIsRUFBRSxJQUFTLEVBQUUsUUFBaUI7UUFDckQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE9BQU87U0FDUDtRQUNELElBQUksR0FBRyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEcsSUFBSSxRQUFRLEVBQUU7WUFDYixHQUFHLElBQUksZUFBZSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDekM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0IsR0FBRyxJQUFJLDRDQUE0QyxDQUFDO1lBQ3BELElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxVQUFVLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDckU7U0FDRDthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3BDLEdBQUcsSUFBSSxvQ0FBb0MsQ0FBQztZQUM1QyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNOLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7Q0FDRDtBQS9CRCxnQ0ErQkMifQ==
@@ -1,38 +0,0 @@
1
- /// <reference types="node" />
2
- import type FormHelper from "./FormHelper";
3
- import type E621 from "..";
4
- export declare class APIError extends Error {
5
- name: string;
6
- type: "UNEXPECTED" | "PARSE" | "UNKNOWN" | "BLIP_OLD";
7
- statusCode: number;
8
- statusMessage: string;
9
- method: string;
10
- path: string;
11
- reqBody: string | null;
12
- reqBodyDecoded: Record<string, unknown> | null;
13
- resBody: unknown | null;
14
- constructor(type: APIError["type"], statusCode: number, statusMessage: string, method: string, path: string, reqBody: string | null, resBody: unknown | null);
15
- }
16
- export default class RequestHandler {
17
- private readonly auth;
18
- private readonly main;
19
- constructor(main: E621);
20
- authCheck(func: string, error?: boolean): boolean;
21
- get<T = unknown>(path: string): Promise<T | null>;
22
- post<T = unknown>(path: string, body?: string): Promise<T | null>;
23
- postWithFile<T = unknown>(path: string, body: FormHelper, files: Array<{
24
- content: Buffer;
25
- name: string;
26
- }>): Promise<T | null>;
27
- patch<T = unknown>(path: string, body?: string): Promise<T | null>;
28
- put<T = unknown>(path: string, body?: string): Promise<T | null>;
29
- delete<T = unknown>(path: string, body?: string): Promise<T | null>;
30
- other<T = unknown>(method: string, path: string, body?: string): Promise<T | null>;
31
- otherWithFile<T = unknown>(method: string, path: string, body: FormHelper, files: Array<{
32
- content: Buffer;
33
- name: string;
34
- }>): Promise<T | null>;
35
- get instanceURL(): string;
36
- get deletedImageURL(): string;
37
- constructURL(md5: string, type: "original" | "preview" | "sample", ext?: string): string;
38
- }
@@ -1,343 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.APIError = void 0;
30
- const MultipartData_1 = __importDefault(require("./MultipartData"));
31
- const Debug_1 = __importDefault(require("./Debug"));
32
- const Timer_1 = __importDefault(require("./Timer"));
33
- const http = __importStar(require("http"));
34
- const https = __importStar(require("https"));
35
- class APIError extends Error {
36
- name = "APIError";
37
- type;
38
- statusCode;
39
- statusMessage;
40
- method;
41
- path;
42
- reqBody;
43
- reqBodyDecoded;
44
- resBody;
45
- constructor(type, statusCode, statusMessage, method, path, reqBody, resBody) {
46
- if (type === "UNEXPECTED")
47
- super(`Unexpected ${statusCode} ${statusMessage} on "${method.toUpperCase()} ${path}"`);
48
- else if (type === "PARSE")
49
- super(`Parse Error on "${method.toUpperCase()} ${path}"`);
50
- else if (type === "BLIP_OLD")
51
- super(`Blips older than 5 minutes cannot be edited on "${method.toUpperCase()} ${path}"`);
52
- else
53
- super(`Unknown Error on "${method.toUpperCase()} ${path}" (${statusCode} ${statusMessage})`);
54
- this.name = `APIError[${type || "UNKNOWN"}]`;
55
- this.type = type;
56
- this.statusCode = statusCode;
57
- this.statusMessage = statusMessage;
58
- this.method = method;
59
- this.path = path;
60
- this.reqBody = reqBody;
61
- this.reqBodyDecoded = null;
62
- if (reqBody) {
63
- try {
64
- this.reqBodyDecoded = decodeURIComponent(reqBody).split("&").map(v => ({ [v.split("=")[0]]: v.split("=")[1] })).reduce((a, b) => ({ ...a, ...b }), {});
65
- }
66
- catch {
67
- // ignore
68
- }
69
- }
70
- this.resBody = resBody;
71
- }
72
- }
73
- exports.APIError = APIError;
74
- class RequestHandler {
75
- auth;
76
- main;
77
- constructor(main) {
78
- Object.defineProperties(this, {
79
- auth: {
80
- get() {
81
- return !this.main.options.authUser || !this.main.options.authKey ? null : `Basic ${Buffer.from(`${this.main.options.authUser}:${this.main.options.authKey}`).toString("base64")}`;
82
- },
83
- configurable: false,
84
- enumerable: false
85
- },
86
- main: {
87
- value: main,
88
- configurable: false,
89
- enumerable: false,
90
- writable: false
91
- }
92
- });
93
- }
94
- authCheck(func, error = true) {
95
- if (this.auth === null) {
96
- if (error)
97
- throw new Error(`Authentication is required to use ${func}`);
98
- else
99
- return false;
100
- }
101
- else
102
- return true;
103
- }
104
- // null = 204 No Content
105
- async get(path) {
106
- const start = Timer_1.default.now();
107
- (0, Debug_1.default)("requestHandler", `-> GET ${path}`);
108
- return new Promise((resolve, reject) => {
109
- const r = (this.main.options.instanceSSL ? https : http)
110
- .request({
111
- method: "GET",
112
- timeout: this.main.options.requestTimeout * 1000,
113
- hostname: this.main.options.instanceHost,
114
- port: this.main.options.instancePort,
115
- path,
116
- headers: {
117
- "User-Agent": this.main.options.userAgent,
118
- "Host": this.main.options.instanceHost,
119
- ...(this.auth === null ? {} : {
120
- Authorization: this.auth
121
- })
122
- }
123
- }, (req) => {
124
- const data = [];
125
- req
126
- .on("error", (err) => reject(err))
127
- .on("data", (d) => data.push(d))
128
- .on("end", () => {
129
- const end = Timer_1.default.now();
130
- (0, Debug_1.default)("requestHandler", `<- GET ${path} - ${req.statusCode} ${req.statusMessage} [${Buffer.concat(data).toString().length}] - ${Timer_1.default.calc(start, end, 3)}`);
131
- if (!req.statusCode || !req.statusMessage)
132
- reject(new Error("No Status Information"));
133
- if (req.statusCode === 204)
134
- return resolve(null);
135
- else if (req.statusCode === 200 || req.statusCode === 201) {
136
- try {
137
- resolve(JSON.parse(Buffer.concat(data).toString()));
138
- }
139
- catch {
140
- reject(new APIError("PARSE", req.statusCode, req.statusMessage, "GET", path, null, Buffer.concat(data).toString()));
141
- }
142
- }
143
- else {
144
- let d;
145
- try {
146
- d = Buffer.concat(data).toString();
147
- d = JSON.parse(String(d));
148
- }
149
- catch {
150
- // ignore
151
- }
152
- reject(new APIError("UNEXPECTED", req.statusCode, req.statusMessage, "GET", path, null, d));
153
- }
154
- });
155
- })
156
- .setTimeout(this.main.options.requestTimeout * 1000, () => {
157
- r.destroy(new Error(`Request Went Over The Limit Of ${this.main.options.requestTimeout * 1000}ms`));
158
- });
159
- r.end();
160
- });
161
- }
162
- async post(path, body) { return this.other("POST", path, body); }
163
- async postWithFile(path, body, files) { return this.otherWithFile("POST", path, body, files); }
164
- async patch(path, body) { return this.other("PATCH", path, body); }
165
- async put(path, body) { return this.other("PUT", path, body); }
166
- async delete(path, body) { return this.other("DELETE", path, body); }
167
- async other(method, path, body) {
168
- const start = Timer_1.default.now();
169
- (0, Debug_1.default)("requestHandler", `-> ${method} ${path}`);
170
- return new Promise((resolve, reject) => {
171
- const r = (this.main.options.instanceSSL ? https : http)
172
- .request({
173
- method,
174
- timeout: this.main.options.requestTimeout * 1000,
175
- hostname: this.main.options.instanceHost,
176
- port: this.main.options.instancePort,
177
- path,
178
- headers: {
179
- "User-Agent": this.main.options.userAgent,
180
- "Content-Type": "application/x-www-form-urlencoded",
181
- "Host": this.main.options.instanceHost,
182
- ...(this.auth === null ? {} : {
183
- Authorization: this.auth
184
- })
185
- }
186
- }, (req) => {
187
- const data = [];
188
- req
189
- .on("error", (err) => reject(err))
190
- .on("data", (d) => data.push(d))
191
- .on("end", () => {
192
- const end = Timer_1.default.now();
193
- (0, Debug_1.default)("requestHandler", `<- ${method} ${path} - ${req.statusCode} ${req.statusMessage} [${Buffer.concat(data).toString().length}] - ${Timer_1.default.calc(start, end, 3)}`);
194
- if (!req.statusCode || !req.statusMessage)
195
- reject(new Error("No Status Information"));
196
- if (req.statusCode === 204)
197
- return resolve(null);
198
- else if (req.statusCode === 200 || req.statusCode === 201) {
199
- try {
200
- resolve(JSON.parse(Buffer.concat(data).toString()));
201
- }
202
- catch {
203
- reject(new APIError("PARSE", req.statusCode, req.statusMessage, method, path, body ?? null, Buffer.concat(data).toString()));
204
- }
205
- }
206
- else {
207
- // Editing a blip older than 5 minutes returns a 302 Found
208
- if (req.statusCode === 302 && /\/blips\/\d+\.json/.test(path))
209
- throw new APIError("BLIP_OLD", req.statusCode, req.statusMessage, method, path, body ?? null, Buffer.concat(data).toString());
210
- let d;
211
- try {
212
- d = Buffer.concat(data).toString();
213
- d = JSON.parse(String(d));
214
- }
215
- catch {
216
- // ignore
217
- }
218
- reject(new APIError("UNEXPECTED", req.statusCode, req.statusMessage, method, path, body ?? null, d));
219
- }
220
- });
221
- })
222
- .setTimeout(this.main.options.requestTimeout * 1000, () => {
223
- r.destroy(new Error(`Request Went Over The Limit Of ${this.main.options.requestTimeout * 1000}ms`));
224
- });
225
- if (body)
226
- r.write(body);
227
- r.end();
228
- });
229
- }
230
- // the things I do for zero dependencies
231
- // not well tested at all
232
- async otherWithFile(method, path, body, files) {
233
- const start = Timer_1.default.now();
234
- (0, Debug_1.default)("requestHandler", `-> ${method} ${path}`);
235
- return new Promise((resolve, reject) => {
236
- const multi = new MultipartData_1.default();
237
- files.forEach(({ content, name }, i) => {
238
- const magic = [...(new Uint8Array(content.slice(0, 4)))].map(v => v.toString(16).toUpperCase()).join("");
239
- let filename;
240
- switch (magic) {
241
- case "47494638":
242
- filename = `upload${i}.gif`;
243
- break;
244
- case "89504E47":
245
- filename = `upload${i}.png`;
246
- break;
247
- case "FFD8FFDB":
248
- case "FFD8FFE0":
249
- case "49460001":
250
- case "FFD8FFEE":
251
- case "69660000":
252
- filename = `upload${i}.jpeg`;
253
- break;
254
- case "1A45DFA3":
255
- filename = `upload${i}.webm`;
256
- break;
257
- case "52494646":
258
- filename = `upload${i}.webp`;
259
- break;
260
- default: throw new Error(`Unrecognized file type (magic: ${magic})`);
261
- }
262
- multi.attach(name, content, filename);
263
- });
264
- body.get2d().forEach(([key, value]) => {
265
- multi.attach(key, value);
266
- });
267
- const formData = multi.finish();
268
- const r = (this.main.options.instanceSSL ? https : http)
269
- .request({
270
- method,
271
- timeout: this.main.options.requestTimeout * 1000,
272
- hostname: this.main.options.instanceHost,
273
- port: this.main.options.instancePort,
274
- path,
275
- headers: {
276
- "User-Agent": this.main.options.userAgent,
277
- "Content-Type": `multipart/form-data; boundary=${multi.boundary}`,
278
- "Host": this.main.options.instanceHost,
279
- ...(this.auth === null ? {} : {
280
- Authorization: this.auth
281
- })
282
- }
283
- }, (req) => {
284
- const data = [];
285
- req
286
- .on("error", (err) => reject(err))
287
- .on("data", (d) => data.push(d))
288
- .on("end", () => {
289
- const end = Timer_1.default.now();
290
- (0, Debug_1.default)("requestHandler", `<- ${method} ${path} - ${req.statusCode} ${req.statusMessage} [${Buffer.concat(data).toString().length}] - ${Timer_1.default.calc(start, end, 3)}`);
291
- if (!req.statusCode || !req.statusMessage)
292
- reject(new Error("No Status Information"));
293
- if (req.statusCode === 204)
294
- return resolve(null);
295
- else if (req.statusCode === 200 || req.statusCode === 201) {
296
- try {
297
- resolve(JSON.parse(Buffer.concat(data).toString()));
298
- }
299
- catch {
300
- reject(new APIError("PARSE", req.statusCode, req.statusMessage, method, path, "Multipart Form Data", Buffer.concat(data).toString()));
301
- }
302
- }
303
- else {
304
- let d;
305
- try {
306
- d = Buffer.concat(data).toString();
307
- d = JSON.parse(String(d));
308
- }
309
- catch {
310
- // ignore
311
- }
312
- reject(new APIError("UNEXPECTED", req.statusCode, req.statusMessage, method, path, "Multipart Form Data", d));
313
- }
314
- });
315
- })
316
- .setTimeout(this.main.options.requestTimeout * 1000, () => {
317
- r.destroy(new Error(`Request Went Over The Limit Of ${this.main.options.requestTimeout * 1000}ms`));
318
- });
319
- for (const chunk of formData)
320
- r.write(chunk);
321
- r.end();
322
- });
323
- }
324
- get instanceURL() {
325
- return `http${this.main.options.instanceSSL ? "s" : ""}://${this.main.options.instanceHost}${[80, 443].includes(this.main.options.instancePort) ? "" : `:${this.main.options.instancePort}`}`;
326
- }
327
- // the deleted image url is on the instance itself by default
328
- get deletedImageURL() {
329
- return `${this.instanceURL}/images/deleted-preview.png`;
330
- }
331
- constructURL(md5, type, ext = "png") {
332
- if (this.main.options.reconstructStaticURL)
333
- return this.main.options.reconstructStaticURL(md5, type, ext);
334
- switch (this.main.options.imageReconstructionType) {
335
- case "e621": return `https://static1.e621.net/data/${type === "original" ? "" : `${type}/`}${md5.slice(0, 2)}/${md5.slice(2, 4)}/${md5}.${ext}`;
336
- case "yiffy": return `https://v3.yiff.media/${type === "original" ? "" : `${type}/`}${md5.slice(0, 2)}/${md5.slice(2, 4)}/${md5}.${ext}`;
337
- case "dev": return `${this.instanceURL}/data/${type === "original" ? "" : `${type}/`}${md5}.${ext}`;
338
- default: throw new Error(`Image reconstruction failed with no implemented method (type: ${String(this.main.options.imageReconstructionType)}, host: ${this.main.options.instanceHost})`);
339
- }
340
- }
341
- }
342
- exports.default = RequestHandler;
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9SZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLG9FQUE0QztBQUM1QyxvREFBNEI7QUFDNUIsb0RBQTRCO0FBRTVCLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsTUFBYSxRQUFTLFNBQVEsS0FBSztJQUNsQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ2xCLElBQUksQ0FBa0Q7SUFDdEQsVUFBVSxDQUFTO0lBQ25CLGFBQWEsQ0FBUztJQUN0QixNQUFNLENBQVM7SUFDZixJQUFJLENBQVM7SUFDYixPQUFPLENBQWdCO0lBQ3ZCLGNBQWMsQ0FBaUM7SUFDL0MsT0FBTyxDQUFpQjtJQUN4QixZQUFZLElBQXNCLEVBQUUsVUFBa0IsRUFBRSxhQUFxQixFQUFFLE1BQWMsRUFBRSxJQUFZLEVBQUUsT0FBc0IsRUFBRSxPQUF1QjtRQUMzSixJQUFJLElBQUksS0FBSyxZQUFZO1lBQUUsS0FBSyxDQUFDLGNBQWMsVUFBVSxJQUFJLGFBQWEsUUFBUSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzthQUM5RyxJQUFJLElBQUksS0FBSyxPQUFPO1lBQUUsS0FBSyxDQUFDLG1CQUFtQixNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNoRixJQUFJLElBQUksS0FBSyxVQUFVO1lBQUUsS0FBSyxDQUFDLG1EQUFtRCxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzs7WUFDbkgsS0FBSyxDQUFDLHFCQUFxQixNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxNQUFNLFVBQVUsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxHLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFB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
@@ -1,6 +0,0 @@
1
- export default class Timer {
2
- static now(): bigint;
3
- static calc(start: bigint, end: bigint, dec?: number): string;
4
- static convert(input: number, type: "ms" | "mi" | "ns", dec?: number): string;
5
- private static ms;
6
- }
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // https://github.com/UwUCode/Utils/blob/3e41d5bab0/src/Other/Timer.ts
4
- class Timer {
5
- static now() { return process.hrtime.bigint(); }
6
- static calc(start, end, dec = 0) {
7
- const v = Number(end - start);
8
- return this.convert(parseFloat((v).toFixed(dec)), "ns", dec);
9
- }
10
- // https://github.com/UwUCode/Utils/blob/3e41d5bab0/src/Functions/Time.ts#L103-L119
11
- static convert(input, type, dec = 3) {
12
- input = parseFloat(input.toFixed(dec));
13
- switch (type) {
14
- case "ms": return input < 1000 ? `${input}ms` : this.ms(input);
15
- case "mi": return input < 1000 ? `${input}µs` : this.convert(input / 1000, "ms", dec);
16
- case "ns": return input < 1000 ? `${input}ns` : this.convert(input / 1000, "mi", dec);
17
- // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
18
- default: return `${input}${type}`;
19
- }
20
- }
21
- // https://github.com/UwUCode/Utils/blob/3e41d5bab0/src/Functions/Time.ts#L21-L101
22
- static ms(time) {
23
- if (time < 0)
24
- throw new TypeError("Negative time provided.");
25
- // @FIXME language :sweats:
26
- if (time === 0)
27
- return "0 milliseconds";
28
- const r = {
29
- // Number.EPSILON = https://stackoverflow.com/a/11832950
30
- ms: Math.round(((time % 1000) + Number.EPSILON) * 100) / 100,
31
- s: 0,
32
- m: 0,
33
- h: 0,
34
- d: 0,
35
- mn: 0,
36
- y: 0
37
- };
38
- r.y = Math.floor(time / 3.154e+10);
39
- time -= r.y * 3.154e+10;
40
- r.mn = Math.floor(time / 2.628e+9);
41
- time -= r.mn * 2.628e+9;
42
- r.d = Math.floor(time / 8.64e+7);
43
- time -= r.d * 8.64e+7;
44
- r.h = Math.floor(time / 3.6e+6);
45
- time -= r.h * 3.6e+6;
46
- r.m = Math.floor(time / 6e4);
47
- time -= r.m * 6e4;
48
- r.s = Math.floor(time / 1e3);
49
- time -= r.s * 1e3;
50
- const str = [];
51
- if (r.ms > 0)
52
- str.push(`${r.ms} ms`);
53
- if (r.s > 0)
54
- str.push(`${r.s} second${r.s === 1 ? "" : "s"}`);
55
- if (r.m > 0)
56
- str.push(`${r.m} minute${r.m === 1 ? "" : "s"}`);
57
- if (r.h > 0)
58
- str.push(`${r.h} hour${r.h === 1 ? "" : "s"}`);
59
- if (r.d > 0)
60
- str.push(`${r.d} day${r.d === 1 ? "" : "s"}`);
61
- if (r.mn > 0)
62
- str.push(`${r.mn} month${r.mn === 1 ? "" : "s"}`);
63
- if (r.y > 0)
64
- str.push(`${r.y} year${r.y === 1 ? "" : "s"}`);
65
- if (str.length > 1)
66
- str[0] = `and ${str[0]}`;
67
- return str.reverse().join(" ");
68
- }
69
- }
70
- exports.default = Timer;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9UaW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNFQUFzRTtBQUN0RSxNQUFxQixLQUFLO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLEtBQUssT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDOUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBd0IsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUM5RCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2QyxRQUFRLElBQUksRUFBRTtZQUNiLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLDRFQUE0RTtZQUM1RSxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1NBQ2xDO0lBQ0YsQ0FBQztJQUVELGtGQUFrRjtJQUMxRSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQVk7UUFDN0IsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RCwyQkFBMkI7UUFDM0IsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUM7UUFDeEMsTUFBTSxDQUFDLEdBQUc7WUFDVCx3REFBd0Q7WUFDeEQsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRztZQUM1RCxDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLEVBQUUsRUFBRSxDQUFDO1lBQ0wsQ0FBQyxFQUFFLENBQUM7U0FDSixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDeEIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFFbEIsTUFBTSxHQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7WUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU1RCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRzdDLE9BQU8sR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0Q7QUE5REQsd0JBOERDIn0=