e621 3.2.1 → 3.3.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 (92) hide show
  1. package/dist/browser/e621.js +4512 -2321
  2. package/dist/browser/e621.js.map +4 -4
  3. package/dist/lib/client.d.ts +7 -0
  4. package/dist/lib/client.js +9 -2
  5. package/dist/lib/generated/schemas.d.ts +2375 -1553
  6. package/dist/lib/generated/schemas.js +3267 -2183
  7. package/dist/lib/generated/sdk.d.ts +191 -3
  8. package/dist/lib/generated/sdk.js +373 -10
  9. package/dist/lib/generated/types.d.ts +1824 -623
  10. package/dist/lib/models/APIKey.d.ts +14 -0
  11. package/dist/lib/models/{ApiKey.js → APIKey.js} +8 -8
  12. package/dist/lib/models/Artist.d.ts +2 -2
  13. package/dist/lib/models/ArtistURL.d.ts +14 -0
  14. package/dist/lib/models/{ArtistUrl.js → ArtistURL.js} +8 -8
  15. package/dist/lib/models/{DbExport.d.ts → DBExport.d.ts} +1 -1
  16. package/dist/lib/models/{DbExport.js → DBExport.js} +1 -1
  17. package/dist/lib/models/{IpBan.d.ts → IPBan.d.ts} +6 -6
  18. package/dist/lib/models/{IpBan.js → IPBan.js} +9 -9
  19. package/dist/lib/models/IQDBPost.d.ts +14 -0
  20. package/dist/lib/models/{IqdbPost.js → IQDBPost.js} +8 -8
  21. package/dist/lib/models/SearchTrendHourly.d.ts +14 -0
  22. package/dist/lib/models/SearchTrendHourly.js +17 -0
  23. package/dist/lib/models/User.d.ts +4 -4
  24. package/dist/lib/models/User.js +6 -6
  25. package/dist/lib/models/UserAlt.d.ts +14 -0
  26. package/dist/lib/models/UserAlt.js +17 -0
  27. package/dist/lib/models/index.d.ts +7 -5
  28. package/dist/lib/models/index.js +8 -6
  29. package/dist/lib/modules/Appeals.js +1 -1
  30. package/dist/lib/modules/ArtistUrls.d.ts +2 -2
  31. package/dist/lib/modules/ArtistUrls.js +2 -2
  32. package/dist/lib/modules/Comments.d.ts +11 -1
  33. package/dist/lib/modules/Comments.js +21 -3
  34. package/dist/lib/modules/DbExports.d.ts +1 -1
  35. package/dist/lib/modules/DbExports.js +1 -1
  36. package/dist/lib/modules/DoorkeeperOpenidConnectDiscovery.d.ts +40 -0
  37. package/dist/lib/modules/DoorkeeperOpenidConnectDiscovery.js +56 -0
  38. package/dist/lib/modules/DoorkeeperOpenidConnectUserinfo.d.ts +26 -0
  39. package/dist/lib/modules/DoorkeeperOpenidConnectUserinfo.js +35 -0
  40. package/dist/lib/modules/DoorkeeperTokenInfo.d.ts +24 -0
  41. package/dist/lib/modules/DoorkeeperTokenInfo.js +33 -0
  42. package/dist/lib/modules/DoorkeeperTokens.d.ts +65 -0
  43. package/dist/lib/modules/DoorkeeperTokens.js +82 -0
  44. package/dist/lib/modules/IpBans.d.ts +3 -3
  45. package/dist/lib/modules/IpBans.js +3 -3
  46. package/dist/lib/modules/IqdbQueries.js +4 -4
  47. package/dist/lib/modules/PostReplacements.d.ts +11 -0
  48. package/dist/lib/modules/PostReplacements.js +25 -2
  49. package/dist/lib/modules/PostSets.d.ts +9 -0
  50. package/dist/lib/modules/PostSets.js +22 -2
  51. package/dist/lib/modules/Posts.d.ts +12 -2
  52. package/dist/lib/modules/Posts.js +20 -2
  53. package/dist/lib/modules/RailsHealth.d.ts +17 -0
  54. package/dist/lib/modules/RailsHealth.js +26 -0
  55. package/dist/lib/modules/SearchTrendBlacklists.d.ts +15 -1
  56. package/dist/lib/modules/SearchTrendBlacklists.js +25 -2
  57. package/dist/lib/modules/SearchTrendHourlies.d.ts +22 -0
  58. package/dist/lib/modules/SearchTrendHourlies.js +32 -0
  59. package/dist/lib/modules/SearchTrends.d.ts +11 -1
  60. package/dist/lib/modules/SearchTrends.js +20 -2
  61. package/dist/lib/modules/Sessions.d.ts +46 -0
  62. package/dist/lib/modules/Sessions.js +69 -0
  63. package/dist/lib/modules/StaffIpAddrs.d.ts +41 -0
  64. package/dist/lib/modules/StaffIpAddrs.js +53 -0
  65. package/dist/lib/modules/StaffReowner.d.ts +19 -0
  66. package/dist/lib/modules/StaffReowner.js +29 -0
  67. package/dist/lib/modules/StaffStuckDnp.d.ts +14 -0
  68. package/dist/lib/modules/StaffStuckDnp.js +29 -0
  69. package/dist/lib/modules/StaffUserAlts.d.ts +17 -0
  70. package/dist/lib/modules/StaffUserAlts.js +32 -0
  71. package/dist/lib/modules/StaffUsers.d.ts +26 -6
  72. package/dist/lib/modules/StaffUsers.js +51 -8
  73. package/dist/lib/modules/StaffWikiRefs.d.ts +43 -0
  74. package/dist/lib/modules/StaffWikiRefs.js +77 -0
  75. package/dist/lib/modules/StaffWikis.d.ts +9 -0
  76. package/dist/lib/modules/StaffWikis.js +23 -2
  77. package/dist/lib/modules/Stats.d.ts +17 -0
  78. package/dist/lib/modules/Stats.js +26 -0
  79. package/dist/lib/modules/UserReverts.d.ts +16 -0
  80. package/dist/lib/modules/UserReverts.js +31 -0
  81. package/dist/lib/modules/Users.d.ts +39 -2
  82. package/dist/lib/modules/Users.js +69 -5
  83. package/dist/lib/modules/index.d.ts +42 -0
  84. package/dist/lib/modules/index.js +29 -1
  85. package/dist/lib/util.d.ts +30 -3
  86. package/dist/lib/util.js +1 -1
  87. package/dist/lib/version.d.ts +1 -1
  88. package/dist/lib/version.js +1 -1
  89. package/package.json +6 -6
  90. package/dist/lib/models/ApiKey.d.ts +0 -14
  91. package/dist/lib/models/ArtistUrl.d.ts +0 -14
  92. package/dist/lib/models/IqdbPost.d.ts +0 -14
