diff --git a/apps/live/src/core/extensions/index.ts b/apps/live/src/core/extensions/index.ts deleted file mode 100644 index 9427e225a0..0000000000 --- a/apps/live/src/core/extensions/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -// Third-party libraries -import { Redis } from "ioredis"; -// Hocuspocus extensions and core -import { Database } from "@hocuspocus/extension-database"; -import { Extension } from "@hocuspocus/server"; -import { Logger } from "@hocuspocus/extension-logger"; -import { Redis as HocusPocusRedis } from "@hocuspocus/extension-redis"; -import { logger } from "@plane/logger"; -// core helpers and utilities -import { getRedisUrl } from "@/core/lib/utils/redis-url.js"; -// core libraries -import { fetchPageDescriptionBinary, updatePageDescription } from "@/core/lib/page"; -// plane live libraries -import { fetchDocument } from "@/plane-live/lib/fetch-document.js"; -import { updateDocument } from "@/plane-live/lib/update-document.js"; -// types -import { type HocusPocusServerContext, type TDocumentTypes } from "@/core/types/common.js"; - -export const getExtensions: () => Promise = async () => { - const extensions: Extension[] = [ - new Logger({ - onChange: false, - log: (message) => { - logger.info(message); - }, - }), - new Database({ - fetch: async ({ context, documentName: pageId, requestParameters }) => { - const cookie = (context as HocusPocusServerContext).cookie; - // query params - const params = requestParameters; - const documentType = params.get("documentType")?.toString() as TDocumentTypes | undefined; - // TODO: Fix this lint error. - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { - try { - let fetchedData = null; - if (documentType === "project_page") { - fetchedData = await fetchPageDescriptionBinary(params, pageId, cookie); - } else { - fetchedData = await fetchDocument({ - cookie, - documentType, - pageId, - params, - }); - } - resolve(fetchedData); - } catch (error) { - logger.error("Error in fetching document", error); - } - }); - }, - store: async ({ context, state, documentName: pageId, requestParameters }) => { - const cookie = (context as HocusPocusServerContext).cookie; - // query params - const params = requestParameters; - const documentType = params.get("documentType")?.toString() as TDocumentTypes | undefined; - - // TODO: Fix this lint error. - // eslint-disable-next-line no-async-promise-executor - return new Promise(async () => { - try { - if (documentType === "project_page") { - await updatePageDescription(params, pageId, state, cookie); - } else { - await updateDocument({ - cookie, - documentType, - pageId, - params, - updatedDescription: state, - }); - } - } catch (error) { - logger.error("Error in updating document:", error); - } - }); - }, - }), - ]; - - const redisUrl = getRedisUrl(); - - if (redisUrl) { - try { - const redisClient = new Redis(redisUrl); - - await new Promise((resolve, reject) => { - redisClient.on("error", (error: any) => { - if (error?.code === "ENOTFOUND" || error.message.includes("WRONGPASS") || error.message.includes("NOAUTH")) { - redisClient.disconnect(); - } - logger.warn( - `Redis Client wasn't able to connect, continuing without Redis (you won't be able to sync data between multiple plane live servers)`, - error - ); - reject(error); - }); - - redisClient.on("ready", () => { - extensions.push(new HocusPocusRedis({ redis: redisClient })); - logger.info("Redis Client connected ✅"); - resolve(); - }); - }); - } catch (error) { - logger.warn( - `Redis Client wasn't able to connect, continuing without Redis (you won't be able to sync data between multiple plane live servers)`, - error - ); - } - } else { - logger.warn( - "Redis URL is not set, continuing without Redis (you won't be able to sync data between multiple plane live servers)" - ); - } - - return extensions; -}; diff --git a/apps/live/src/core/helpers/error-handler.ts b/apps/live/src/core/helpers/error-handler.ts deleted file mode 100644 index bd71ef11bf..0000000000 --- a/apps/live/src/core/helpers/error-handler.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ErrorRequestHandler } from "express"; -import { logger } from "@plane/logger"; - -export const errorHandler: ErrorRequestHandler = (err, _req, res) => { - // Log the error - logger.error(err); - - // Set the response status - res.status(err.status || 500); - - // Send the response - res.json({ - error: { - message: process.env.NODE_ENV === "production" ? "An unexpected error occurred" : err.message, - ...(process.env.NODE_ENV !== "production" && { stack: err.stack }), - }, - }); -}; diff --git a/apps/live/src/core/lib/utils/redis-url.ts b/apps/live/src/core/lib/utils/redis-url.ts deleted file mode 100644 index e2f9c995fa..0000000000 --- a/apps/live/src/core/lib/utils/redis-url.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function getRedisUrl() { - const redisUrl = process.env.REDIS_URL?.trim(); - const redisHost = process.env.REDIS_HOST?.trim(); - const redisPort = process.env.REDIS_PORT?.trim(); - - if (redisUrl) { - return redisUrl; - } - - if (redisHost && redisPort && !Number.isNaN(Number(redisPort))) { - return `redis://${redisHost}:${redisPort}`; - } - - return ""; -}