Files
tgCrewAdmin/src/boot/helpers.ts
2025-04-14 10:27:58 +03:00

38 lines
1.3 KiB
TypeScript

export function isObjEqual(a: object, b: object): boolean {
// Сравнение примитивов и null/undefined
if (a === b) return true
if (!a || !b) return false
if (Object.keys(a).length !== Object.keys(b).length) return false
// Получаем все уникальные ключи из обоих объектов
const allKeys = new Set([
...Object.keys(a),
...Object.keys(b)
])
// Проверяем каждое свойство
for (const key of allKeys) {
const valA = a[key as keyof typeof a]
const valB = b[key as keyof typeof b]
// Если одно из значений undefined - объекты разные
if (valA === undefined || valB === undefined) return false
// Рекурсивное сравнение для вложенных объектов
if (typeof valA === 'object' && typeof valB === 'object') {
if (!isObjEqual(valA, valB)) return false
}
// Сравнение примитивов
else if (!Object.is(valA, valB)) {
return false
}
}
return true
}
export function parseIntString (s: string | string[] | undefined) :number | null {
if (typeof s !== 'string') return null
const regex = /^[+-]?\d+$/
return regex.test(s) ? Number(s) : null
}