From e1aff2f17f6e5db8810f0957323431478ffe4692 Mon Sep 17 00:00:00 2001 From: Amin Latifi Date: Sun, 28 Jan 2024 16:02:24 +0330 Subject: [PATCH] Fix some compatibility issues after upgrade --- package-lock.json | 2 +- package.json | 2 +- src/redis.ts | 5 ++--- src/server/adminJs/adminJs.ts | 9 ++------- src/server/bootstrap.ts | 6 +++--- src/utils/createConfirmationUrl.ts | 2 +- 6 files changed, 10 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1512c3a0..4b28ccbe8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "express": "^4.18.2", "express-formidable": "^1.2.0", "express-rate-limit": "^7.1.5", - "express-session": "^1.17.2", + "express-session": "^1.17.3", "form-data": "^3.0.1", "google-spreadsheet": "^3.2.0", "graphql": "16.8.1", diff --git a/package.json b/package.json index 1fd6909da..19acdf601 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "express": "^4.18.2", "express-formidable": "^1.2.0", "express-rate-limit": "^7.1.5", - "express-session": "^1.17.2", + "express-session": "^1.17.3", "form-data": "^3.0.1", "google-spreadsheet": "^3.2.0", "graphql": "16.8.1", diff --git a/src/redis.ts b/src/redis.ts index 52506aeaa..be860d3a7 100644 --- a/src/redis.ts +++ b/src/redis.ts @@ -1,6 +1,5 @@ -import { RedisOptions } from 'ioredis'; -// tslint:disable-next-line:no-var-requires -const Redis = require('ioredis'); +import { RedisOptions, Redis } from 'ioredis'; + export const redisConfig: RedisOptions = { port: Number(process.env.REDIS_PORT) || 6379, host: process.env.REDIS_HOST || 'localhost', diff --git a/src/server/adminJs/adminJs.ts b/src/server/adminJs/adminJs.ts index 2001d36c0..5d162bf63 100644 --- a/src/server/adminJs/adminJs.ts +++ b/src/server/adminJs/adminJs.ts @@ -25,23 +25,18 @@ import { featuredUpdateTab } from './tabs/featuredUpdateTab'; import { generateTokenTab } from './tabs/tokenTab'; import { donationTab } from './tabs/donationTab'; import { projectVerificationTab } from './tabs/projectVerificationTab'; -import { ResourceActions } from './adminJsPermissions'; import { qfRoundTab } from './tabs/qfRoundTab'; import { qfRoundHistoryTab } from './tabs/qfRoundHistoryTab'; - // use redis for session data instead of in-memory storage // tslint:disable-next-line:no-var-requires -// tslint:disable-next-line:no-var-requires -const session = require('express-session'); -// tslint:disable-next-line:no-var-requires -const RedisStore = require('connect-redis')(session); +const RedisStore = require('connect-redis').default; + // tslint:disable-next-line:no-var-requires const cookie = require('cookie'); // tslint:disable-next-line:no-var-requires const cookieParser = require('cookie-parser'); const secret = config.get('ADMIN_BRO_COOKIE_SECRET') as string; const adminJsCookie = 'adminjs'; - adminJs.registerAdapter({ Database, Resource }); export const getAdminJsRouter = async () => { diff --git a/src/server/bootstrap.ts b/src/server/bootstrap.ts index d46cdda16..9f531d4af 100644 --- a/src/server/bootstrap.ts +++ b/src/server/bootstrap.ts @@ -1,7 +1,7 @@ // @ts-check import config from '../config'; import { rateLimit } from 'express-rate-limit'; -import RedisStore from 'rate-limit-redis'; +import { RedisStore } from 'rate-limit-redis'; import { ApolloServer } from '@apollo/server'; import { expressMiddleware } from '@apollo/server/express4'; import { ApolloServerPluginSchemaReporting } from '@apollo/server/plugin/schemaReporting'; @@ -212,8 +212,8 @@ export async function bootstrap() { const limiter = rateLimit({ store: new RedisStore({ prefix: 'rate-limit:', - client: redis, - // see Configuration + // @ts-expect-error - Known issue: the `call` function is not present in @types/ioredis + sendCommand: (...args: string[]) => redis.call(...args), // see Configuration }), windowMs: 60 * 1000, // 1 minutes max: Number(process.env.ALLOWED_REQUESTS_PER_MINUTE), // limit each IP to 40 requests per windowMs diff --git a/src/utils/createConfirmationUrl.ts b/src/utils/createConfirmationUrl.ts index c05d2957d..a437106ea 100644 --- a/src/utils/createConfirmationUrl.ts +++ b/src/utils/createConfirmationUrl.ts @@ -5,7 +5,7 @@ import config from '../config'; export const createConfirmationUrl = async (userId: number) => { const token = v4(); - await redis.set(confirmUserPrefix + token, userId, 'ex', 60 * 60 * 24); // 1 day expiration + await redis.set(confirmUserPrefix + token, userId, 'EX', 60 * 60 * 24); // 1 day expiration return `http://${config.get('WEBSITE_URL')}/user/confirm/${token}`; };