diff options
Diffstat (limited to 'packages/idb-bridge/src/util/enforceRange.ts')
-rw-r--r-- | packages/idb-bridge/src/util/enforceRange.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/idb-bridge/src/util/enforceRange.ts b/packages/idb-bridge/src/util/enforceRange.ts new file mode 100644 index 000000000..0cf3b6c85 --- /dev/null +++ b/packages/idb-bridge/src/util/enforceRange.ts @@ -0,0 +1,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; |