blob: 53f402347ca763f21713b2d764d75da1f8f39878 [file] [log] [blame]
/* eslint-disable global-require */
"use strict";
const style = require("../level2/style");
const xpath = require("../level3/xpath");
// This object defines the mapping between the interface name and the generated interface wrapper code.
// Note: The mapping needs to stay as-is in order due to interface evaluation.
// 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"),
URL: require("whatwg-url/webidl2js-wrapper").URL,
URLSearchParams: require("whatwg-url/webidl2js-wrapper").URLSearchParams,
EventTarget: require("./generated/EventTarget"),
NamedNodeMap: require("./generated/NamedNodeMap"),
Node: require("./generated/Node"),
Attr: require("./generated/Attr"),
Element: require("./generated/Element"),
DocumentFragment: require("./generated/DocumentFragment"),
DOMImplementation: require("./generated/DOMImplementation"),
Document: require("./generated/Document"),
XMLDocument: require("./generated/XMLDocument"),
CharacterData: require("./generated/CharacterData"),
Text: require("./generated/Text"),
CDATASection: require("./generated/CDATASection"),
ProcessingInstruction: require("./generated/ProcessingInstruction"),
Comment: require("./generated/Comment"),
DocumentType: require("./generated/DocumentType"),
NodeList: require("./generated/NodeList"),
HTMLCollection: require("./generated/HTMLCollection"),
HTMLOptionsCollection: require("./generated/HTMLOptionsCollection"),
DOMStringMap: require("./generated/DOMStringMap"),
DOMTokenList: require("./generated/DOMTokenList"),
StyleSheetList: require("./generated/StyleSheetList.js"),
HTMLElement: require("./generated/HTMLElement.js"),
HTMLHeadElement: require("./generated/HTMLHeadElement.js"),
HTMLTitleElement: require("./generated/HTMLTitleElement.js"),
HTMLBaseElement: require("./generated/HTMLBaseElement.js"),
HTMLLinkElement: require("./generated/HTMLLinkElement.js"),
HTMLMetaElement: require("./generated/HTMLMetaElement.js"),
HTMLStyleElement: require("./generated/HTMLStyleElement.js"),
HTMLBodyElement: require("./generated/HTMLBodyElement.js"),
HTMLHeadingElement: require("./generated/HTMLHeadingElement.js"),
HTMLParagraphElement: require("./generated/HTMLParagraphElement.js"),
HTMLHRElement: require("./generated/HTMLHRElement.js"),
HTMLPreElement: require("./generated/HTMLPreElement.js"),
HTMLUListElement: require("./generated/HTMLUListElement.js"),
HTMLOListElement: require("./generated/HTMLOListElement.js"),
HTMLLIElement: require("./generated/HTMLLIElement.js"),
HTMLMenuElement: require("./generated/HTMLMenuElement.js"),
HTMLDListElement: require("./generated/HTMLDListElement.js"),
HTMLDivElement: require("./generated/HTMLDivElement.js"),
HTMLAnchorElement: require("./generated/HTMLAnchorElement.js"),
HTMLAreaElement: require("./generated/HTMLAreaElement.js"),
HTMLBRElement: require("./generated/HTMLBRElement.js"),
HTMLButtonElement: require("./generated/HTMLButtonElement.js"),
HTMLCanvasElement: require("./generated/HTMLCanvasElement.js"),
HTMLDataElement: require("./generated/HTMLDataElement.js"),
HTMLDataListElement: require("./generated/HTMLDataListElement.js"),
HTMLDetailsElement: require("./generated/HTMLDetailsElement.js"),
HTMLDialogElement: require("./generated/HTMLDialogElement.js"),
HTMLDirectoryElement: require("./generated/HTMLDirectoryElement.js"),
HTMLFieldSetElement: require("./generated/HTMLFieldSetElement.js"),
HTMLFontElement: require("./generated/HTMLFontElement.js"),
HTMLFormElement: require("./generated/HTMLFormElement.js"),
HTMLHtmlElement: require("./generated/HTMLHtmlElement.js"),
HTMLImageElement: require("./generated/HTMLImageElement.js"),
HTMLInputElement: require("./generated/HTMLInputElement.js"),
HTMLLabelElement: require("./generated/HTMLLabelElement.js"),
HTMLLegendElement: require("./generated/HTMLLegendElement.js"),
HTMLMapElement: require("./generated/HTMLMapElement.js"),
HTMLMarqueeElement: require("./generated/HTMLMarqueeElement.js"),
HTMLMediaElement: require("./generated/HTMLMediaElement.js"),
HTMLMeterElement: require("./generated/HTMLMeterElement.js"),
HTMLModElement: require("./generated/HTMLModElement.js"),
HTMLOptGroupElement: require("./generated/HTMLOptGroupElement.js"),
HTMLOptionElement: require("./generated/HTMLOptionElement.js"),
HTMLOutputElement: require("./generated/HTMLOutputElement.js"),
HTMLPictureElement: require("./generated/HTMLPictureElement.js"),
HTMLProgressElement: require("./generated/HTMLProgressElement.js"),
HTMLQuoteElement: require("./generated/HTMLQuoteElement.js"),
HTMLScriptElement: require("./generated/HTMLScriptElement.js"),
HTMLSelectElement: require("./generated/HTMLSelectElement.js"),
HTMLSlotElement: require("./generated/HTMLSlotElement.js"),
HTMLSourceElement: require("./generated/HTMLSourceElement.js"),
HTMLSpanElement: require("./generated/HTMLSpanElement.js"),
HTMLTableCaptionElement: require("./generated/HTMLTableCaptionElement.js"),
HTMLTableCellElement: require("./generated/HTMLTableCellElement.js"),
HTMLTableColElement: require("./generated/HTMLTableColElement.js"),
HTMLTableElement: require("./generated/HTMLTableElement.js"),
HTMLTimeElement: require("./generated/HTMLTimeElement.js"),
HTMLTableRowElement: require("./generated/HTMLTableRowElement.js"),
HTMLTableSectionElement: require("./generated/HTMLTableSectionElement.js"),
HTMLTemplateElement: require("./generated/HTMLTemplateElement.js"),
HTMLTextAreaElement: require("./generated/HTMLTextAreaElement.js"),
HTMLUnknownElement: require("./generated/HTMLUnknownElement.js"),
HTMLFrameElement: require("./generated/HTMLFrameElement.js"),
HTMLFrameSetElement: require("./generated/HTMLFrameSetElement.js"),
HTMLIFrameElement: require("./generated/HTMLIFrameElement.js"),
HTMLEmbedElement: require("./generated/HTMLEmbedElement.js"),
HTMLObjectElement: require("./generated/HTMLObjectElement.js"),
HTMLParamElement: require("./generated/HTMLParamElement.js"),
HTMLVideoElement: require("./generated/HTMLVideoElement.js"),
HTMLAudioElement: require("./generated/HTMLAudioElement.js"),
HTMLTrackElement: require("./generated/HTMLTrackElement.js"),
SVGElement: require("./generated/SVGElement.js"),
SVGGraphicsElement: require("./generated/SVGGraphicsElement.js"),
SVGSVGElement: require("./generated/SVGSVGElement.js"),
SVGTitleElement: require("./generated/SVGTitleElement.js"),
SVGAnimatedString: require("./generated/SVGAnimatedString"),
SVGNumber: require("./generated/SVGNumber"),
SVGStringList: require("./generated/SVGStringList"),
Event: require("./generated/Event"),
CloseEvent: require("./generated/CloseEvent"),
CustomEvent: require("./generated/CustomEvent"),
MessageEvent: require("./generated/MessageEvent"),
ErrorEvent: require("./generated/ErrorEvent"),
HashChangeEvent: require("./generated/HashChangeEvent"),
PopStateEvent: require("./generated/PopStateEvent"),
StorageEvent: require("./generated/StorageEvent"),
ProgressEvent: require("./generated/ProgressEvent"),
PageTransitionEvent: require("./generated/PageTransitionEvent"),
UIEvent: require("./generated/UIEvent"),
FocusEvent: require("./generated/FocusEvent"),
InputEvent: require("./generated/InputEvent"),
MouseEvent: require("./generated/MouseEvent"),
KeyboardEvent: require("./generated/KeyboardEvent"),
TouchEvent: require("./generated/TouchEvent"),
CompositionEvent: require("./generated/CompositionEvent"),
WheelEvent: require("./generated/WheelEvent"),
BarProp: require("./generated/BarProp"),
External: require("./generated/External"),
Location: require("./generated/Location"),
History: require("./generated/History"),
Screen: require("./generated/Screen"),
Performance: require("./generated/Performance"),
Navigator: require("./generated/Navigator"),
PluginArray: require("./generated/PluginArray"),
MimeTypeArray: require("./generated/MimeTypeArray"),
Plugin: require("./generated/Plugin"),
MimeType: require("./generated/MimeType"),
FileReader: require("./generated/FileReader"),
Blob: require("./generated/Blob"),
File: require("./generated/File"),
FileList: require("./generated/FileList"),
ValidityState: require("./generated/ValidityState"),
DOMParser: require("./generated/DOMParser"),
XMLSerializer: require("./generated/XMLSerializer"),
FormData: require("./generated/FormData"),
XMLHttpRequestEventTarget: require("./generated/XMLHttpRequestEventTarget"),
XMLHttpRequestUpload: require("./generated/XMLHttpRequestUpload"),
XMLHttpRequest: require("./generated/XMLHttpRequest"),
WebSocket: require("./generated/WebSocket"),
NodeFilter: require("./generated/NodeFilter"),
NodeIterator: require("./generated/NodeIterator"),
TreeWalker: require("./generated/TreeWalker"),
AbstractRange: require("./generated/AbstractRange"),
Range: require("./generated/Range"),
StaticRange: require("./generated/StaticRange"),
Selection: require("./generated/Selection"),
Storage: require("./generated/Storage"),
CustomElementRegistry: require("./generated/CustomElementRegistry"),
ShadowRoot: require("./generated/ShadowRoot"),
MutationObserver: require("./generated/MutationObserver"),
MutationRecord: require("./generated/MutationRecord"),
Headers: require("./generated/Headers"),
AbortController: require("./generated/AbortController"),
AbortSignal: require("./generated/AbortSignal")
};
function install(window, name, interfaceConstructor) {
Object.defineProperty(window, name, {
configurable: true,
writable: true,
value: interfaceConstructor
});
}
exports.installInterfaces = (window, globalNames) => {
// Install generated interface.
for (const generatedInterface of Object.values(generatedInterfaces)) {
generatedInterface.install(window, globalNames);
}
// Install legacy HTMLDocument interface
// https://html.spec.whatwg.org/#htmldocument
install(window, "HTMLDocument", window.Document);
// These need to be cleaned up...
style.addToCore(window);
xpath(window);
};
// Returns an interface webidl2js wrapper given its an interface name.
exports.getInterfaceWrapper = name => {
return generatedInterfaces[name];
};