diff options
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | pnpm-lock.yaml | 9 | ||||
-rw-r--r-- | src/lib/middleware.ts | 2 | ||||
-rw-r--r-- | src/util/object.ts | 30 |
4 files changed, 11 insertions, 31 deletions
diff --git a/package.json b/package.json index 0287e77..892f9dc 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "request": "^2.88.2", "sanitize-html": "^2.13.0", "toml": "^3.0.0", + "ts-deepmerge": "^7.0.2", "typescript": "^5.4.5", "wait-on": "^7.2.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ac81b2..11f04d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,6 +95,9 @@ importers: toml: specifier: ^3.0.0 version: 3.0.0 + ts-deepmerge: + specifier: ^7.0.2 + version: 7.0.2 typescript: specifier: ^5.4.5 version: 5.4.5 @@ -2130,6 +2133,10 @@ packages: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} + ts-deepmerge@7.0.2: + resolution: {integrity: sha512-akcpDTPuez4xzULo5NwuoKwYRtjQJ9eoNfBACiBMaXwNAx7B1PKfe5wqUFJuW5uKzQ68YjDFwPaWHDG1KnFGsA==} + engines: {node: '>=14.13.1'} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -4574,6 +4581,8 @@ snapshots: dependencies: punycode: 2.3.1 + ts-deepmerge@7.0.2: {} + tslib@1.14.1: {} tslib@2.6.2: {} diff --git a/src/lib/middleware.ts b/src/lib/middleware.ts index 5073137..69fbe4e 100644 --- a/src/lib/middleware.ts +++ b/src/lib/middleware.ts @@ -1,7 +1,7 @@ import { NextFunction, Request, Response } from "express"; import MagicLink from "../models/MagicLink.js"; import getConfig, { GathioConfig } from "../lib/config.js"; -import { deepMerge } from "../util/object.js"; +import { merge as deepMerge } from "ts-deepmerge"; export const checkMagicLink = async ( req: Request, diff --git a/src/util/object.ts b/src/util/object.ts deleted file mode 100644 index 1ecc89b..0000000 --- a/src/util/object.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Simple object check. - */ -export function isObject(item: any) { - return item && typeof item === "object" && !Array.isArray(item); -} - -/** - * Deep merge two objects. - */ -export function deepMerge<T>( - target: Record<any, any>, - ...sources: Record<any, any>[] -): T { - if (!sources.length) return target; - const source = sources.shift(); - - if (isObject(target) && isObject(source)) { - for (const key in source) { - if (isObject(source[key])) { - if (!target[key]) Object.assign(target, { [key]: {} }); - deepMerge(target[key], source[key]); - } else { - Object.assign(target, { [key]: source[key] }); - } - } - } - - return deepMerge(target, ...sources) as T; -} |