summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package.json1
-rw-r--r--pnpm-lock.yaml9
-rw-r--r--src/lib/middleware.ts2
-rw-r--r--src/util/object.ts30
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;
-}