summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/util/enforceRange.ts
blob: 0cf3b6c8523acd91d2fa3940c533bf2d4445b6f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// https://heycam.github.io/webidl/#EnforceRange

const enforceRange = (
    num: number,
    type: "MAX_SAFE_INTEGER" | "unsigned long",
) => {
    const min = 0;
    const max = type === "unsigned long" ? 4294967295 : 9007199254740991;

    if (isNaN(num) || num < min || num > max) {
        throw new TypeError();
    }
    if (num >= 0) {
        return Math.floor(num);
    }
};

export default enforceRange;