summaryrefslogtreecommitdiff
path: root/ext/web/00_infra.js
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2022-03-19 13:57:37 +0100
committerGitHub <noreply@github.com>2022-03-19 13:57:37 +0100
commite55dee7fd894f705a0268a4734b00197021f0617 (patch)
treef6232128259430ba943da2c1d9ade6ad17697adc /ext/web/00_infra.js
parentad8e2383487e8ef4f15e7b86df80f6dc98fdcc79 (diff)
refactor: cleanup assert() & AssertionError definitions (#13859)
Diffstat (limited to 'ext/web/00_infra.js')
-rw-r--r--ext/web/00_infra.js21
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/web/00_infra.js b/ext/web/00_infra.js
index a250dd69b..f46316bfe 100644
--- a/ext/web/00_infra.js
+++ b/ext/web/00_infra.js
@@ -11,6 +11,7 @@
((window) => {
const core = Deno.core;
const {
+ Error,
RegExp,
ArrayPrototypeMap,
StringPrototypeCharCodeAt,
@@ -275,6 +276,24 @@
return StringPrototypeMatch(s, HTTP_BETWEEN_WHITESPACE)?.[1] ?? "";
}
+ class AssertionError extends Error {
+ constructor(msg) {
+ super(msg);
+ this.name = "AssertionError";
+ }
+ }
+
+ /**
+ * @param {unknown} cond
+ * @param {string=} msg
+ * @returns {asserts cond}
+ */
+ function assert(cond, msg = "Assertion failed.") {
+ if (!cond) {
+ throw new AssertionError(msg);
+ }
+ }
+
window.__bootstrap.infra = {
collectSequenceOfCodepoints,
ASCII_DIGIT,
@@ -299,5 +318,7 @@
collectHttpQuotedString,
forgivingBase64Encode,
forgivingBase64Decode,
+ AssertionError,
+ assert,
};
})(globalThis);