aboutsummaryrefslogtreecommitdiff
path: root/packages/idb-bridge/src/util/enforceRange.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-06-15 22:44:54 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-06-15 22:44:54 +0200
commit2ee9431f1ba5bf67546bbf85758a01991c40673f (patch)
tree4581c4f3c966d742c66ea7f4bae4f9a3f8e2f5ff /packages/idb-bridge/src/util/enforceRange.ts
parent65eb8b96f894491d406f91070df53ccbd43d19c9 (diff)
idb wip
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;