Skip to content

Commit

Permalink
Remove the domexception package dependency
Browse files Browse the repository at this point in the history
Like w3c-hr-time before it, we can just incorporate this directly into jsdom.
  • Loading branch information
domenic committed Nov 26, 2023
1 parent 6d9ff2c commit 6626781
Show file tree
Hide file tree
Showing 51 changed files with 131 additions and 60 deletions.
2 changes: 1 addition & 1 deletion lib/jsdom/browser/Window.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const OnErrorEventHandlerNonNull = require("../living/generated/OnErrorEventHand
const { fireAPageTransitionEvent } = require("../living/helpers/page-transition-event");
const namedPropertiesWindow = require("../living/named-properties-window");
const postMessage = require("../living/post-message");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../living/generated/DOMException");
const idlUtils = require("../living/generated/utils");
const WebSocketImpl = require("../living/websockets/WebSocket-impl").implementation;
const BarProp = require("../living/generated/BarProp");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/browser/parser/xml.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

const { SaxesParser } = require("saxes");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../../living/generated/DOMException");

const { createElement } = require("../../living/helpers/create-element");

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/aborting/AbortSignal-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const { setupForSimpleEventAccessors } = require("../helpers/create-event-access
const { fireAnEvent } = require("../helpers/events");
const EventTargetImpl = require("../events/EventTarget-impl").implementation;
const AbortSignal = require("../generated/AbortSignal");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

class AbortSignalImpl extends EventTargetImpl {
constructor(globalObject, args, privateData) {
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/attributes.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("./generated/DOMException");

const { HTML_NS } = require("./helpers/namespaces");
const { asciiLowercase } = require("./helpers/strings");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/attributes/NamedNodeMap-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const idlUtils = require("../generated/utils.js");
const attributes = require("../attributes.js");
const { HTML_NS } = require("../helpers/namespaces");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/crypto/Crypto-impl.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

const nodeCrypto = require("crypto");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

// https://w3c.github.io/webcrypto/#crypto-interface
class CryptoImpl {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

const webIDLConversions = require("webidl-conversions");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const NODE_TYPE = require("../node-type");

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/domparsing/XMLSerializer-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";
const serialize = require("w3c-xmlserializer");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const utils = require("../generated/utils");

exports.implementation = class XMLSerializerImpl {
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/domparsing/serialization.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

const produceXMLSerialization = require("w3c-xmlserializer");
const parse5 = require("parse5");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const utils = require("../generated/utils");
const treeAdapter = require("./parse5-adapter-serialization");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/events/EventTarget-impl.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const reportException = require("../helpers/runtime-script-errors");
const idlUtils = require("../generated/utils");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/file-api/FileReader-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

const whatwgEncoding = require("whatwg-encoding");
const MIMEType = require("whatwg-mimetype");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const EventTargetImpl = require("../events/EventTarget-impl").implementation;
const ProgressEvent = require("../generated/ProgressEvent");
const { setupForSimpleEventAccessors } = require("../helpers/create-event-accessor");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/helpers/create-element.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const interfaces = require("../interfaces");

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/helpers/custom-elements.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const isPotentialCustomElementName = require("is-potential-custom-element-name");

const NODE_TYPE = require("../node-type");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/helpers/validate-names.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";
const xnv = require("xml-name-validator");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const { XML_NS, XMLNS_NS } = require("../helpers/namespaces");

// https://dom.spec.whatwg.org/#validate
Expand Down
5 changes: 4 additions & 1 deletion lib/jsdom/living/interfaces.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const xpath = require("../level3/xpath");
// We cannot "refactor" this to something less duplicative because that would break bundlers which depend on static
// analysis of require()s.
const generatedInterfaces = {
DOMException: require("domexception/webidl2js-wrapper"),
DOMException: require("./generated/DOMException.js"),

URL: require("whatwg-url/webidl2js-wrapper").URL,
URLSearchParams: require("whatwg-url/webidl2js-wrapper").URLSearchParams,
Expand Down Expand Up @@ -214,6 +214,9 @@ exports.installInterfaces = (window, globalNames) => {
// https://html.spec.whatwg.org/#htmldocument
install(window, "HTMLDocument", window.Document);

// https://webidl.spec.whatwg.org/#es-DOMException-specialness
Object.setPrototypeOf(window.DOMException.prototype, window.Error.prototype);

// These need to be cleaned up...
style.addToCore(window);
xpath(window);
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/CharacterData-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const { mixin } = require("../../utils");
const NodeImpl = require("./Node-impl").implementation;
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/DOMStringMap-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
const idlUtils = require("../generated/utils.js");
const { setAttributeValue, removeAttributeByName } = require("../attributes");
const validateName = require("../helpers/validate-names").name;
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const dataAttrRe = /^data-([^A-Z]*)$/;

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/DOMTokenList-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const OrderedSet = require("../helpers/ordered-set.js");
const { asciiLowercase } = require("../helpers/strings.js");
const idlUtils = require("../generated/utils.js");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/Document-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const eventAccessors = require("../helpers/create-event-accessor");
const { asciiLowercase, stripAndCollapseASCIIWhitespace } = require("../helpers/strings");
const { childTextContent } = require("../helpers/text");
const { HTML_NS, SVG_NS } = require("../helpers/namespaces");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const { parseIntoDocument } = require("../../browser/parser");
const History = require("../generated/History");
const Location = require("../generated/Location");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/Element-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const { parseFragment } = require("../../browser/parser");
const InnerHTMLImpl = require("../domparsing/InnerHTML-impl").implementation;
const { fragmentSerialization } = require("../domparsing/serialization");
const { domSymbolTree } = require("../helpers/internal-constants");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const DOMTokenList = require("../generated/DOMTokenList");
const NamedNodeMap = require("../generated/NamedNodeMap");
const validateNames = require("../helpers/validate-names");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLFormElement-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const { serializeURL } = require("whatwg-url");
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const { domSymbolTree } = require("../helpers/internal-constants");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLInputElement-impl.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const FileList = require("../generated/FileList");
const Decimal = require("decimal.js");
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLMediaElement-impl.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const notImplemented = require("../../browser/not-implemented");
const { fireAnEvent } = require("../helpers/events");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

const idlUtils = require("../generated/utils.js");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const { DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_CONTAINED_BY } = require("../node-document-position");
const Element = require("../generated/Element");
const Node = require("../generated/Node");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLTableElement-impl.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const { HTML_NS } = require("../helpers/namespaces");
const { domSymbolTree } = require("../helpers/internal-constants");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLTableRowElement-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const HTMLCollection = require("../generated/HTMLCollection");
const { HTML_NS } = require("../helpers/namespaces");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
const HTMLElementImpl = require("./HTMLElement-impl").implementation;
const { childrenByLocalName } = require("../helpers/traversal");
const HTMLCollection = require("../generated/HTMLCollection");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

class HTMLTableSectionElementImpl extends HTMLElementImpl {
get rows() {
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const DefaultConstraintValidationImpl =
const ValidityState = require("../generated/ValidityState");
const { mixin } = require("../../utils");

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const { cloningSteps } = require("../helpers/internal-constants");
const { isDisabled, getLabelsForLabelable, formOwner } = require("../helpers/form-controls");
const { childTextContent } = require("../helpers/text");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/Node-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const EventTargetImpl = require("../events/EventTarget-impl").implementation;
const { simultaneousIterators } = require("../../utils");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/nodes/Text-impl.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const SlotableMixinImpl = require("./Slotable-impl").implementation;
const CharacterDataImpl = require("./CharacterData-impl").implementation;
const idlUtils = require("../generated/utils");
const { domSymbolTree } = require("../helpers/internal-constants");
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const NODE_TYPE = require("../node-type");
const { mixin } = require("../../utils");

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/post-message.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("./generated/DOMException");
const MessageEvent = require("./generated/MessageEvent");
const idlUtils = require("./generated/utils");
const { isValidTargetOrigin } = require("../utils");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/range/Range-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const { clone } = require("../node");
const NODE_TYPE = require("../node-type");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/range/StaticRange-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const NODE_TYPE = require("../node-type");

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/selection/Selection-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

const NODE_TYPE = require("../node-type");
const { nodeLength, nodeRoot } = require("../helpers/node");
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/svg/SVGListBase.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const idlUtils = require("../generated/utils");
const { attach, detach } = require("../helpers/svg/basic-types");

Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/svg/SVGNumber-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");

class SVGNumberImpl {
constructor(globalObject, args, privateData) {
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/traversal/TreeWalker-impl.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use strict";

const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const { filter, FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP } = require("./helpers");

const FIRST = false;
Expand Down
2 changes: 1 addition & 1 deletion lib/jsdom/living/traversal/helpers.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"use strict";
const DOMException = require("domexception/webidl2js-wrapper");
const DOMException = require("../generated/DOMException");
const conversions = require("webidl-conversions");

exports.FILTER_ACCEPT = 1; // NodeFilter.FILTER_ACCEPT
Expand Down
46 changes: 46 additions & 0 deletions lib/jsdom/living/webidl/DOMException-impl.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"use strict";
const idlUtils = require("../generated/utils");

const legacyErrorCodes = {
IndexSizeError: 1,
HierarchyRequestError: 3,
WrongDocumentError: 4,
InvalidCharacterError: 5,
NoModificationAllowedError: 7,
NotFoundError: 8,
NotSupportedError: 9,
InUseAttributeError: 10,
InvalidStateError: 11,
SyntaxError: 12,
InvalidModificationError: 13,
NamespaceError: 14,
InvalidAccessError: 15,
TypeMismatchError: 17,
SecurityError: 18,
NetworkError: 19,
AbortError: 20,
URLMismatchError: 21,
QuotaExceededError: 22,
TimeoutError: 23,
InvalidNodeTypeError: 24,
DataCloneError: 25
};

exports.implementation = class DOMExceptionImpl {
constructor(globalObject, [message, name]) {
this.name = name;
this.message = message;
}

get code() {
return legacyErrorCodes[this.name] || 0;
}
};

// A proprietary V8 extension that causes the stack property to appear.
exports.init = impl => {
if (Error.captureStackTrace) {
const wrapper = idlUtils.wrapperForImpl(impl);
Error.captureStackTrace(wrapper, wrapper.constructor);
}
};
Loading

0 comments on commit 6626781

Please sign in to comment.