summaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/util/enforceRange.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/idb-bridge/src/util/enforceRange.ts')
-rw-r--r--packages/idb-bridge/src/util/enforceRange.ts18
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;