From 96372097657685b5655bba95ce5a329364a9301b Mon Sep 17 00:00:00 2001 From: Yacine Hmito Date: Sat, 9 Jan 2021 07:27:46 +0100 Subject: fix(web): implement DOMException#code (#9015) Co-authored-by: Luca Casonato --- op_crates/web/00_dom_exception.js | 55 ++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 10 deletions(-) (limited to 'op_crates/web/00_dom_exception.js') diff --git a/op_crates/web/00_dom_exception.js b/op_crates/web/00_dom_exception.js index 6d72779b0..5fb130452 100644 --- a/op_crates/web/00_dom_exception.js +++ b/op_crates/web/00_dom_exception.js @@ -1,15 +1,50 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -// eslint-disable-next-line @typescript-eslint/no-unused-vars -class DOMException extends Error { - #name = ""; +((window) => { + const nameToCodeMapping = Object.create( + null, + { + IndexSizeError: { value: 1 }, + HierarchyRequestError: { value: 3 }, + WrongDocumentError: { value: 4 }, + InvalidCharacterError: { value: 5 }, + NoModificationAllowedError: { value: 7 }, + NotFoundError: { value: 8 }, + NotSupportedError: { value: 9 }, + InvalidStateError: { value: 11 }, + SyntaxError: { value: 12 }, + InvalidModificationError: { value: 13 }, + NamespaceError: { value: 14 }, + InvalidAccessError: { value: 15 }, + TypeMismatchError: { value: 17 }, + SecurityError: { value: 18 }, + NetworkError: { value: 19 }, + AbortError: { value: 20 }, + URLMismatchError: { value: 21 }, + QuotaExceededError: { value: 22 }, + TimeoutError: { value: 23 }, + InvalidNodeTypeError: { value: 24 }, + DataCloneError: { value: 25 }, + }, + ); + class DOMException extends Error { + #name = ""; + #code = 0; - constructor(message = "", name = "Error") { - super(message); - this.#name = name; - } + constructor(message = "", name = "Error") { + super(message); + this.#name = name; + this.#code = nameToCodeMapping[name] ?? 0; + } + + get name() { + return this.#name; + } - get name() { - return this.#name; + get code() { + return this.#code; + } } -} + + window.DOMException = DOMException; +})(this); -- cgit v1.2.3