Fix #21235: add global types to DOMWindow interface

TypeScript team is figuring out how to expose these types on their `Window` interface, which `DOMWindow` extends (discussion [here](https://github.com/Microsoft/TypeScript/issues/19816)). In the meantime, this workaround will ensure that jsdom code compiles.

Some types are not defined even globally by TypeScript. These have been commented out in the `DOMWindow` interface, but are still valid properties in jsdom. If someone tries to use these properties, their code will still not compile.
This commit is contained in:
Kevin Snyder
2017-11-07 22:59:58 -08:00
parent e5620215b5
commit 557e9ce971

148
types/jsdom/index.d.ts vendored
View File

@@ -103,7 +103,153 @@ export type ConstructorOptions = Options & {
contentType?: string;
};
export interface DOMWindow extends Window { eval(script: string): void; }
export interface DOMWindow extends Window {
eval(script: string): void;
/* node_modules/jsdom/living/index.js */
DOMException: typeof DOMException;
Attr: typeof Attr;
Node: typeof Node;
Element: typeof Element;
DocumentFragment: typeof DocumentFragment;
Document: typeof Document;
HTMLDocument: typeof HTMLDocument;
XMLDocument: typeof XMLDocument;
CharacterData: typeof CharacterData;
Text: typeof Text;
CDATASection: typeof CDATASection;
ProcessingInstruction: typeof ProcessingInstruction;
Comment: typeof Comment;
DocumentType: typeof DocumentType;
DOMImplementation: typeof DOMImplementation;
NodeList: typeof NodeList;
HTMLCollection: typeof HTMLCollection;
HTMLOptionsCollection: typeof HTMLOptionsCollection;
DOMStringMap: typeof DOMStringMap;
DOMTokenList: typeof DOMTokenList;
Event: typeof Event;
CustomEvent: typeof CustomEvent;
MessageEvent: typeof MessageEvent;
ErrorEvent: typeof ErrorEvent;
HashChangeEvent: typeof HashChangeEvent;
FocusEvent: typeof FocusEvent;
PopStateEvent: typeof PopStateEvent;
UIEvent: typeof UIEvent;
MouseEvent: typeof MouseEvent;
KeyboardEvent: typeof KeyboardEvent;
TouchEvent: typeof TouchEvent;
ProgressEvent: typeof ProgressEvent;
CompositionEvent: typeof CompositionEvent;
WheelEvent: typeof WheelEvent;
EventTarget: typeof EventTarget;
Location: typeof Location;
History: typeof History;
Blob: typeof Blob;
File: typeof File;
FileList: typeof FileList;
DOMParser: typeof DOMParser;
FormData: typeof FormData;
XMLHttpRequestEventTarget: XMLHttpRequestEventTarget;
XMLHttpRequestUpload: typeof XMLHttpRequestUpload;
NodeIterator: typeof NodeIterator;
TreeWalker: typeof TreeWalker;
NamedNodeMap: typeof NamedNodeMap;
URL: typeof URL;
URLSearchParams: typeof URLSearchParams;
/* node_modules/jsdom/living/register-elements.js */
HTMLElement: typeof HTMLElement;
HTMLAnchorElement: typeof HTMLAnchorElement;
HTMLAppletElement: typeof HTMLAppletElement;
HTMLAreaElement: typeof HTMLAreaElement;
HTMLAudioElement: typeof HTMLAudioElement;
HTMLBaseElement: typeof HTMLBaseElement;
HTMLBodyElement: typeof HTMLBodyElement;
HTMLBRElement: typeof HTMLBRElement;
HTMLButtonElement: typeof HTMLButtonElement;
HTMLCanvasElement: typeof HTMLCanvasElement;
HTMLDataElement: typeof HTMLDataElement;
HTMLDataListElement: typeof HTMLDataListElement;
// HTMLDetailsElement: typeof HTMLDetailsElement;
// HTMLDialogElement: typeof HTMLDialogElement;
HTMLDirectoryElement: typeof HTMLDirectoryElement;
HTMLDivElement: typeof HTMLDivElement;
HTMLDListElement: typeof HTMLDListElement;
HTMLEmbedElement: typeof HTMLEmbedElement;
HTMLFieldSetElement: typeof HTMLFieldSetElement;
HTMLFontElement: typeof HTMLFontElement;
HTMLFormElement: typeof HTMLFormElement;
HTMLFrameElement: typeof HTMLFrameElement;
HTMLFrameSetElement: typeof HTMLFrameSetElement;
HTMLHeadingElement: typeof HTMLHeadingElement;
HTMLHeadElement: typeof HTMLHeadElement;
HTMLHRElement: typeof HTMLHRElement;
HTMLHtmlElement: typeof HTMLHtmlElement;
HTMLIFrameElement: typeof HTMLIFrameElement;
HTMLImageElement: typeof HTMLImageElement;
HTMLInputElement: typeof HTMLInputElement;
HTMLLabelElement: typeof HTMLLabelElement;
HTMLLegendElement: typeof HTMLLegendElement;
HTMLLIElement: typeof HTMLLIElement;
HTMLLinkElement: typeof HTMLLinkElement;
HTMLMapElement: typeof HTMLMapElement;
HTMLMarqueeElement: typeof HTMLMarqueeElement;
HTMLMediaElement: typeof HTMLMediaElement;
HTMLMenuElement: typeof HTMLMenuElement;
HTMLMetaElement: typeof HTMLMetaElement;
HTMLMeterElement: typeof HTMLMeterElement;
HTMLModElement: typeof HTMLModElement;
HTMLObjectElement: typeof HTMLObjectElement;
HTMLOListElement: typeof HTMLOListElement;
HTMLOptGroupElement: typeof HTMLOptGroupElement;
HTMLOptionElement: typeof HTMLOptionElement;
HTMLOutputElement: typeof HTMLOutputElement;
HTMLParagraphElement: typeof HTMLParagraphElement;
HTMLParamElement: typeof HTMLParamElement;
HTMLPictureElement: typeof HTMLPictureElement;
HTMLPreElement: typeof HTMLPreElement;
HTMLProgressElement: typeof HTMLProgressElement;
HTMLQuoteElement: typeof HTMLQuoteElement;
HTMLScriptElement: typeof HTMLScriptElement;
HTMLSelectElement: typeof HTMLSelectElement;
HTMLSourceElement: typeof HTMLSourceElement;
HTMLSpanElement: typeof HTMLSpanElement;
HTMLStyleElement: typeof HTMLStyleElement;
HTMLTableCaptionElement: typeof HTMLTableCaptionElement;
HTMLTableCellElement: typeof HTMLTableCellElement;
HTMLTableColElement: typeof HTMLTableColElement;
HTMLTableElement: typeof HTMLTableElement;
HTMLTimeElement: typeof HTMLTimeElement;
HTMLTitleElement: typeof HTMLTitleElement;
HTMLTableRowElement: typeof HTMLTableRowElement;
HTMLTableSectionElement: typeof HTMLTableSectionElement;
HTMLTemplateElement: typeof HTMLTemplateElement;
HTMLTextAreaElement: typeof HTMLTextAreaElement;
HTMLTrackElement: typeof HTMLTrackElement;
HTMLUListElement: typeof HTMLUListElement;
HTMLUnknownElement: typeof HTMLUnknownElement;
HTMLVideoElement: typeof HTMLVideoElement;
/* node_modules/jsdom/level2/style.js */
StyleSheet: typeof StyleSheet;
MediaList: typeof MediaList;
CSSStyleSheet: typeof CSSStyleSheet;
CSSRule: typeof CSSRule;
CSSStyleRule: typeof CSSStyleRule;
CSSMediaRule: typeof CSSMediaRule;
CSSImportRule: typeof CSSImportRule;
CSSStyleDeclaration: typeof CSSStyleDeclaration;
StyleSheetList: typeof StyleSheetList;
/* node_modules/jsdom/level3/xpath.js */
// XPathException: typeof XPathException;
XPathExpression: typeof XPathExpression;
XPathResult: typeof XPathResult;
XPathEvaluator: typeof XPathEvaluator;
/* node_modules/jsdom/living/node-filter.js */
NodeFilter: typeof NodeFilter;
}
export type BinaryData = ArrayBuffer | DataView | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;