mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-18 21:45:31 +09:00
17 lines
564 B
TypeScript
17 lines
564 B
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
const MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);
|
|
|
|
export function assertSafeByteSize(value: bigint | number, fieldName = 'byte size'): number {
|
|
if (typeof value === 'bigint') {
|
|
if (value < 0n || value > MAX_SAFE_INTEGER_BIGINT) {
|
|
throw new Error(`${fieldName} must fit a non-negative JavaScript safe integer`);
|
|
}
|
|
return Number(value);
|
|
}
|
|
if (!Number.isSafeInteger(value) || value < 0) {
|
|
throw new Error(`${fieldName} must fit a non-negative JavaScript safe integer`);
|
|
}
|
|
return value;
|
|
}
|