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

34 lines
1.1 KiB
Plaintext

import * as ValueGuard from '../guard/value.mjs';
function ImmutableArray(value) {
return globalThis.Object.freeze(value).map((value) => Immutable(value));
}
function ImmutableDate(value) {
return value;
}
function ImmutableUint8Array(value) {
return value;
}
function ImmutableRegExp(value) {
return value;
}
function ImmutableObject(value) {
const result = {};
for (const key of Object.getOwnPropertyNames(value)) {
result[key] = Immutable(value[key]);
}
for (const key of Object.getOwnPropertySymbols(value)) {
result[key] = Immutable(value[key]);
}
return globalThis.Object.freeze(result);
}
/** Specialized deep immutable value. Applies freeze recursively to the given value */
// prettier-ignore
export function Immutable(value) {
return (ValueGuard.IsArray(value) ? ImmutableArray(value) :
ValueGuard.IsDate(value) ? ImmutableDate(value) :
ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) :
ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) :
ValueGuard.IsObject(value) ? ImmutableObject(value) :
value);
}