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.
- package/LICENSE +21 -0
- package/README.md +14 -41
- package/dist/lib/Debug.d.ts +1 -0
- package/dist/lib/Debug.js +16 -0
- package/dist/lib/errors.d.ts +8 -0
- package/dist/lib/errors.js +37 -0
- package/dist/lib/generated/client/client.d.ts +2 -0
- package/dist/lib/generated/client/client.js +236 -0
- package/dist/lib/generated/client/index.d.ts +8 -0
- package/dist/lib/generated/client/index.js +7 -0
- package/dist/lib/generated/client/types.d.ts +117 -0
- package/dist/lib/generated/client/types.js +3 -0
- package/dist/lib/generated/client/utils.d.ts +33 -0
- package/dist/lib/generated/client/utils.js +229 -0
- package/dist/lib/generated/client.d.ts +12 -0
- package/dist/lib/generated/client.js +4 -0
- package/dist/lib/generated/core/auth.d.ts +18 -0
- package/dist/lib/generated/core/auth.js +15 -0
- package/dist/lib/generated/core/bodySerializer.d.ts +25 -0
- package/dist/lib/generated/core/bodySerializer.js +58 -0
- package/dist/lib/generated/core/params.d.ts +43 -0
- package/dist/lib/generated/core/params.js +101 -0
- package/dist/lib/generated/core/pathSerializer.d.ts +33 -0
- package/dist/lib/generated/core/pathSerializer.js +107 -0
- package/dist/lib/generated/core/queryKeySerializer.d.ts +18 -0
- package/dist/lib/generated/core/queryKeySerializer.js +93 -0
- package/dist/lib/generated/core/serverSentEvents.d.ts +71 -0
- package/dist/lib/generated/core/serverSentEvents.js +134 -0
- package/dist/lib/generated/core/types.d.ts +78 -0
- package/dist/lib/generated/core/types.js +3 -0
- package/dist/lib/generated/core/utils.d.ts +19 -0
- package/dist/lib/generated/core/utils.js +88 -0
- package/dist/lib/generated/schemas.d.ts +2989 -0
- package/dist/lib/generated/schemas.js +4014 -0
- package/dist/lib/generated/sdk.d.ts +1417 -0
- package/dist/lib/generated/sdk.js +2633 -0
- package/dist/lib/generated/source.json +18815 -0
- package/dist/lib/generated/types.d.ts +9923 -0
- package/dist/lib/generated/types.js +3 -0
- package/dist/lib/generated.d.ts +4 -0
- package/dist/lib/generated.js +5 -0
- package/dist/lib/index.d.ts +58 -0
- package/dist/lib/index.js +74 -0
- package/dist/lib/models/ApiKey.d.ts +14 -0
- package/dist/lib/models/ApiKey.js +17 -0
- package/dist/lib/models/Artist.d.ts +61 -0
- package/dist/lib/models/Artist.js +86 -0
- package/dist/lib/models/ArtistUrl.d.ts +14 -0
- package/dist/lib/models/ArtistUrl.js +17 -0
- package/dist/lib/models/ArtistVersion.d.ts +14 -0
- package/dist/lib/models/ArtistVersion.js +17 -0
- package/dist/lib/models/AvoidPosting.d.ts +63 -0
- package/dist/lib/models/AvoidPosting.js +97 -0
- package/dist/lib/models/AvoidPostingVersion.d.ts +14 -0
- package/dist/lib/models/AvoidPostingVersion.js +17 -0
- package/dist/lib/models/Ban.d.ts +14 -0
- package/dist/lib/models/Ban.js +17 -0
- package/dist/lib/models/Base.d.ts +11 -0
- package/dist/lib/models/Base.js +39 -0
- package/dist/lib/models/Blip.d.ts +79 -0
- package/dist/lib/models/Blip.js +120 -0
- package/dist/lib/models/BulkUpdateRequest.d.ts +49 -0
- package/dist/lib/models/BulkUpdateRequest.js +75 -0
- package/dist/lib/models/Comment.d.ts +101 -0
- package/dist/lib/models/Comment.js +157 -0
- package/dist/lib/models/CurrentUser.d.ts +14 -0
- package/dist/lib/models/CurrentUser.js +17 -0
- package/dist/lib/models/DMail.d.ts +46 -0
- package/dist/lib/models/DMail.js +73 -0
- package/dist/lib/models/EditHistory.d.ts +14 -0
- package/dist/lib/models/EditHistory.js +17 -0
- package/dist/lib/models/EmailBlacklist.d.ts +26 -0
- package/dist/lib/models/EmailBlacklist.js +37 -0
- package/dist/lib/models/ForumPost.d.ts +98 -0
- package/dist/lib/models/ForumPost.js +154 -0
- package/dist/lib/models/ForumPostVote.d.ts +24 -0
- package/dist/lib/models/ForumPostVote.js +35 -0
- package/dist/lib/models/ForumTopic.d.ts +81 -0
- package/dist/lib/models/ForumTopic.js +131 -0
- package/dist/lib/models/FullCurrentUser.d.ts +14 -0
- package/dist/lib/models/FullCurrentUser.js +17 -0
- package/dist/lib/models/FullUser.d.ts +14 -0
- package/dist/lib/models/FullUser.js +17 -0
- package/dist/lib/models/Help.d.ts +39 -0
- package/dist/lib/models/Help.js +57 -0
- package/dist/lib/models/IpBan.d.ts +28 -0
- package/dist/lib/models/IpBan.js +39 -0
- package/dist/lib/models/IqdbPost.d.ts +14 -0
- package/dist/lib/models/IqdbPost.js +17 -0
- package/dist/lib/models/Mascot.d.ts +39 -0
- package/dist/lib/models/Mascot.js +57 -0
- package/dist/lib/models/ModAction.d.ts +14 -0
- package/dist/lib/models/ModAction.js +17 -0
- package/dist/lib/models/NewsUpdate.d.ts +39 -0
- package/dist/lib/models/NewsUpdate.js +57 -0
- package/dist/lib/models/Note.d.ts +45 -0
- package/dist/lib/models/Note.js +71 -0
- package/dist/lib/models/NoteVersion.d.ts +24 -0
- package/dist/lib/models/NoteVersion.js +35 -0
- package/dist/lib/models/Pool.d.ts +67 -0
- package/dist/lib/models/Pool.js +109 -0
- package/dist/lib/models/PoolVersion.d.ts +24 -0
- package/dist/lib/models/PoolVersion.js +35 -0
- package/dist/lib/models/Post.d.ts +175 -0
- package/dist/lib/models/Post.js +287 -0
- package/dist/lib/models/PostApproval.d.ts +26 -0
- package/dist/lib/models/PostApproval.js +37 -0
- package/dist/lib/models/PostDisapproval.d.ts +14 -0
- package/dist/lib/models/PostDisapproval.js +17 -0
- package/dist/lib/models/PostEvent.d.ts +14 -0
- package/dist/lib/models/PostEvent.js +17 -0
- package/dist/lib/models/PostFlag.d.ts +38 -0
- package/dist/lib/models/PostFlag.js +57 -0
- package/dist/lib/models/PostReplacement.d.ts +75 -0
- package/dist/lib/models/PostReplacement.js +117 -0
- package/dist/lib/models/PostSet.d.ts +75 -0
- package/dist/lib/models/PostSet.js +117 -0
- package/dist/lib/models/PostVersion.d.ts +58 -0
- package/dist/lib/models/PostVersion.js +93 -0
- package/dist/lib/models/RisingSearchTrend.d.ts +14 -0
- package/dist/lib/models/RisingSearchTrend.js +17 -0
- package/dist/lib/models/SearchTrend.d.ts +14 -0
- package/dist/lib/models/SearchTrend.js +17 -0
- package/dist/lib/models/SearchTrendBlacklist.d.ts +14 -0
- package/dist/lib/models/SearchTrendBlacklist.js +17 -0
- package/dist/lib/models/StaffNote.d.ts +53 -0
- package/dist/lib/models/StaffNote.js +79 -0
- package/dist/lib/models/Tag.d.ts +59 -0
- package/dist/lib/models/Tag.js +91 -0
- package/dist/lib/models/TagAlias.d.ts +51 -0
- package/dist/lib/models/TagAlias.js +77 -0
- package/dist/lib/models/TagCorrection.d.ts +15 -0
- package/dist/lib/models/TagCorrection.js +20 -0
- package/dist/lib/models/TagImplication.d.ts +51 -0
- package/dist/lib/models/TagImplication.js +77 -0
- package/dist/lib/models/TagPreview.d.ts +14 -0
- package/dist/lib/models/TagPreview.js +17 -0
- package/dist/lib/models/TagTypeVersion.d.ts +14 -0
- package/dist/lib/models/TagTypeVersion.js +17 -0
- package/dist/lib/models/Takedown.d.ts +87 -0
- package/dist/lib/models/Takedown.js +137 -0
- package/dist/lib/models/Ticket.d.ts +51 -0
- package/dist/lib/models/Ticket.js +77 -0
- package/dist/lib/models/Upload.d.ts +14 -0
- package/dist/lib/models/Upload.js +17 -0
- package/dist/lib/models/UploadWhitelist.d.ts +37 -0
- package/dist/lib/models/UploadWhitelist.js +55 -0
- package/dist/lib/models/User.d.ts +97 -0
- package/dist/lib/models/User.js +160 -0
- package/dist/lib/models/UserFeedback.d.ts +63 -0
- package/dist/lib/models/UserFeedback.js +97 -0
- package/dist/lib/models/UserNameChangeRequest.d.ts +26 -0
- package/dist/lib/models/UserNameChangeRequest.js +37 -0
- package/dist/lib/models/WikiPage.d.ts +49 -0
- package/dist/lib/models/WikiPage.js +75 -0
- package/dist/lib/models/WikiPageVersion.d.ts +24 -0
- package/dist/lib/models/WikiPageVersion.js +35 -0
- package/dist/lib/models/index.d.ts +56 -0
- package/dist/lib/models/index.js +57 -0
- package/dist/lib/modules/ArtistUrls.d.ts +18 -0
- package/dist/lib/modules/ArtistUrls.js +28 -0
- package/dist/lib/modules/ArtistVersions.d.ts +18 -0
- package/dist/lib/modules/ArtistVersions.js +28 -0
- package/dist/lib/modules/Artists.d.ts +90 -0
- package/dist/lib/modules/Artists.js +151 -0
- package/dist/lib/modules/AvoidPostingVersions.d.ts +18 -0
- package/dist/lib/modules/AvoidPostingVersions.js +28 -0
- package/dist/lib/modules/AvoidPostings.d.ts +112 -0
- package/dist/lib/modules/AvoidPostings.js +181 -0
- package/dist/lib/modules/Bans.d.ts +26 -0
- package/dist/lib/modules/Bans.js +47 -0
- package/dist/lib/modules/Base.d.ts +20 -0
- package/dist/lib/modules/Base.js +39 -0
- package/dist/lib/modules/Blips.d.ts +108 -0
- package/dist/lib/modules/Blips.js +188 -0
- package/dist/lib/modules/BulkUpdateRequests.d.ts +76 -0
- package/dist/lib/modules/BulkUpdateRequests.js +136 -0
- package/dist/lib/modules/CommentVotes.d.ts +30 -0
- package/dist/lib/modules/CommentVotes.js +56 -0
- package/dist/lib/modules/Comments.d.ts +115 -0
- package/dist/lib/modules/Comments.js +195 -0
- package/dist/lib/modules/DMails.d.ts +70 -0
- package/dist/lib/modules/DMails.js +134 -0
- package/dist/lib/modules/DText.d.ts +22 -0
- package/dist/lib/modules/DText.js +32 -0
- package/dist/lib/modules/EditHistories.d.ts +34 -0
- package/dist/lib/modules/EditHistories.js +56 -0
- package/dist/lib/modules/EmailBlacklists.d.ts +45 -0
- package/dist/lib/modules/EmailBlacklists.js +74 -0
- package/dist/lib/modules/Favorites.d.ts +44 -0
- package/dist/lib/modules/Favorites.js +73 -0
- package/dist/lib/modules/ForumPosts.d.ts +110 -0
- package/dist/lib/modules/ForumPosts.js +190 -0
- package/dist/lib/modules/ForumTopics.d.ts +125 -0
- package/dist/lib/modules/ForumTopics.js +237 -0
- package/dist/lib/modules/HelpPages.d.ts +67 -0
- package/dist/lib/modules/HelpPages.js +118 -0
- package/dist/lib/modules/IpBans.d.ts +47 -0
- package/dist/lib/modules/IpBans.js +76 -0
- package/dist/lib/modules/IqdbQueries.d.ts +36 -0
- package/dist/lib/modules/IqdbQueries.js +63 -0
- package/dist/lib/modules/Mascots.d.ts +60 -0
- package/dist/lib/modules/Mascots.js +98 -0
- package/dist/lib/modules/ModActions.d.ts +34 -0
- package/dist/lib/modules/ModActions.js +55 -0
- package/dist/lib/modules/NewsUpdates.d.ts +60 -0
- package/dist/lib/modules/NewsUpdates.js +98 -0
- package/dist/lib/modules/NoteVersions.d.ts +18 -0
- package/dist/lib/modules/NoteVersions.js +28 -0
- package/dist/lib/modules/Notes.d.ts +72 -0
- package/dist/lib/modules/Notes.js +133 -0
- package/dist/lib/modules/PoolVersions.d.ts +18 -0
- package/dist/lib/modules/PoolVersions.js +28 -0
- package/dist/lib/modules/Pools.d.ts +107 -0
- package/dist/lib/modules/Pools.js +197 -0
- package/dist/lib/modules/Popular.d.ts +18 -0
- package/dist/lib/modules/Popular.js +31 -0
- package/dist/lib/modules/PostApprovals.d.ts +42 -0
- package/dist/lib/modules/PostApprovals.js +77 -0
- package/dist/lib/modules/PostDisapprovals.d.ts +37 -0
- package/dist/lib/modules/PostDisapprovals.js +55 -0
- package/dist/lib/modules/PostEvents.d.ts +20 -0
- package/dist/lib/modules/PostEvents.js +30 -0
- package/dist/lib/modules/PostFlags.d.ts +53 -0
- package/dist/lib/modules/PostFlags.js +93 -0
- package/dist/lib/modules/PostReplacements.d.ts +97 -0
- package/dist/lib/modules/PostReplacements.js +167 -0
- package/dist/lib/modules/PostSets.d.ts +119 -0
- package/dist/lib/modules/PostSets.js +211 -0
- package/dist/lib/modules/PostVersions.d.ts +51 -0
- package/dist/lib/modules/PostVersions.js +94 -0
- package/dist/lib/modules/PostVotes.d.ts +28 -0
- package/dist/lib/modules/PostVotes.js +54 -0
- package/dist/lib/modules/Posts.d.ts +193 -0
- package/dist/lib/modules/Posts.js +395 -0
- package/dist/lib/modules/RelatedTags.d.ts +22 -0
- package/dist/lib/modules/RelatedTags.js +29 -0
- package/dist/lib/modules/SearchTrendBlacklists.d.ts +64 -0
- package/dist/lib/modules/SearchTrendBlacklists.js +101 -0
- package/dist/lib/modules/SearchTrends.d.ts +57 -0
- package/dist/lib/modules/SearchTrends.js +92 -0
- package/dist/lib/modules/StaffNotes.d.ts +80 -0
- package/dist/lib/modules/StaffNotes.js +140 -0
- package/dist/lib/modules/TagAliases.d.ts +80 -0
- package/dist/lib/modules/TagAliases.js +140 -0
- package/dist/lib/modules/TagCorrections.d.ts +25 -0
- package/dist/lib/modules/TagCorrections.js +52 -0
- package/dist/lib/modules/TagImplications.d.ts +80 -0
- package/dist/lib/modules/TagImplications.js +140 -0
- package/dist/lib/modules/TagTypeVersions.d.ts +18 -0
- package/dist/lib/modules/TagTypeVersions.js +28 -0
- package/dist/lib/modules/Tags.d.ts +64 -0
- package/dist/lib/modules/Tags.js +116 -0
- package/dist/lib/modules/Takedowns.d.ts +123 -0
- package/dist/lib/modules/Takedowns.js +211 -0
- package/dist/lib/modules/Tickets.d.ts +71 -0
- package/dist/lib/modules/Tickets.js +123 -0
- package/dist/lib/modules/UploadWhitelists.d.ts +71 -0
- package/dist/lib/modules/UploadWhitelists.js +117 -0
- package/dist/lib/modules/Uploads.d.ts +42 -0
- package/dist/lib/modules/Uploads.js +78 -0
- package/dist/lib/modules/UserFeedbacks.d.ts +94 -0
- package/dist/lib/modules/UserFeedbacks.js +165 -0
- package/dist/lib/modules/UserNameChangeRequests.d.ts +59 -0
- package/dist/lib/modules/UserNameChangeRequests.js +99 -0
- package/dist/lib/modules/Users.d.ts +135 -0
- package/dist/lib/modules/Users.js +263 -0
- package/dist/lib/modules/WikiPageVersions.d.ts +26 -0
- package/dist/lib/modules/WikiPageVersions.js +47 -0
- package/dist/lib/modules/WikiPages.d.ts +76 -0
- package/dist/lib/modules/WikiPages.js +137 -0
- package/dist/lib/modules/admin/Users.d.ts +45 -0
- package/dist/lib/modules/admin/Users.js +77 -0
- package/dist/lib/modules/comments/Votes.d.ts +31 -0
- package/dist/lib/modules/comments/Votes.js +51 -0
- package/dist/lib/modules/forum_posts/Votes.d.ts +29 -0
- package/dist/lib/modules/forum_posts/Votes.js +51 -0
- package/dist/lib/modules/index.d.ts +178 -0
- package/dist/lib/modules/index.js +118 -0
- package/dist/lib/modules/posts/Flag.d.ts +16 -0
- package/dist/lib/modules/posts/Flag.js +31 -0
- package/dist/lib/modules/posts/Votes.d.ts +31 -0
- package/dist/lib/modules/posts/Votes.js +51 -0
- package/dist/lib/modules/users/DMails.d.ts +29 -0
- package/dist/lib/modules/users/DMails.js +55 -0
- package/dist/lib/util.d.ts +50 -0
- package/dist/lib/util.js +49 -0
- package/dist/package.json +73 -0
- package/package.json +46 -20
- package/tsconfig.json +54 -0
- package/.mocharc.json +0 -6
- package/.ncurc.json +0 -3
- package/.node-version +0 -1
- package/Features/Artists.md +0 -39
- package/Features/Blips.md +0 -33
- package/Features/E621SearchInconsistencies.md +0 -54
- package/Features/FuturePlans.md +0 -50
- package/Features/Notes.md +0 -34
- package/Features/Pools.md +0 -38
- package/Features/PostFlags.md +0 -31
- package/Features/PostSets.md +0 -36
- package/Features/Posts.md +0 -46
- package/Features/README.md +0 -15
- package/Features/Tags.md +0 -34
- package/Features/Takedowns.md +0 -32
- package/Features/UserFeedback.md +0 -32
- package/Features/Users.md +0 -36
- package/Features/WikiPages.md +0 -36
- package/build/package.json +0 -45
- package/build/src/index.d.ts +0 -68
- package/build/src/index.js +0 -194
- package/build/src/modules/Artists.d.ts +0 -128
- package/build/src/modules/Artists.js +0 -295
- package/build/src/modules/Blips.d.ts +0 -79
- package/build/src/modules/Blips.js +0 -157
- package/build/src/modules/Notes.d.ts +0 -88
- package/build/src/modules/Notes.js +0 -189
- package/build/src/modules/Pools.d.ts +0 -130
- package/build/src/modules/Pools.js +0 -261
- package/build/src/modules/PostFlags.d.ts +0 -55
- package/build/src/modules/PostFlags.js +0 -126
- package/build/src/modules/PostSets.d.ts +0 -102
- package/build/src/modules/PostSets.js +0 -208
- package/build/src/modules/Posts.d.ts +0 -154
- package/build/src/modules/Posts.js +0 -390
- package/build/src/modules/Tags.d.ts +0 -78
- package/build/src/modules/Tags.js +0 -174
- package/build/src/modules/Takedowns.d.ts +0 -81
- package/build/src/modules/Takedowns.js +0 -195
- package/build/src/modules/UserFeedback.d.ts +0 -66
- package/build/src/modules/UserFeedback.js +0 -136
- package/build/src/modules/Users.d.ts +0 -117
- package/build/src/modules/Users.js +0 -261
- package/build/src/modules/WikiPages.d.ts +0 -107
- package/build/src/modules/WikiPages.js +0 -220
- package/build/src/structures/Artist.d.ts +0 -36
- package/build/src/structures/Artist.js +0 -51
- package/build/src/structures/ArtistHistory.d.ts +0 -39
- package/build/src/structures/ArtistHistory.js +0 -50
- package/build/src/structures/AuthenticatedUser.d.ts +0 -109
- package/build/src/structures/AuthenticatedUser.js +0 -128
- package/build/src/structures/Blip.d.ts +0 -66
- package/build/src/structures/Blip.js +0 -85
- package/build/src/structures/Note.d.ts +0 -32
- package/build/src/structures/Note.js +0 -41
- package/build/src/structures/NoteHistory.d.ts +0 -38
- package/build/src/structures/NoteHistory.js +0 -47
- package/build/src/structures/Pool.d.ts +0 -85
- package/build/src/structures/Pool.js +0 -112
- package/build/src/structures/PoolHistory.d.ts +0 -43
- package/build/src/structures/PoolHistory.js +0 -54
- package/build/src/structures/Post.d.ts +0 -157
- package/build/src/structures/Post.js +0 -170
- package/build/src/structures/PostApproval.d.ts +0 -25
- package/build/src/structures/PostApproval.js +0 -33
- package/build/src/structures/PostFlag.d.ts +0 -38
- package/build/src/structures/PostFlag.js +0 -47
- package/build/src/structures/PostHistory.d.ts +0 -52
- package/build/src/structures/PostHistory.js +0 -93
- package/build/src/structures/PostSet.d.ts +0 -71
- package/build/src/structures/PostSet.js +0 -93
- package/build/src/structures/Tag.d.ts +0 -61
- package/build/src/structures/Tag.js +0 -87
- package/build/src/structures/TagHistory.d.ts +0 -28
- package/build/src/structures/TagHistory.js +0 -36
- package/build/src/structures/Takedown.d.ts +0 -49
- package/build/src/structures/Takedown.js +0 -64
- package/build/src/structures/User.d.ts +0 -62
- package/build/src/structures/User.js +0 -80
- package/build/src/structures/WikiPage.d.ts +0 -17
- package/build/src/structures/WikiPage.js +0 -27
- package/build/src/structures/WikiPageHistory.d.ts +0 -38
- package/build/src/structures/WikiPageHistory.js +0 -49
- package/build/src/types/artists.d.ts +0 -82
- package/build/src/types/blips.d.ts +0 -37
- package/build/src/types/index.d.ts +0 -96
- package/build/src/types/notes.d.ts +0 -64
- package/build/src/types/pools.d.ts +0 -62
- package/build/src/types/post_flags.d.ts +0 -36
- package/build/src/types/post_sets.d.ts +0 -33
- package/build/src/types/posts.d.ts +0 -181
- package/build/src/types/tags.d.ts +0 -56
- package/build/src/types/takedowns.d.ts +0 -62
- package/build/src/types/user_feedback.d.ts +0 -27
- package/build/src/types/users.d.ts +0 -277
- package/build/src/types/wiki_pages.d.ts +0 -66
- package/build/src/util/Debug.d.ts +0 -1
- package/build/src/util/Debug.js +0 -16
- package/build/src/util/FormHelper.d.ts +0 -9
- package/build/src/util/FormHelper.js +0 -15
- package/build/src/util/MultipartData.d.ts +0 -7
- package/build/src/util/MultipartData.js +0 -39
- package/build/src/util/RequestHandler.d.ts +0 -38
- package/build/src/util/RequestHandler.js +0 -343
- package/build/src/util/Timer.d.ts +0 -6
- package/build/src/util/Timer.js +0 -74
|
@@ -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,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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
|
package/build/src/util/Timer.js
DELETED
|
@@ -1,74 +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/10b0159/src/Functions/Time.ts#L11-L86
|
|
22
|
-
static ms(time) {
|
|
23
|
-
if (typeof time !== "bigint")
|
|
24
|
-
time = BigInt(Math.floor(time));
|
|
25
|
-
const r = {
|
|
26
|
-
milliseconds: 0n,
|
|
27
|
-
seconds: 0n,
|
|
28
|
-
minutes: 0n,
|
|
29
|
-
hours: 0n,
|
|
30
|
-
days: 0n,
|
|
31
|
-
months: 0n,
|
|
32
|
-
years: 0n
|
|
33
|
-
};
|
|
34
|
-
if (time < 0n)
|
|
35
|
-
throw new TypeError("Negative time provided.");
|
|
36
|
-
if (time === 0n)
|
|
37
|
-
return "0 seconds";
|
|
38
|
-
// Number.EPSILON = https://stackoverflow.com/a/11832950
|
|
39
|
-
r.milliseconds = time % 1000n;
|
|
40
|
-
r.years = time / 31540000000n;
|
|
41
|
-
time -= r.years * 31540000000n;
|
|
42
|
-
r.months = time / 2628000000n;
|
|
43
|
-
time -= r.months * 2628000000n;
|
|
44
|
-
r.days = time / 86400000n;
|
|
45
|
-
time -= r.days * 86400000n;
|
|
46
|
-
r.hours = time / 3600000n;
|
|
47
|
-
time -= r.hours * 3600000n;
|
|
48
|
-
r.minutes = time / 60000n;
|
|
49
|
-
time -= r.minutes * 60000n;
|
|
50
|
-
r.seconds = time / 1000n;
|
|
51
|
-
time -= r.seconds * 1000n;
|
|
52
|
-
const total = (Object.values(r)).reduce((a, b) => a + b, 0n);
|
|
53
|
-
if (r.milliseconds === total)
|
|
54
|
-
return `${r.milliseconds}ms`;
|
|
55
|
-
const str = [];
|
|
56
|
-
if (r.seconds > 0)
|
|
57
|
-
str.push(`${r.seconds} second${r.seconds === 1n ? "" : "s"}`);
|
|
58
|
-
if (r.minutes > 0)
|
|
59
|
-
str.push(`${r.minutes} minute${r.minutes === 1n ? "" : "s"}`);
|
|
60
|
-
if (r.hours > 0)
|
|
61
|
-
str.push(`${r.hours} hour${r.hours === 1n ? "" : "s"}`);
|
|
62
|
-
if (r.days > 0)
|
|
63
|
-
str.push(`${r.days} day${r.days === 1n ? "" : "s"}`);
|
|
64
|
-
if (r.months > 0)
|
|
65
|
-
str.push(`${r.months} month${r.months === 1n ? "" : "s"}`);
|
|
66
|
-
if (r.years > 0)
|
|
67
|
-
str.push(`${r.years} year${r.years === 1n ? "" : "s"}`);
|
|
68
|
-
if (str.length > 1)
|
|
69
|
-
str[0] = `and ${str[0]}`;
|
|
70
|
-
return str.reverse().join(" ");
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
exports.default = Timer;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9UaW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNFQUFzRTtBQUN0RSxNQUFxQixLQUFLO0lBQ3pCLE1BQU0sQ0FBQyxHQUFHLEtBQUssT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDOUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsSUFBd0IsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUM5RCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2QyxRQUFRLElBQUksRUFBRTtZQUNiLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RGLDRFQUE0RTtZQUM1RSxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1NBQ2xDO0lBQ0YsQ0FBQztJQUVELDhFQUE4RTtJQUN0RSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQXFCO1FBQ3RDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtZQUFFLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxHQUFHO1lBQ1QsWUFBWSxFQUFFLEVBQUU7WUFDaEIsT0FBTyxFQUFPLEVBQUU7WUFDaEIsT0FBTyxFQUFPLEVBQUU7WUFDaEIsS0FBSyxFQUFTLEVBQUU7WUFDaEIsSUFBSSxFQUFVLEVBQUU7WUFDaEIsTUFBTSxFQUFRLEVBQUU7WUFDaEIsS0FBSyxFQUFTLEVBQUU7U0FDaEIsQ0FBQztRQUNGLElBQUksSUFBSSxHQUFHLEVBQUU7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDOUQsSUFBSSxJQUFJLEtBQUssRUFBRTtZQUFFLE9BQU8sV0FBVyxDQUFDO1FBQ3BDLHdEQUF3RDtRQUN4RCxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUMvQixDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxXQUFXLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUMzQixDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxNQUFNLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFMUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsQ0FBQyxZQUFZLEtBQUssS0FBSztZQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUM7UUFFM0QsTUFBTSxHQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUM7WUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sU0FBUyxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUV6RSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTdDLE9BQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0Q7QUFoRUQsd0JBZ0VDIn0=
|