Files
NapCatQQ/.pnpm-store/v3/files/d1/cbdbb4bad917c46d89d9bd9e0d79dc4e5daf4b7e1473470ed5e53a75ff0c6e08e38738ce0aa824e3c104b99dfa518ee72ca7b33ce5ab6a441749519d67304c
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

51 lines
2.0 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Equal = Equal;
const index_1 = require("../guard/index");
// ------------------------------------------------------------------
// Equality Checks
// ------------------------------------------------------------------
function ObjectType(left, right) {
if (!(0, index_1.IsObject)(right))
return false;
const leftKeys = [...Object.keys(left), ...Object.getOwnPropertySymbols(left)];
const rightKeys = [...Object.keys(right), ...Object.getOwnPropertySymbols(right)];
if (leftKeys.length !== rightKeys.length)
return false;
return leftKeys.every((key) => Equal(left[key], right[key]));
}
function DateType(left, right) {
return (0, index_1.IsDate)(right) && left.getTime() === right.getTime();
}
function ArrayType(left, right) {
if (!(0, index_1.IsArray)(right) || left.length !== right.length)
return false;
return left.every((value, index) => Equal(value, right[index]));
}
function TypedArrayType(left, right) {
if (!(0, index_1.IsTypedArray)(right) || left.length !== right.length || Object.getPrototypeOf(left).constructor.name !== Object.getPrototypeOf(right).constructor.name)
return false;
return left.every((value, index) => Equal(value, right[index]));
}
function ValueType(left, right) {
return left === right;
}
// ------------------------------------------------------------------
// Equal
// ------------------------------------------------------------------
/** Returns true if the left value deep-equals the right */
function Equal(left, right) {
if ((0, index_1.IsDate)(left))
return DateType(left, right);
if ((0, index_1.IsTypedArray)(left))
return TypedArrayType(left, right);
if ((0, index_1.IsArray)(left))
return ArrayType(left, right);
if ((0, index_1.IsObject)(left))
return ObjectType(left, right);
if ((0, index_1.IsValueType)(left))
return ValueType(left, right);
throw new Error('ValueEquals: Unable to compare value');
}