e621 3.1.0 → 3.2.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/README.md +68 -0
- package/dist/browser/e621.d.ts +2 -0
- package/dist/browser/e621.js +19346 -0
- package/dist/browser/e621.js.map +7 -0
- package/dist/lib/Debug.browser.d.ts +6 -0
- package/dist/lib/Debug.browser.js +8 -0
- package/dist/lib/client.d.ts +68 -0
- package/dist/lib/client.js +72 -0
- package/dist/lib/generated/schemas.d.ts +7 -2
- package/dist/lib/generated/schemas.js +17 -10
- package/dist/lib/generated/types.d.ts +53 -57
- package/dist/lib/index.d.ts +6 -46
- package/dist/lib/index.js +6 -62
- package/dist/lib/models/Appeal.d.ts +6 -9
- package/dist/lib/models/Appeal.js +7 -10
- package/dist/lib/models/Artist.d.ts +6 -9
- package/dist/lib/models/Artist.js +7 -10
- package/dist/lib/models/AvoidPosting.d.ts +8 -12
- package/dist/lib/models/AvoidPosting.js +9 -13
- package/dist/lib/models/Base.browser.d.ts +15 -0
- package/dist/lib/models/Base.browser.js +22 -0
- package/dist/lib/models/Base.d.ts +4 -3
- package/dist/lib/models/Base.js +1 -1
- package/dist/lib/models/BasicPost.d.ts +2 -1
- package/dist/lib/models/BasicPost.js +1 -1
- package/dist/lib/models/Blip.d.ts +10 -15
- package/dist/lib/models/Blip.js +11 -16
- package/dist/lib/models/BulkUpdateRequest.d.ts +6 -9
- package/dist/lib/models/BulkUpdateRequest.js +7 -10
- package/dist/lib/models/Comment.d.ts +14 -21
- package/dist/lib/models/Comment.js +15 -22
- package/dist/lib/models/CommentVote.d.ts +6 -9
- package/dist/lib/models/CommentVote.js +7 -10
- package/dist/lib/models/CurrentUser.d.ts +6 -9
- package/dist/lib/models/CurrentUser.js +7 -10
- package/dist/lib/models/DMail.d.ts +8 -12
- package/dist/lib/models/DMail.js +9 -13
- package/dist/lib/models/EmailBlacklist.d.ts +2 -3
- package/dist/lib/models/EmailBlacklist.js +3 -4
- package/dist/lib/models/ExtendedPost.d.ts +2 -1
- package/dist/lib/models/ExtendedPost.js +1 -1
- package/dist/lib/models/ForumPost.d.ts +16 -24
- package/dist/lib/models/ForumPost.js +17 -25
- package/dist/lib/models/ForumPostVote.d.ts +2 -3
- package/dist/lib/models/ForumPostVote.js +3 -4
- package/dist/lib/models/ForumTopic.d.ts +12 -18
- package/dist/lib/models/ForumTopic.js +13 -19
- package/dist/lib/models/HelpPage.d.ts +4 -6
- package/dist/lib/models/HelpPage.js +5 -7
- package/dist/lib/models/IpBan.d.ts +2 -3
- package/dist/lib/models/IpBan.js +3 -4
- package/dist/lib/models/Mascot.d.ts +4 -6
- package/dist/lib/models/Mascot.js +5 -7
- package/dist/lib/models/NewsUpdate.d.ts +4 -6
- package/dist/lib/models/NewsUpdate.js +5 -7
- package/dist/lib/models/Note.d.ts +6 -9
- package/dist/lib/models/Note.js +7 -10
- package/dist/lib/models/NoteVersion.d.ts +2 -3
- package/dist/lib/models/NoteVersion.js +3 -4
- package/dist/lib/models/Pool.d.ts +10 -15
- package/dist/lib/models/Pool.js +11 -16
- package/dist/lib/models/PoolVersion.d.ts +2 -3
- package/dist/lib/models/PoolVersion.js +3 -4
- package/dist/lib/models/Post.d.ts +2 -1
- package/dist/lib/models/Post.js +1 -1
- package/dist/lib/models/PostApproval.d.ts +2 -3
- package/dist/lib/models/PostApproval.js +3 -4
- package/dist/lib/models/PostFlag.d.ts +4 -6
- package/dist/lib/models/PostFlag.js +5 -7
- package/dist/lib/models/PostReplacement.d.ts +10 -15
- package/dist/lib/models/PostReplacement.js +11 -16
- package/dist/lib/models/PostSet.d.ts +10 -15
- package/dist/lib/models/PostSet.js +11 -16
- package/dist/lib/models/PostVersion.d.ts +8 -12
- package/dist/lib/models/PostVersion.js +9 -13
- package/dist/lib/models/PostVote.d.ts +6 -9
- package/dist/lib/models/PostVote.js +7 -10
- package/dist/lib/models/SearchTrendBlacklist.d.ts +4 -6
- package/dist/lib/models/SearchTrendBlacklist.js +5 -7
- package/dist/lib/models/StaffFile.d.ts +5 -7
- package/dist/lib/models/StaffFile.js +7 -9
- package/dist/lib/models/StaffNote.d.ts +6 -9
- package/dist/lib/models/StaffNote.js +7 -10
- package/dist/lib/models/StaffWiki.d.ts +9 -13
- package/dist/lib/models/StaffWiki.js +13 -17
- package/dist/lib/models/Tag.d.ts +8 -12
- package/dist/lib/models/Tag.js +9 -13
- package/dist/lib/models/TagAlias.d.ts +6 -9
- package/dist/lib/models/TagAlias.js +7 -10
- package/dist/lib/models/TagImplication.d.ts +6 -9
- package/dist/lib/models/TagImplication.js +7 -10
- package/dist/lib/models/Takedown.d.ts +12 -18
- package/dist/lib/models/Takedown.js +13 -19
- package/dist/lib/models/ThumbnailPost.d.ts +2 -1
- package/dist/lib/models/ThumbnailPost.js +1 -1
- package/dist/lib/models/Ticket.d.ts +6 -9
- package/dist/lib/models/Ticket.js +7 -10
- package/dist/lib/models/UploadWhitelist.d.ts +4 -6
- package/dist/lib/models/UploadWhitelist.js +5 -7
- package/dist/lib/models/User.d.ts +17 -25
- package/dist/lib/models/User.js +19 -27
- package/dist/lib/models/UserFeedback.d.ts +8 -12
- package/dist/lib/models/UserFeedback.js +9 -13
- package/dist/lib/models/UserNameChangeRequest.d.ts +2 -3
- package/dist/lib/models/UserNameChangeRequest.js +3 -4
- package/dist/lib/models/WikiPage.d.ts +6 -9
- package/dist/lib/models/WikiPage.js +7 -10
- package/dist/lib/models/WikiPageVersion.d.ts +2 -3
- package/dist/lib/models/WikiPageVersion.js +3 -4
- package/dist/lib/models/posts/Actions.d.ts +63 -89
- package/dist/lib/models/posts/Actions.js +53 -79
- package/dist/lib/modules/Appeals.d.ts +11 -15
- package/dist/lib/modules/Appeals.js +12 -16
- package/dist/lib/modules/ArtistUrls.d.ts +3 -3
- package/dist/lib/modules/ArtistUrls.js +4 -4
- package/dist/lib/modules/ArtistVersions.d.ts +3 -3
- package/dist/lib/modules/ArtistVersions.js +4 -4
- package/dist/lib/modules/Artists.d.ts +13 -18
- package/dist/lib/modules/Artists.js +14 -19
- package/dist/lib/modules/AvoidPostingVersions.d.ts +3 -3
- package/dist/lib/modules/AvoidPostingVersions.js +4 -4
- package/dist/lib/modules/AvoidPostings.d.ts +15 -21
- package/dist/lib/modules/AvoidPostings.js +16 -22
- package/dist/lib/modules/Bans.d.ts +5 -6
- package/dist/lib/modules/Bans.js +6 -7
- package/dist/lib/modules/Base.d.ts +16 -4
- package/dist/lib/modules/Base.js +18 -4
- package/dist/lib/modules/Blips.d.ts +17 -24
- package/dist/lib/modules/Blips.js +18 -25
- package/dist/lib/modules/BulkUpdateRequests.d.ts +13 -18
- package/dist/lib/modules/BulkUpdateRequests.js +14 -19
- package/dist/lib/modules/CommentVotes.d.ts +11 -15
- package/dist/lib/modules/CommentVotes.js +12 -16
- package/dist/lib/modules/Comments.d.ts +17 -24
- package/dist/lib/modules/Comments.js +18 -25
- package/dist/lib/modules/DMails.d.ts +13 -18
- package/dist/lib/modules/DMails.js +14 -19
- package/dist/lib/modules/DText.d.ts +3 -3
- package/dist/lib/modules/DText.js +4 -4
- package/dist/lib/modules/DbExports.d.ts +3 -3
- package/dist/lib/modules/DbExports.js +4 -4
- package/dist/lib/modules/EditHistories.d.ts +5 -6
- package/dist/lib/modules/EditHistories.js +6 -7
- package/dist/lib/modules/EmailBlacklists.d.ts +7 -9
- package/dist/lib/modules/EmailBlacklists.js +8 -10
- package/dist/lib/modules/Favorites.d.ts +15 -12
- package/dist/lib/modules/Favorites.js +19 -13
- package/dist/lib/modules/ForumPostVotes.d.ts +7 -9
- package/dist/lib/modules/ForumPostVotes.js +8 -10
- package/dist/lib/modules/ForumPosts.d.ts +17 -24
- package/dist/lib/modules/ForumPosts.js +18 -25
- package/dist/lib/modules/ForumTopics.d.ts +21 -30
- package/dist/lib/modules/ForumTopics.js +22 -31
- package/dist/lib/modules/Health.d.ts +3 -3
- package/dist/lib/modules/Health.js +4 -4
- package/dist/lib/modules/HelpPages.d.ts +13 -18
- package/dist/lib/modules/HelpPages.js +14 -19
- package/dist/lib/modules/IpBans.d.ts +7 -9
- package/dist/lib/modules/IpBans.js +8 -10
- package/dist/lib/modules/IqdbQueries.d.ts +16 -12
- package/dist/lib/modules/IqdbQueries.js +17 -10
- package/dist/lib/modules/Mascots.d.ts +9 -12
- package/dist/lib/modules/Mascots.js +10 -13
- package/dist/lib/modules/ModActions.d.ts +5 -6
- package/dist/lib/modules/ModActions.js +6 -7
- package/dist/lib/modules/NewsUpdates.d.ts +9 -12
- package/dist/lib/modules/NewsUpdates.js +10 -13
- package/dist/lib/modules/NoteVersions.d.ts +3 -3
- package/dist/lib/modules/NoteVersions.js +4 -4
- package/dist/lib/modules/Notes.d.ts +13 -18
- package/dist/lib/modules/Notes.js +14 -19
- package/dist/lib/modules/PoolVersions.d.ts +3 -3
- package/dist/lib/modules/PoolVersions.js +4 -4
- package/dist/lib/modules/Pools.d.ts +19 -27
- package/dist/lib/modules/Pools.js +20 -28
- package/dist/lib/modules/Popular.d.ts +11 -6
- package/dist/lib/modules/Popular.js +15 -7
- package/dist/lib/modules/PostApprovals.d.ts +7 -9
- package/dist/lib/modules/PostApprovals.js +8 -10
- package/dist/lib/modules/PostDisapprovals.d.ts +5 -6
- package/dist/lib/modules/PostDisapprovals.js +6 -7
- package/dist/lib/modules/PostEvents.d.ts +3 -3
- package/dist/lib/modules/PostEvents.js +4 -4
- package/dist/lib/modules/PostFlags.d.ts +11 -15
- package/dist/lib/modules/PostFlags.js +12 -16
- package/dist/lib/modules/PostReplacements.d.ts +15 -21
- package/dist/lib/modules/PostReplacements.js +16 -22
- package/dist/lib/modules/PostSets.d.ts +19 -27
- package/dist/lib/modules/PostSets.js +20 -28
- package/dist/lib/modules/PostVersions.d.ts +9 -12
- package/dist/lib/modules/PostVersions.js +10 -13
- package/dist/lib/modules/PostVotes.d.ts +11 -15
- package/dist/lib/modules/PostVotes.js +12 -16
- package/dist/lib/modules/Posts.d.ts +70 -81
- package/dist/lib/modules/Posts.js +89 -85
- package/dist/lib/modules/RelatedTags.d.ts +3 -3
- package/dist/lib/modules/RelatedTags.js +4 -4
- package/dist/lib/modules/SearchTrendBlacklists.d.ts +7 -9
- package/dist/lib/modules/SearchTrendBlacklists.js +8 -10
- package/dist/lib/modules/SearchTrends.d.ts +11 -15
- package/dist/lib/modules/SearchTrends.js +12 -16
- package/dist/lib/modules/{staff/AutomodDMails.d.ts → StaffAutomodDMails.d.ts} +15 -18
- package/dist/lib/modules/{staff/AutomodDMails.js → StaffAutomodDMails.js} +14 -17
- package/dist/lib/modules/{staff/DMails.d.ts → StaffDMails.d.ts} +7 -8
- package/dist/lib/modules/StaffDMails.js +54 -0
- package/dist/lib/modules/StaffExceptionLogs.d.ts +33 -0
- package/dist/lib/modules/StaffExceptionLogs.js +54 -0
- package/dist/lib/modules/{staff/Files.d.ts → StaffFiles.d.ts} +15 -19
- package/dist/lib/modules/{staff/Files.js → StaffFiles.js} +16 -20
- package/dist/lib/modules/StaffNotes.d.ts +13 -18
- package/dist/lib/modules/StaffNotes.js +14 -19
- package/dist/lib/modules/{staff/UserCleanups.d.ts → StaffUserCleanups.d.ts} +12 -16
- package/dist/lib/modules/{staff/UserCleanups.js → StaffUserCleanups.js} +15 -19
- package/dist/lib/modules/{staff/Users.d.ts → StaffUsers.d.ts} +10 -12
- package/dist/lib/modules/{staff/Users.js → StaffUsers.js} +11 -13
- package/dist/lib/modules/StaffVoteTrends.d.ts +26 -0
- package/dist/lib/modules/StaffVoteTrends.js +39 -0
- package/dist/lib/modules/{staff/WikiVersions.d.ts → StaffWikiVersions.d.ts} +9 -10
- package/dist/lib/modules/StaffWikiVersions.js +54 -0
- package/dist/lib/modules/{staff/Wikis.d.ts → StaffWikis.d.ts} +19 -25
- package/dist/lib/modules/{staff/Wikis.js → StaffWikis.js} +20 -26
- package/dist/lib/modules/TagAliases.d.ts +13 -18
- package/dist/lib/modules/TagAliases.js +14 -19
- package/dist/lib/modules/TagCorrections.d.ts +5 -6
- package/dist/lib/modules/TagCorrections.js +6 -7
- package/dist/lib/modules/TagImplications.d.ts +13 -18
- package/dist/lib/modules/TagImplications.js +14 -19
- package/dist/lib/modules/TagTypeVersions.d.ts +3 -3
- package/dist/lib/modules/TagTypeVersions.js +4 -4
- package/dist/lib/modules/Tags.d.ts +11 -15
- package/dist/lib/modules/Tags.js +12 -16
- package/dist/lib/modules/Takedowns.d.ts +19 -27
- package/dist/lib/modules/Takedowns.js +20 -28
- package/dist/lib/modules/Tickets.d.ts +11 -15
- package/dist/lib/modules/Tickets.js +12 -16
- package/dist/lib/modules/UploadWhitelists.d.ts +11 -15
- package/dist/lib/modules/UploadWhitelists.js +12 -16
- package/dist/lib/modules/Uploads.d.ts +10 -12
- package/dist/lib/modules/Uploads.js +8 -10
- package/dist/lib/modules/UserFeedbacks.d.ts +15 -21
- package/dist/lib/modules/UserFeedbacks.js +16 -22
- package/dist/lib/modules/UserNameChangeRequests.d.ts +9 -12
- package/dist/lib/modules/UserNameChangeRequests.js +10 -13
- package/dist/lib/modules/Users.d.ts +27 -39
- package/dist/lib/modules/Users.js +28 -40
- package/dist/lib/modules/WikiPageVersions.d.ts +5 -6
- package/dist/lib/modules/WikiPageVersions.js +6 -7
- package/dist/lib/modules/WikiPages.d.ts +13 -18
- package/dist/lib/modules/WikiPages.js +14 -19
- package/dist/lib/modules/index.d.ts +35 -36
- package/dist/lib/modules/index.js +81 -80
- package/dist/lib/modules/posts/Format.d.ts +15 -5
- package/dist/lib/modules/posts/Format.js +1 -1
- package/dist/lib/standalone.d.ts +26 -0
- package/dist/lib/standalone.js +26 -0
- package/dist/lib/util.js +4 -10
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.js +3 -0
- package/package.json +38 -8
- package/tsconfig.json +1 -1
- package/dist/lib/generated/source.json +0 -22669
- package/dist/lib/modules/staff/DMails.js +0 -55
- package/dist/lib/modules/staff/ExceptionLogs.d.ts +0 -34
- package/dist/lib/modules/staff/ExceptionLogs.js +0 -55
- package/dist/lib/modules/staff/VoteTrends.d.ts +0 -26
- package/dist/lib/modules/staff/VoteTrends.js +0 -39
- package/dist/lib/modules/staff/WikiVersions.js +0 -55
- package/dist/package.json +0 -73
package/README.md
CHANGED
|
@@ -36,3 +36,71 @@ const e621 = new E621({
|
|
|
36
36
|
// all of the available modules stem from this main class,
|
|
37
37
|
// e.g. use e621.posts.METHOD(), e621.users.METHOD()
|
|
38
38
|
```
|
|
39
|
+
|
|
40
|
+
### Default Post Format
|
|
41
|
+
|
|
42
|
+
Post-returning methods (`posts.get()`, `posts.search()`, `favorites.search()`, `popular.get()`, `iqdbQueries.get()`/`.post()`, and convenience methods on returned post models like `post.update()`) accept per-call `v2`/`mode` options and default to the legacy format when omitted. Set `defaultPostFormat` once to change that default everywhere instead of repeating the same options on every call:
|
|
43
|
+
```typescript
|
|
44
|
+
const e621 = new E621({
|
|
45
|
+
defaultPostFormat: { v2: true, mode: "extended" }
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const post = await e621.posts.get(123); // ExtendedPost, typed accurately - no cast needed
|
|
49
|
+
await post?.update({ tags: "foo" }); // also resolves to ExtendedPost
|
|
50
|
+
|
|
51
|
+
// a per-call option still overrides the default for that one call
|
|
52
|
+
const legacy = await e621.posts.get(123, { v2: false });
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Browser Usage
|
|
56
|
+
|
|
57
|
+
A pre-bundled, browser-only build (no Node built-ins) is published at `e621/browser`, for use with a plain `<script type="module">` or a CDN like jsDelivr/unpkg:
|
|
58
|
+
```html
|
|
59
|
+
<script type="module">
|
|
60
|
+
import E621 from "https://cdn.jsdelivr.net/npm/e621/dist/browser/e621.js";
|
|
61
|
+
const e621 = new E621();
|
|
62
|
+
</script>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
If you're importing `e621` through your own bundler (webpack/esbuild/rollup) instead, no special import is needed — resolving `node:util` and the optional `debug`/`persistent-debug` dependencies to no-op browser stubs is handled automatically via `package.json`'s `browser` field.
|
|
66
|
+
|
|
67
|
+
`import ... from "e621/browser"` is fully typed too — `e621/browser`'s `types` condition points at declarations re-exporting the same surface as the main entrypoint.
|
|
68
|
+
|
|
69
|
+
## Tree-Shakable / Standalone Modules
|
|
70
|
+
|
|
71
|
+
`new E621()` wires up every module (`posts`, `users`, `pools`, etc.) at construction time, so bundling it pulls in the whole library even if you only use a couple of methods. This is unavoidable for `new E621()` itself — bundlers tree-shake based on the static import graph, not on which properties you happen to access at runtime, so there's no way for a bundler to know only `.posts` will ever be touched (the same reason e.g. lodash requires `import debounce from "lodash/debounce"` instead of `import _ from "lodash"` for tree-shaking).
|
|
72
|
+
|
|
73
|
+
If bundle size matters more than convenience (e.g. embedding into a userscript), import only the specific modules you need from `e621/modules/*` and wire them up yourself with `e621/standalone`:
|
|
74
|
+
```typescript
|
|
75
|
+
import Posts from "e621/modules/Posts";
|
|
76
|
+
import Favorites from "e621/modules/Favorites";
|
|
77
|
+
import { createE621Client, createStandalone } from "e621/standalone";
|
|
78
|
+
|
|
79
|
+
// same Options as `new E621()`, handles auth headers/user agent/etc. for you
|
|
80
|
+
const client = createE621Client({ authUser: "", authKey: "" });
|
|
81
|
+
|
|
82
|
+
// only the modules listed here (and their own dependencies) end up in your bundle;
|
|
83
|
+
// property names are each module's own `moduleKey` (matching `new E621()`'s naming, e.g. `posts`, `favorites`)
|
|
84
|
+
const e621 = createStandalone([Posts, Favorites], client);
|
|
85
|
+
|
|
86
|
+
const post = await e621.posts.random();
|
|
87
|
+
await post.favorite(); // works — `favorites` was included, so the cross-module call resolves
|
|
88
|
+
```
|
|
89
|
+
Convenience methods on returned models that call back into *other* modules (e.g. `post.favorite()`, which needs `favorites`) only work if you included that module in `createStandalone`'s array — otherwise they throw. Methods on the modules you did include work exactly as normal.
|
|
90
|
+
|
|
91
|
+
## Testing
|
|
92
|
+
|
|
93
|
+
Tests live under `test/` and run on [Node's built-in test runner](https://nodejs.org/api/test.html) (no extra framework). Playwright's browser needs a one-time install; everything else, including the build tests import from, is handled by `npm test` itself:
|
|
94
|
+
```bash
|
|
95
|
+
npx playwright install --with-deps chromium # one-time
|
|
96
|
+
npm test
|
|
97
|
+
```
|
|
98
|
+
- `test/treeshaking.test.ts` - bundles a standalone client with esbuild and asserts unrelated modules are excluded and the result is meaningfully smaller than `new E621()`.
|
|
99
|
+
- `test/standalone.test.ts` / `test/client.test.ts` - verify `createE621Client`/`createStandalone` wiring and the full `E621` client's module surface (no network calls).
|
|
100
|
+
- `test/browser.test.ts` - loads the browser bundle in a real headless Chromium (via [Playwright](https://playwright.dev)) and checks it works with no Node built-ins.
|
|
101
|
+
- `test/openapi.test.ts` - scans `lib/` for every `@OperationID(...)`/`@Schema(...)` and asserts the value actually exists in the OpenAPI spec (these aren't validated at runtime anymore - see the note in `lib/util.ts` - so this plus the build-time check in `scripts/replace-openapi.ts` are what catch a typo'd one).
|
|
102
|
+
- `test/defaultPostFormat.test.ts` - mocks `fetch` to verify `defaultPostFormat` actually reaches the outgoing request's query params, that the returned model matches, that a per-call option overrides it, and that it's picked up by model convenience methods too.
|
|
103
|
+
|
|
104
|
+
CI (`.github/workflows/test.yml`) runs the same on every push/PR, and gates releases (`publish.yml`) on it passing.
|
|
105
|
+
|
|
106
|
+
For interactive/manual browser testing (including a real network call against e621.net), see `scripts/browser-test.sh`.
|