diff --git a/src/api/middlewares/ImageProxy.ts b/src/api/middlewares/ImageProxy.ts
index 4f9eef10..deb48bd5 100644
--- a/src/api/middlewares/ImageProxy.ts
+++ b/src/api/middlewares/ImageProxy.ts
@@ -20,7 +20,7 @@ import { Config, JimpType } from "@spacebar/util";
import { Request, Response } from "express";
import { yellow } from "picocolors";
import crypto from "crypto";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
let sharp: undefined | false | { default: typeof import("sharp") } = undefined;
diff --git a/src/api/routes/gifs/search.ts b/src/api/routes/gifs/search.ts
index 305a2a48..3869bbe6 100644
--- a/src/api/routes/gifs/search.ts
+++ b/src/api/routes/gifs/search.ts
@@ -17,9 +17,14 @@
*/
import { route } from "@spacebar/api";
-import { TenorMediaTypes, getGifApiKey, parseGifResult } from "@spacebar/util";
+import {
+ TenorMediaTypes,
+ getGifApiKey,
+ parseGifResult,
+ TenorGif,
+} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
import { ProxyAgent } from "proxy-agent";
const router = Router();
@@ -68,7 +73,7 @@ router.get(
},
);
- const { results } = await response.json();
+ const { results } = (await response.json()) as { results: TenorGif[] };
res.json(results.map(parseGifResult)).status(200);
},
diff --git a/src/api/routes/gifs/trending-gifs.ts b/src/api/routes/gifs/trending-gifs.ts
index 77a61efc..f19874e6 100644
--- a/src/api/routes/gifs/trending-gifs.ts
+++ b/src/api/routes/gifs/trending-gifs.ts
@@ -17,9 +17,14 @@
*/
import { route } from "@spacebar/api";
-import { TenorMediaTypes, getGifApiKey, parseGifResult } from "@spacebar/util";
+import {
+ TenorMediaTypes,
+ getGifApiKey,
+ parseGifResult,
+ TenorGif,
+} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
import { ProxyAgent } from "proxy-agent";
const router = Router();
@@ -63,7 +68,7 @@ router.get(
},
);
- const { results } = await response.json();
+ const { results } = (await response.json()) as { results: TenorGif[] };
res.json(results.map(parseGifResult)).status(200);
},
diff --git a/src/api/routes/gifs/trending.ts b/src/api/routes/gifs/trending.ts
index fe726842..2c43a501 100644
--- a/src/api/routes/gifs/trending.ts
+++ b/src/api/routes/gifs/trending.ts
@@ -24,7 +24,7 @@ import {
parseGifResult,
} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
import { ProxyAgent } from "proxy-agent";
const router = Router();
diff --git a/src/api/routes/guilds/templates/index.ts b/src/api/routes/guilds/templates/index.ts
index 8f718a21..a611f421 100644
--- a/src/api/routes/guilds/templates/index.ts
+++ b/src/api/routes/guilds/templates/index.ts
@@ -28,7 +28,7 @@ import {
Template,
} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
const router: Router = Router();
router.get(
diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts
index f037417a..1733f7cb 100644
--- a/src/api/util/handlers/Message.ts
+++ b/src/api/util/handlers/Message.ts
@@ -48,7 +48,7 @@ import {
} from "@spacebar/util";
import { HTTPError } from "lambert-server";
import { In } from "typeorm";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
const allow_empty = false;
// TODO: check webhook, application, system author, stickers
// TODO: embed gifs/videos/images
diff --git a/src/api/util/utility/EmbedHandlers.ts b/src/api/util/utility/EmbedHandlers.ts
index 0f1e88a5..450d9d7e 100644
--- a/src/api/util/utility/EmbedHandlers.ts
+++ b/src/api/util/utility/EmbedHandlers.ts
@@ -19,7 +19,7 @@
import { Config, Embed, EmbedImage, EmbedType } from "@spacebar/util";
import * as cheerio from "cheerio";
import crypto from "crypto";
-import fetch, { RequestInit } from "node-fetch";
+import fetch, { RequestInit } from "node-fetch-commonjs";
import { yellow } from "picocolors";
import probe from "probe-image-size";
@@ -221,7 +221,7 @@ export const EmbedHandlers: {
? {
name: metas.site_name,
url: url.origin,
- }
+ }
: undefined,
};
},
@@ -269,7 +269,27 @@ export const EmbedHandlers: {
authorization: `Bearer ${token}`,
},
});
- const json = await response.json();
+ const json = (await response.json()) as {
+ errors?: never[];
+ includes: {
+ users: {
+ profile_image_url: string;
+ username: string;
+ name: string;
+ }[];
+ media: {
+ type: string;
+ width: number;
+ height: number;
+ url: string;
+ }[];
+ };
+ data: {
+ text: string;
+ created_at: string;
+ public_metrics: { like_count: number; retweet_count: number };
+ };
+ };
if (json.errors) return null;
const author = json.includes.users[0];
const text = json.data.text;
@@ -508,7 +528,7 @@ export const EmbedHandlers: {
? {
name: metas.author,
// TODO: author channel url
- }
+ }
: undefined,
};
},
@@ -533,7 +553,7 @@ export const EmbedHandlers: {
footer: hoverText
? {
text: hoverText,
- }
+ }
: undefined,
};
},
diff --git a/src/api/util/utility/captcha.ts b/src/api/util/utility/captcha.ts
index db1b7957..3c0ac766 100644
--- a/src/api/util/utility/captcha.ts
+++ b/src/api/util/utility/captcha.ts
@@ -17,7 +17,7 @@
*/
import { Config } from "@spacebar/util";
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
export interface hcaptchaResponse {
success: boolean;
diff --git a/src/api/util/utility/ipAddress.ts b/src/api/util/utility/ipAddress.ts
index c51daf6c..c19c7c35 100644
--- a/src/api/util/utility/ipAddress.ts
+++ b/src/api/util/utility/ipAddress.ts
@@ -19,7 +19,7 @@
import { Config } from "@spacebar/util";
import { Request } from "express";
// use ipdata package instead of simple fetch because of integrated caching
-import fetch from "node-fetch";
+import fetch from "node-fetch-commonjs";
const exampleData = {
ip: "",
@@ -85,7 +85,7 @@ export async function IPAnalysis(ip: string): Promise<typeof exampleData> {
return (
await fetch(`https://api.ipdata.co/${ip}?api-key=${ipdataApiKey}`)
- ).json();
+ ).json() as Promise<typeof exampleData>;
}
export function isProxy(data: typeof exampleData) {
|