Files
fluxer/fluxer_api/src/api/utils/ByteSizeUtils.ts
T

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;
}