@@ -41,6 +41,12 @@ export interface Options<PF extends PostFormatOptions = NoV2Options> {
41
41
  * @defaultWithAuthentication E621/\{version\} (+https://github.com/DonovanDMC/E621; \{authUser\})
42
42
  */
43
43
  userAgent?: string;
44
+ /**
45
+ * Whether to send the user agent in the `_client` query parameter instead of the User-Agent header.
46
+ * This is useful in browsers, where setting the User-Agent header is not allowed.
47
+ * @default false in Node.js, true in browsers
48
+ */
49
+ userAgentInQuery?: boolean;
44
50
  }
45
51
  /** @category Main */
46
52
  export interface InstanceOptions {
@@ -50,6 +56,7 @@ export interface InstanceOptions {
50
56
  requestTimeout: number;
51
57
  statusCheckURL: string;
52
58
  userAgent: string;
59
+ userAgentInQuery: boolean;
53
60
  }
54
61
  /** @category Main */
55
62
  export interface E621ClientResult {
@@ -19,11 +19,12 @@ export function createE621Client(options) {
19
19
  requestTimeout: options?.requestTimeout ?? 30,
20
20
  statusCheckURL: options?.statusCheckURL ?? "https://status.e621.church/json",
21
21
  userAgent: options?.userAgent ?? `E621/${VERSION} (https://github.com/DonovanDMC/E621${options?.authUser ? `; "${options.authUser}"` : ""})`,
22
+ userAgentInQuery: options?.userAgentInQuery ?? "window" in globalThis,
22
23
  };
23
24
  let config;
24
25
  const commonConfig = {
25
26
  baseUrl: resolved.baseURL,
26
- headers: {
27
+ headers: resolved.userAgentInQuery ? undefined : {
27
28
  "User-Agent": resolved.userAgent,
28
29
  },
29
30
  fetch: async (input, init) => {
@@ -47,6 +48,12 @@ export function createE621Client(options) {
47
48
  init.headers = headers;
48
49
  }
49
50
  }
51
+ if (resolved.userAgentInQuery && input instanceof Request) {
52
+ const requestURL = new URL(input.url);
53
+ requestURL.searchParams.set("_client", resolved.userAgent);
54
+ input = new Request(requestURL, input);
55
+ url = requestURL.toString();
56
+ }
50
57
  Debug(`request:${method}`, `-> ${url}`);
51
58
  const res = await fetch(input, init);
52
59
  Debug(`response:${method}`, `<- ${url} ${res.status} ${res.statusText}`);
@@ -69,4 +76,4 @@ export function createE621Client(options) {
69
76
  }
70
77
  return { client: createClient(config), options: resolved };
71
78
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBZ0V2Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBbUQsT0FBcUI7SUFDcEcsTUFBTSxRQUFRLEdBQW9CO1FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUk7UUFDakMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSTtRQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxrQkFBa0I7UUFDL0MsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRTtRQUM3QyxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsSUFBSSxpQ0FBaUM7UUFDNUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksUUFBUSxPQUFPLHVDQUF1QyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO0tBQy9JLENBQUM7SUFDRixJQUFJLE1BQWMsQ0FBQztJQUNuQixNQUFNLFlBQVksR0FBZ0Q7UUFDOUQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1FBQ3pCLE9BQU8sRUFBRTtZQUNMLFlBQVksRUFBRSxRQUFRLENBQUMsU0FBUztTQUNuQztRQUNELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBcUIsRUFBRTtZQUM1QyxJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsTUFB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
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBdUV2Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBbUQsT0FBcUI7SUFDcEcsTUFBTSxRQUFRLEdBQW9CO1FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLElBQUk7UUFDakMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSTtRQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxrQkFBa0I7UUFDL0MsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRTtRQUM3QyxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsSUFBSSxpQ0FBaUM7UUFDNUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksUUFBUSxPQUFPLHVDQUF1QyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO1FBQzVJLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxRQUFRLElBQUksVUFBVTtLQUN4RSxDQUFDO0lBQ0YsSUFBSSxNQUFjLENBQUM7SUFDbkIsTUFBTSxZQUFZLEdBQWdEO1FBQzlELE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztRQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzdDLFlBQVksRUFB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