happy-dom 2.53.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of happy-dom might be problematic. Click here for more details.

Files changed (303) hide show
  1. package/README.md +26 -6
  2. package/lib/async-task-manager/AsyncTaskManager.js +34 -78
  3. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
  4. package/lib/attribute/Attr.js +19 -28
  5. package/lib/attribute/Attr.js.map +1 -1
  6. package/lib/config/ElementTag.d.ts +2 -1
  7. package/lib/config/ElementTag.js +16 -15
  8. package/lib/config/ElementTag.js.map +1 -1
  9. package/lib/config/NonImplemenetedElementClasses.js +0 -1
  10. package/lib/config/NonImplemenetedElementClasses.js.map +1 -1
  11. package/lib/cookie/CookieUtility.js +21 -26
  12. package/lib/cookie/CookieUtility.js.map +1 -1
  13. package/lib/css/CSS.js +12 -18
  14. package/lib/css/CSS.js.map +1 -1
  15. package/lib/css/CSSParser.js +29 -33
  16. package/lib/css/CSSParser.js.map +1 -1
  17. package/lib/css/CSSRule.js +24 -29
  18. package/lib/css/CSSRule.js.map +1 -1
  19. package/lib/css/CSSStyleDeclaration.js +4516 -6005
  20. package/lib/css/CSSStyleDeclaration.js.map +1 -1
  21. package/lib/css/CSSStyleSheet.js +17 -59
  22. package/lib/css/CSSStyleSheet.js.map +1 -1
  23. package/lib/css/CSSUnitValue.js +4 -5
  24. package/lib/css/CSSUnitValue.js.map +1 -1
  25. package/lib/css/MediaList.js +23 -28
  26. package/lib/css/MediaList.js.map +1 -1
  27. package/lib/css/rules/CSSFontFaceRule.js +6 -24
  28. package/lib/css/rules/CSSFontFaceRule.js.map +1 -1
  29. package/lib/css/rules/CSSKeyframeRule.js +14 -36
  30. package/lib/css/rules/CSSKeyframeRule.js.map +1 -1
  31. package/lib/css/rules/CSSKeyframesRule.js +31 -54
  32. package/lib/css/rules/CSSKeyframesRule.js.map +1 -1
  33. package/lib/css/rules/CSSMediaRule.js +29 -56
  34. package/lib/css/rules/CSSMediaRule.js.map +1 -1
  35. package/lib/css/rules/CSSStyleRule.js +16 -38
  36. package/lib/css/rules/CSSStyleRule.js.map +1 -1
  37. package/lib/custom-element/CustomElementRegistry.js +21 -24
  38. package/lib/custom-element/CustomElementRegistry.js.map +1 -1
  39. package/lib/dom-implementation/DOMImplementation.js +12 -13
  40. package/lib/dom-implementation/DOMImplementation.js.map +1 -1
  41. package/lib/dom-parser/DOMParser.js +29 -35
  42. package/lib/dom-parser/DOMParser.js.map +1 -1
  43. package/lib/dom-token-list/DOMTokenList.js +64 -79
  44. package/lib/dom-token-list/DOMTokenList.js.map +1 -1
  45. package/lib/event/DataTransfer.js +4 -5
  46. package/lib/event/DataTransfer.js.map +1 -1
  47. package/lib/event/DataTransferItem.js +7 -8
  48. package/lib/event/DataTransferItem.js.map +1 -1
  49. package/lib/event/DataTransferItemList.js +10 -11
  50. package/lib/event/DataTransferItemList.js.map +1 -1
  51. package/lib/event/Event.js +11 -15
  52. package/lib/event/Event.js.map +1 -1
  53. package/lib/event/EventTarget.js +14 -16
  54. package/lib/event/EventTarget.js.map +1 -1
  55. package/lib/event/IUIEventInit.d.ts +2 -2
  56. package/lib/event/UIEvent.d.ts +2 -2
  57. package/lib/event/UIEvent.js +25 -46
  58. package/lib/event/UIEvent.js.map +1 -1
  59. package/lib/event/events/AnimationEvent.js +11 -29
  60. package/lib/event/events/AnimationEvent.js.map +1 -1
  61. package/lib/event/events/CustomEvent.js +9 -31
  62. package/lib/event/events/CustomEvent.js.map +1 -1
  63. package/lib/event/events/ErrorEvent.js +15 -34
  64. package/lib/event/events/ErrorEvent.js.map +1 -1
  65. package/lib/event/events/FocusEvent.js +7 -26
  66. package/lib/event/events/FocusEvent.js.map +1 -1
  67. package/lib/event/events/InputEvent.js +13 -32
  68. package/lib/event/events/InputEvent.js.map +1 -1
  69. package/lib/event/events/KeyboardEvent.js +27 -46
  70. package/lib/event/events/KeyboardEvent.js.map +1 -1
  71. package/lib/event/events/MouseEvent.js +33 -52
  72. package/lib/event/events/MouseEvent.js.map +1 -1
  73. package/lib/event/events/PointerEvent.js +25 -44
  74. package/lib/event/events/PointerEvent.js.map +1 -1
  75. package/lib/event/events/ProgressEvent.js +11 -30
  76. package/lib/event/events/ProgressEvent.js.map +1 -1
  77. package/lib/event/events/StorageEvent.js +13 -32
  78. package/lib/event/events/StorageEvent.js.map +1 -1
  79. package/lib/event/events/WheelEvent.js +16 -35
  80. package/lib/event/events/WheelEvent.js.map +1 -1
  81. package/lib/exception/DOMException.js +5 -24
  82. package/lib/exception/DOMException.js.map +1 -1
  83. package/lib/fetch/FetchHandler.js +18 -22
  84. package/lib/fetch/FetchHandler.js.map +1 -1
  85. package/lib/fetch/Headers.js +3 -23
  86. package/lib/fetch/Headers.js.map +1 -1
  87. package/lib/fetch/Request.js +61 -81
  88. package/lib/fetch/Request.js.map +1 -1
  89. package/lib/fetch/ResourceFetchHandler.js +18 -67
  90. package/lib/fetch/ResourceFetchHandler.js.map +1 -1
  91. package/lib/fetch/Response.js +61 -81
  92. package/lib/fetch/Response.js.map +1 -1
  93. package/lib/file/Blob.js +29 -78
  94. package/lib/file/Blob.js.map +1 -1
  95. package/lib/file/File.js +9 -27
  96. package/lib/file/File.js.map +1 -1
  97. package/lib/file/FileReader.js +57 -78
  98. package/lib/file/FileReader.js.map +1 -1
  99. package/lib/history/History.js +32 -37
  100. package/lib/history/History.js.map +1 -1
  101. package/lib/index.d.ts +5 -3
  102. package/lib/index.js +71 -69
  103. package/lib/index.js.map +1 -1
  104. package/lib/location/Location.js +11 -28
  105. package/lib/location/Location.js.map +1 -1
  106. package/lib/location/RelativeURL.js +5 -8
  107. package/lib/location/RelativeURL.js.map +1 -1
  108. package/lib/location/URL.js +46 -59
  109. package/lib/location/URL.js.map +1 -1
  110. package/lib/match-media/MediaQueryList.js +28 -54
  111. package/lib/match-media/MediaQueryList.js.map +1 -1
  112. package/lib/mutation-observer/MutationListener.js +3 -4
  113. package/lib/mutation-observer/MutationListener.js.map +1 -1
  114. package/lib/mutation-observer/MutationObserver.js +12 -13
  115. package/lib/mutation-observer/MutationObserver.js.map +1 -1
  116. package/lib/mutation-observer/MutationRecord.js +3 -4
  117. package/lib/mutation-observer/MutationRecord.js.map +1 -1
  118. package/lib/navigator/MimeType.js +5 -6
  119. package/lib/navigator/MimeType.js.map +1 -1
  120. package/lib/navigator/MimeTypeArray.js +10 -11
  121. package/lib/navigator/MimeTypeArray.js.map +1 -1
  122. package/lib/navigator/Navigator.js +7 -8
  123. package/lib/navigator/Navigator.js.map +1 -1
  124. package/lib/navigator/Plugin.js +10 -11
  125. package/lib/navigator/Plugin.js.map +1 -1
  126. package/lib/navigator/PluginArray.js +12 -13
  127. package/lib/navigator/PluginArray.js.map +1 -1
  128. package/lib/nodes/character-data/CharacterData.js +119 -184
  129. package/lib/nodes/character-data/CharacterData.js.map +1 -1
  130. package/lib/nodes/character-data/CharacterDataUtility.js +12 -15
  131. package/lib/nodes/character-data/CharacterDataUtility.js.map +1 -1
  132. package/lib/nodes/child-node/ChildNodeUtility.js +24 -45
  133. package/lib/nodes/child-node/ChildNodeUtility.js.map +1 -1
  134. package/lib/nodes/child-node/NonDocumentChildNodeUtility.js +9 -12
  135. package/lib/nodes/child-node/NonDocumentChildNodeUtility.js.map +1 -1
  136. package/lib/nodes/comment/Comment.js +20 -43
  137. package/lib/nodes/comment/Comment.js.map +1 -1
  138. package/lib/nodes/document/Document.d.ts +3 -3
  139. package/lib/nodes/document/Document.js +334 -461
  140. package/lib/nodes/document/Document.js.map +1 -1
  141. package/lib/nodes/document/DocumentReadyStateManager.js +16 -19
  142. package/lib/nodes/document/DocumentReadyStateManager.js.map +1 -1
  143. package/lib/nodes/document/IDocument.d.ts +2 -2
  144. package/lib/nodes/document-fragment/DocumentFragment.js +93 -153
  145. package/lib/nodes/document-fragment/DocumentFragment.js.map +1 -1
  146. package/lib/nodes/document-type/DocumentType.js +22 -45
  147. package/lib/nodes/document-type/DocumentType.js.map +1 -1
  148. package/lib/nodes/element/DOMRect.js +3 -4
  149. package/lib/nodes/element/DOMRect.js.map +1 -1
  150. package/lib/nodes/element/Element.js +367 -496
  151. package/lib/nodes/element/Element.js.map +1 -1
  152. package/lib/nodes/element/HTMLCollection.js +4 -24
  153. package/lib/nodes/element/HTMLCollection.js.map +1 -1
  154. package/lib/nodes/element/HTMLCollectionFactory.js +6 -9
  155. package/lib/nodes/element/HTMLCollectionFactory.js.map +1 -1
  156. package/lib/nodes/element/Range.js +89 -114
  157. package/lib/nodes/element/Range.js.map +1 -1
  158. package/lib/nodes/html-base-element/HTMLBaseElement.d.ts +42 -0
  159. package/lib/nodes/html-base-element/HTMLBaseElement.js +62 -0
  160. package/lib/nodes/html-base-element/HTMLBaseElement.js.map +1 -0
  161. package/lib/nodes/html-base-element/IHTMLBaseElement.d.ts +19 -0
  162. package/lib/nodes/html-base-element/IHTMLBaseElement.js +3 -0
  163. package/lib/nodes/html-base-element/IHTMLBaseElement.js.map +1 -0
  164. package/lib/nodes/html-document/HTMLDocument.js +3 -23
  165. package/lib/nodes/html-document/HTMLDocument.js.map +1 -1
  166. package/lib/nodes/html-element/DatasetUtility.js +9 -12
  167. package/lib/nodes/html-element/DatasetUtility.js.map +1 -1
  168. package/lib/nodes/html-element/HTMLElement.js +232 -290
  169. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  170. package/lib/nodes/html-form-element/HTMLFormElement.js +170 -235
  171. package/lib/nodes/html-form-element/HTMLFormElement.js.map +1 -1
  172. package/lib/nodes/html-image-element/HTMLImageElement.js +178 -237
  173. package/lib/nodes/html-image-element/HTMLImageElement.js.map +1 -1
  174. package/lib/nodes/html-image-element/Image.js +7 -27
  175. package/lib/nodes/html-image-element/Image.js.map +1 -1
  176. package/lib/nodes/html-input-element/HTMLInputElement.d.ts +17 -6
  177. package/lib/nodes/html-input-element/HTMLInputElement.js +719 -866
  178. package/lib/nodes/html-input-element/HTMLInputElement.js.map +1 -1
  179. package/lib/nodes/html-input-element/HTMLInputElementValueSanitizer.js +9 -12
  180. package/lib/nodes/html-input-element/HTMLInputElementValueSanitizer.js.map +1 -1
  181. package/lib/nodes/html-input-element/HTMLInputElementValueStepping.js +5 -8
  182. package/lib/nodes/html-input-element/HTMLInputElementValueStepping.js.map +1 -1
  183. package/lib/nodes/html-input-element/IHTMLInputElement.d.ts +11 -1
  184. package/lib/nodes/html-input-element/ValidityState.js +47 -69
  185. package/lib/nodes/html-input-element/ValidityState.js.map +1 -1
  186. package/lib/nodes/html-label-element/HTMLLabelElement.js +53 -87
  187. package/lib/nodes/html-label-element/HTMLLabelElement.js.map +1 -1
  188. package/lib/nodes/html-link-element/HTMLLinkElement.js +197 -252
  189. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  190. package/lib/nodes/html-meta-element/HTMLMetaElement.js +66 -102
  191. package/lib/nodes/html-meta-element/HTMLMetaElement.js.map +1 -1
  192. package/lib/nodes/html-script-element/HTMLScriptElement.js +145 -193
  193. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  194. package/lib/nodes/html-script-element/ScriptUtility.js +58 -112
  195. package/lib/nodes/html-script-element/ScriptUtility.js.map +1 -1
  196. package/lib/nodes/html-slot-element/HTMLSlotElement.js +33 -65
  197. package/lib/nodes/html-slot-element/HTMLSlotElement.js.map +1 -1
  198. package/lib/nodes/html-style-element/HTMLStyleElement.js +75 -109
  199. package/lib/nodes/html-style-element/HTMLStyleElement.js.map +1 -1
  200. package/lib/nodes/html-template-element/HTMLTemplateElement.js +60 -99
  201. package/lib/nodes/html-template-element/HTMLTemplateElement.js.map +1 -1
  202. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js +349 -444
  203. package/lib/nodes/html-text-area-element/HTMLTextAreaElement.js.map +1 -1
  204. package/lib/nodes/html-unknown-element/HTMLUnknownElement.js +17 -37
  205. package/lib/nodes/html-unknown-element/HTMLUnknownElement.js.map +1 -1
  206. package/lib/nodes/node/INode.d.ts +1 -0
  207. package/lib/nodes/node/Node.d.ts +6 -0
  208. package/lib/nodes/node/Node.js +193 -244
  209. package/lib/nodes/node/Node.js.map +1 -1
  210. package/lib/nodes/node/NodeList.js +4 -24
  211. package/lib/nodes/node/NodeList.js.map +1 -1
  212. package/lib/nodes/node/NodeListFactory.js +6 -9
  213. package/lib/nodes/node/NodeListFactory.js.map +1 -1
  214. package/lib/nodes/parent-node/ParentNodeUtility.js +43 -78
  215. package/lib/nodes/parent-node/ParentNodeUtility.js.map +1 -1
  216. package/lib/nodes/shadow-root/ShadowRoot.js +53 -83
  217. package/lib/nodes/shadow-root/ShadowRoot.js.map +1 -1
  218. package/lib/nodes/svg-document/SVGDocument.js +3 -23
  219. package/lib/nodes/svg-document/SVGDocument.js.map +1 -1
  220. package/lib/nodes/svg-element/DOMMatrix.js +3 -4
  221. package/lib/nodes/svg-element/DOMMatrix.js.map +1 -1
  222. package/lib/nodes/svg-element/SVGAngle.js +10 -11
  223. package/lib/nodes/svg-element/SVGAngle.js.map +1 -1
  224. package/lib/nodes/svg-element/SVGAnimatedRect.js +4 -5
  225. package/lib/nodes/svg-element/SVGAnimatedRect.js.map +1 -1
  226. package/lib/nodes/svg-element/SVGElement.js +58 -93
  227. package/lib/nodes/svg-element/SVGElement.js.map +1 -1
  228. package/lib/nodes/svg-element/SVGGraphicsElement.js +14 -32
  229. package/lib/nodes/svg-element/SVGGraphicsElement.js.map +1 -1
  230. package/lib/nodes/svg-element/SVGLength.js +16 -17
  231. package/lib/nodes/svg-element/SVGLength.js.map +1 -1
  232. package/lib/nodes/svg-element/SVGNumber.js +3 -4
  233. package/lib/nodes/svg-element/SVGNumber.js.map +1 -1
  234. package/lib/nodes/svg-element/SVGPoint.js +3 -4
  235. package/lib/nodes/svg-element/SVGPoint.js.map +1 -1
  236. package/lib/nodes/svg-element/SVGRect.js +3 -4
  237. package/lib/nodes/svg-element/SVGRect.js.map +1 -1
  238. package/lib/nodes/svg-element/SVGSVGElement.js +187 -248
  239. package/lib/nodes/svg-element/SVGSVGElement.js.map +1 -1
  240. package/lib/nodes/svg-element/SVGTransform.js +16 -17
  241. package/lib/nodes/svg-element/SVGTransform.js.map +1 -1
  242. package/lib/nodes/text/Text.js +20 -43
  243. package/lib/nodes/text/Text.js.map +1 -1
  244. package/lib/nodes/xml-document/XMLDocument.js +3 -23
  245. package/lib/nodes/xml-document/XMLDocument.js.map +1 -1
  246. package/lib/query-selector/QuerySelector.js +36 -44
  247. package/lib/query-selector/QuerySelector.js.map +1 -1
  248. package/lib/query-selector/SelectorItem.js +62 -66
  249. package/lib/query-selector/SelectorItem.js.map +1 -1
  250. package/lib/resize-observer/ResizeObserver.js +8 -11
  251. package/lib/resize-observer/ResizeObserver.js.map +1 -1
  252. package/lib/screen/Screen.js +3 -4
  253. package/lib/screen/Screen.js.map +1 -1
  254. package/lib/selection/Selection.js +29 -30
  255. package/lib/selection/Selection.js.map +1 -1
  256. package/lib/storage/Storage.js +22 -27
  257. package/lib/storage/Storage.js.map +1 -1
  258. package/lib/tree-walker/NodeFilterMask.js +1 -1
  259. package/lib/tree-walker/NodeFilterMask.js.map +1 -1
  260. package/lib/tree-walker/TreeWalker.js +30 -33
  261. package/lib/tree-walker/TreeWalker.js.map +1 -1
  262. package/lib/window/GlobalWindow.d.ts +84 -0
  263. package/lib/window/GlobalWindow.js +90 -0
  264. package/lib/window/GlobalWindow.js.map +1 -0
  265. package/lib/window/IWindow.d.ts +31 -18
  266. package/lib/window/VMGlobalPropertyScript.d.ts +2 -0
  267. package/lib/window/VMGlobalPropertyScript.js +65 -0
  268. package/lib/window/VMGlobalPropertyScript.js.map +1 -0
  269. package/lib/window/Window.d.ts +72 -105
  270. package/lib/window/Window.js +269 -489
  271. package/lib/window/Window.js.map +1 -1
  272. package/lib/xml-parser/XMLParser.js +65 -71
  273. package/lib/xml-parser/XMLParser.js.map +1 -1
  274. package/lib/xml-serializer/XMLSerializer.js +30 -37
  275. package/lib/xml-serializer/XMLSerializer.js.map +1 -1
  276. package/package.json +6 -7
  277. package/src/config/ElementTag.ts +2 -1
  278. package/src/config/NonImplemenetedElementClasses.ts +0 -1
  279. package/src/dom-parser/DOMParser.ts +4 -5
  280. package/src/event/IUIEventInit.ts +2 -2
  281. package/src/event/UIEvent.ts +2 -2
  282. package/src/fetch/FetchHandler.ts +3 -3
  283. package/src/fetch/ResourceFetchHandler.ts +3 -3
  284. package/src/index.ts +7 -3
  285. package/src/nodes/document/Document.ts +4 -4
  286. package/src/nodes/document/IDocument.ts +2 -2
  287. package/src/nodes/html-base-element/HTMLBaseElement.ts +61 -0
  288. package/src/nodes/html-base-element/IHTMLBaseElement.ts +21 -0
  289. package/src/nodes/html-input-element/HTMLInputElement.ts +37 -12
  290. package/src/nodes/html-input-element/IHTMLInputElement.ts +13 -1
  291. package/src/nodes/html-link-element/HTMLLinkElement.ts +8 -2
  292. package/src/nodes/html-script-element/ScriptUtility.ts +4 -4
  293. package/src/nodes/node/INode.ts +1 -0
  294. package/src/nodes/node/Node.ts +14 -0
  295. package/src/window/GlobalWindow.ts +82 -0
  296. package/src/window/IWindow.ts +26 -12
  297. package/src/window/VMGlobalPropertyScript.ts +62 -0
  298. package/src/window/Window.ts +106 -173
  299. package/tsconfig.json +1 -1
  300. package/lib/window/AsyncWindow.d.ts +0 -10
  301. package/lib/window/AsyncWindow.js +0 -38
  302. package/lib/window/AsyncWindow.js.map +0 -1
  303. package/src/window/AsyncWindow.ts +0 -17
@@ -1,19 +1,4 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
3
  if (k2 === undefined) k2 = k;
19
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -37,490 +22,296 @@ var __importStar = (this && this.__importStar) || function (mod) {
37
22
  __setModuleDefault(result, mod);
38
23
  return result;
39
24
  };
40
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
41
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
42
- return new (P || (P = Promise))(function (resolve, reject) {
43
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
44
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
45
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
46
- step((generator = generator.apply(thisArg, _arguments || [])).next());
47
- });
48
- };
49
- var __generator = (this && this.__generator) || function (thisArg, body) {
50
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
51
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
52
- function verb(n) { return function (v) { return step([n, v]); }; }
53
- function step(op) {
54
- if (f) throw new TypeError("Generator is already executing.");
55
- while (_) try {
56
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
57
- if (y = 0, t) op = [op[0] & 2, t.value];
58
- switch (op[0]) {
59
- case 0: case 1: t = op; break;
60
- case 4: _.label++; return { value: op[1], done: false };
61
- case 5: _.label++; y = op[1]; op = [0]; continue;
62
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
63
- default:
64
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
65
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
66
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
67
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
68
- if (t[2]) _.ops.pop();
69
- _.trys.pop(); continue;
70
- }
71
- op = body.call(thisArg, _);
72
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
73
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
74
- }
75
- };
76
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
77
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
78
27
  };
79
28
  Object.defineProperty(exports, "__esModule", { value: true });
80
- var CustomElementRegistry_1 = __importDefault(require("../custom-element/CustomElementRegistry"));
81
- var Document_1 = __importDefault(require("../nodes/document/Document"));
82
- var HTMLDocument_1 = __importDefault(require("../nodes/html-document/HTMLDocument"));
83
- var XMLDocument_1 = __importDefault(require("../nodes/xml-document/XMLDocument"));
84
- var SVGDocument_1 = __importDefault(require("../nodes/svg-document/SVGDocument"));
85
- var Node_1 = __importDefault(require("../nodes/node/Node"));
86
- var NodeFilter_1 = __importDefault(require("../tree-walker/NodeFilter"));
87
- var Text_1 = __importDefault(require("../nodes/text/Text"));
88
- var Comment_1 = __importDefault(require("../nodes/comment/Comment"));
89
- var ShadowRoot_1 = __importDefault(require("../nodes/shadow-root/ShadowRoot"));
90
- var Element_1 = __importDefault(require("../nodes/element/Element"));
91
- var HTMLTemplateElement_1 = __importDefault(require("../nodes/html-template-element/HTMLTemplateElement"));
92
- var HTMLFormElement_1 = __importDefault(require("../nodes/html-form-element/HTMLFormElement"));
93
- var HTMLElement_1 = __importDefault(require("../nodes/html-element/HTMLElement"));
94
- var HTMLUnknownElement_1 = __importDefault(require("../nodes/html-unknown-element/HTMLUnknownElement"));
95
- var HTMLInputElement_1 = __importDefault(require("../nodes/html-input-element/HTMLInputElement"));
96
- var HTMLTextAreaElement_1 = __importDefault(require("../nodes/html-text-area-element/HTMLTextAreaElement"));
97
- var HTMLLinkElement_1 = __importDefault(require("../nodes/html-link-element/HTMLLinkElement"));
98
- var HTMLStyleElement_1 = __importDefault(require("../nodes/html-style-element/HTMLStyleElement"));
99
- var HTMLSlotElement_1 = __importDefault(require("../nodes/html-slot-element/HTMLSlotElement"));
100
- var HTMLLabelElement_1 = __importDefault(require("../nodes/html-label-element/HTMLLabelElement"));
101
- var HTMLMetaElement_1 = __importDefault(require("../nodes/html-meta-element/HTMLMetaElement"));
102
- var SVGSVGElement_1 = __importDefault(require("../nodes/svg-element/SVGSVGElement"));
103
- var SVGElement_1 = __importDefault(require("../nodes/svg-element/SVGElement"));
104
- var HTMLScriptElement_1 = __importDefault(require("../nodes/html-script-element/HTMLScriptElement"));
105
- var HTMLImageElement_1 = __importDefault(require("../nodes/html-image-element/HTMLImageElement"));
106
- var Image_1 = __importDefault(require("../nodes/html-image-element/Image"));
107
- var DocumentFragment_1 = __importDefault(require("../nodes/document-fragment/DocumentFragment"));
108
- var CharacterData_1 = __importDefault(require("../nodes/character-data/CharacterData"));
109
- var TreeWalker_1 = __importDefault(require("../tree-walker/TreeWalker"));
110
- var Event_1 = __importDefault(require("../event/Event"));
111
- var CustomEvent_1 = __importDefault(require("../event/events/CustomEvent"));
112
- var AnimationEvent_1 = __importDefault(require("../event/events/AnimationEvent"));
113
- var KeyboardEvent_1 = __importDefault(require("../event/events/KeyboardEvent"));
114
- var ProgressEvent_1 = __importDefault(require("../event/events/ProgressEvent"));
115
- var EventTarget_1 = __importDefault(require("../event/EventTarget"));
116
- var URL_1 = __importDefault(require("../location/URL"));
117
- var Location_1 = __importDefault(require("../location/Location"));
118
- var NonImplementedEventTypes_1 = __importDefault(require("../event/NonImplementedEventTypes"));
119
- var MutationObserver_1 = __importDefault(require("../mutation-observer/MutationObserver"));
120
- var NonImplemenetedElementClasses_1 = __importDefault(require("../config/NonImplemenetedElementClasses"));
121
- var DOMParser_1 = __importDefault(require("../dom-parser/DOMParser"));
122
- var XMLSerializer_1 = __importDefault(require("../xml-serializer/XMLSerializer"));
123
- var ResizeObserver_1 = __importDefault(require("../resize-observer/ResizeObserver"));
124
- var Blob_1 = __importDefault(require("../file/Blob"));
125
- var File_1 = __importDefault(require("../file/File"));
126
- var DOMException_1 = __importDefault(require("../exception/DOMException"));
127
- var FileReader_1 = __importDefault(require("../file/FileReader"));
128
- var History_1 = __importDefault(require("../history/History"));
129
- var CSSStyleSheet_1 = __importDefault(require("../css/CSSStyleSheet"));
130
- var CSSStyleDeclaration_1 = __importDefault(require("../css/CSSStyleDeclaration"));
131
- var CSS_1 = __importDefault(require("../css/CSS"));
132
- var CSSUnitValue_1 = __importDefault(require("../css/CSSUnitValue"));
133
- var MouseEvent_1 = __importDefault(require("../event/events/MouseEvent"));
134
- var PointerEvent_1 = __importDefault(require("../event/events/PointerEvent"));
135
- var FocusEvent_1 = __importDefault(require("../event/events/FocusEvent"));
136
- var WheelEvent_1 = __importDefault(require("../event/events/WheelEvent"));
137
- var DataTransfer_1 = __importDefault(require("../event/DataTransfer"));
138
- var DataTransferItem_1 = __importDefault(require("../event/DataTransferItem"));
139
- var DataTransferItemList_1 = __importDefault(require("../event/DataTransferItemList"));
140
- var InputEvent_1 = __importDefault(require("../event/events/InputEvent"));
141
- var UIEvent_1 = __importDefault(require("../event/UIEvent"));
142
- var ErrorEvent_1 = __importDefault(require("../event/events/ErrorEvent"));
143
- var StorageEvent_1 = __importDefault(require("../event/events/StorageEvent"));
144
- var Screen_1 = __importDefault(require("../screen/Screen"));
145
- var AsyncTaskManager_1 = __importDefault(require("../async-task-manager/AsyncTaskManager"));
146
- var Storage_1 = __importDefault(require("../storage/Storage"));
147
- var HTMLCollection_1 = __importDefault(require("../nodes/element/HTMLCollection"));
148
- var NodeList_1 = __importDefault(require("../nodes/node/NodeList"));
149
- var MediaQueryList_1 = __importDefault(require("../match-media/MediaQueryList"));
150
- var Selection_1 = __importDefault(require("../selection/Selection"));
151
- var PerfHooks = __importStar(require("perf_hooks"));
152
- var Navigator_1 = __importDefault(require("../navigator/Navigator"));
153
- var MimeType_1 = __importDefault(require("../navigator/MimeType"));
154
- var MimeTypeArray_1 = __importDefault(require("../navigator/MimeTypeArray"));
155
- var Plugin_1 = __importDefault(require("../navigator/Plugin"));
156
- var PluginArray_1 = __importDefault(require("../navigator/PluginArray"));
157
- var FetchHandler_1 = __importDefault(require("../fetch/FetchHandler"));
158
- var url_1 = require("url");
29
+ const CustomElementRegistry_1 = __importDefault(require("../custom-element/CustomElementRegistry"));
30
+ const Document_1 = __importDefault(require("../nodes/document/Document"));
31
+ const HTMLDocument_1 = __importDefault(require("../nodes/html-document/HTMLDocument"));
32
+ const XMLDocument_1 = __importDefault(require("../nodes/xml-document/XMLDocument"));
33
+ const SVGDocument_1 = __importDefault(require("../nodes/svg-document/SVGDocument"));
34
+ const Node_1 = __importDefault(require("../nodes/node/Node"));
35
+ const NodeFilter_1 = __importDefault(require("../tree-walker/NodeFilter"));
36
+ const Text_1 = __importDefault(require("../nodes/text/Text"));
37
+ const Comment_1 = __importDefault(require("../nodes/comment/Comment"));
38
+ const ShadowRoot_1 = __importDefault(require("../nodes/shadow-root/ShadowRoot"));
39
+ const Element_1 = __importDefault(require("../nodes/element/Element"));
40
+ const HTMLTemplateElement_1 = __importDefault(require("../nodes/html-template-element/HTMLTemplateElement"));
41
+ const HTMLFormElement_1 = __importDefault(require("../nodes/html-form-element/HTMLFormElement"));
42
+ const HTMLElement_1 = __importDefault(require("../nodes/html-element/HTMLElement"));
43
+ const HTMLUnknownElement_1 = __importDefault(require("../nodes/html-unknown-element/HTMLUnknownElement"));
44
+ const HTMLInputElement_1 = __importDefault(require("../nodes/html-input-element/HTMLInputElement"));
45
+ const HTMLTextAreaElement_1 = __importDefault(require("../nodes/html-text-area-element/HTMLTextAreaElement"));
46
+ const HTMLLinkElement_1 = __importDefault(require("../nodes/html-link-element/HTMLLinkElement"));
47
+ const HTMLStyleElement_1 = __importDefault(require("../nodes/html-style-element/HTMLStyleElement"));
48
+ const HTMLSlotElement_1 = __importDefault(require("../nodes/html-slot-element/HTMLSlotElement"));
49
+ const HTMLLabelElement_1 = __importDefault(require("../nodes/html-label-element/HTMLLabelElement"));
50
+ const HTMLMetaElement_1 = __importDefault(require("../nodes/html-meta-element/HTMLMetaElement"));
51
+ const HTMLBaseElement_1 = __importDefault(require("../nodes/html-base-element/HTMLBaseElement"));
52
+ const SVGSVGElement_1 = __importDefault(require("../nodes/svg-element/SVGSVGElement"));
53
+ const SVGElement_1 = __importDefault(require("../nodes/svg-element/SVGElement"));
54
+ const HTMLScriptElement_1 = __importDefault(require("../nodes/html-script-element/HTMLScriptElement"));
55
+ const HTMLImageElement_1 = __importDefault(require("../nodes/html-image-element/HTMLImageElement"));
56
+ const Image_1 = __importDefault(require("../nodes/html-image-element/Image"));
57
+ const DocumentFragment_1 = __importDefault(require("../nodes/document-fragment/DocumentFragment"));
58
+ const CharacterData_1 = __importDefault(require("../nodes/character-data/CharacterData"));
59
+ const TreeWalker_1 = __importDefault(require("../tree-walker/TreeWalker"));
60
+ const Event_1 = __importDefault(require("../event/Event"));
61
+ const CustomEvent_1 = __importDefault(require("../event/events/CustomEvent"));
62
+ const AnimationEvent_1 = __importDefault(require("../event/events/AnimationEvent"));
63
+ const KeyboardEvent_1 = __importDefault(require("../event/events/KeyboardEvent"));
64
+ const ProgressEvent_1 = __importDefault(require("../event/events/ProgressEvent"));
65
+ const EventTarget_1 = __importDefault(require("../event/EventTarget"));
66
+ const URL_1 = __importDefault(require("../location/URL"));
67
+ const Location_1 = __importDefault(require("../location/Location"));
68
+ const NonImplementedEventTypes_1 = __importDefault(require("../event/NonImplementedEventTypes"));
69
+ const MutationObserver_1 = __importDefault(require("../mutation-observer/MutationObserver"));
70
+ const NonImplemenetedElementClasses_1 = __importDefault(require("../config/NonImplemenetedElementClasses"));
71
+ const DOMParser_1 = __importDefault(require("../dom-parser/DOMParser"));
72
+ const XMLSerializer_1 = __importDefault(require("../xml-serializer/XMLSerializer"));
73
+ const ResizeObserver_1 = __importDefault(require("../resize-observer/ResizeObserver"));
74
+ const Blob_1 = __importDefault(require("../file/Blob"));
75
+ const File_1 = __importDefault(require("../file/File"));
76
+ const DOMException_1 = __importDefault(require("../exception/DOMException"));
77
+ const FileReader_1 = __importDefault(require("../file/FileReader"));
78
+ const History_1 = __importDefault(require("../history/History"));
79
+ const CSSStyleSheet_1 = __importDefault(require("../css/CSSStyleSheet"));
80
+ const CSSStyleDeclaration_1 = __importDefault(require("../css/CSSStyleDeclaration"));
81
+ const CSS_1 = __importDefault(require("../css/CSS"));
82
+ const CSSUnitValue_1 = __importDefault(require("../css/CSSUnitValue"));
83
+ const MouseEvent_1 = __importDefault(require("../event/events/MouseEvent"));
84
+ const PointerEvent_1 = __importDefault(require("../event/events/PointerEvent"));
85
+ const FocusEvent_1 = __importDefault(require("../event/events/FocusEvent"));
86
+ const WheelEvent_1 = __importDefault(require("../event/events/WheelEvent"));
87
+ const DataTransfer_1 = __importDefault(require("../event/DataTransfer"));
88
+ const DataTransferItem_1 = __importDefault(require("../event/DataTransferItem"));
89
+ const DataTransferItemList_1 = __importDefault(require("../event/DataTransferItemList"));
90
+ const InputEvent_1 = __importDefault(require("../event/events/InputEvent"));
91
+ const UIEvent_1 = __importDefault(require("../event/UIEvent"));
92
+ const ErrorEvent_1 = __importDefault(require("../event/events/ErrorEvent"));
93
+ const StorageEvent_1 = __importDefault(require("../event/events/StorageEvent"));
94
+ const Screen_1 = __importDefault(require("../screen/Screen"));
95
+ const AsyncTaskManager_1 = __importDefault(require("../async-task-manager/AsyncTaskManager"));
96
+ const Headers_1 = __importDefault(require("../fetch/Headers"));
97
+ const Request_1 = __importDefault(require("../fetch/Request"));
98
+ const Response_1 = __importDefault(require("../fetch/Response"));
99
+ const Storage_1 = __importDefault(require("../storage/Storage"));
100
+ const HTMLCollection_1 = __importDefault(require("../nodes/element/HTMLCollection"));
101
+ const NodeList_1 = __importDefault(require("../nodes/node/NodeList"));
102
+ const MediaQueryList_1 = __importDefault(require("../match-media/MediaQueryList"));
103
+ const Selection_1 = __importDefault(require("../selection/Selection"));
104
+ const Navigator_1 = __importDefault(require("../navigator/Navigator"));
105
+ const MimeType_1 = __importDefault(require("../navigator/MimeType"));
106
+ const MimeTypeArray_1 = __importDefault(require("../navigator/MimeTypeArray"));
107
+ const Plugin_1 = __importDefault(require("../navigator/Plugin"));
108
+ const PluginArray_1 = __importDefault(require("../navigator/PluginArray"));
109
+ const url_1 = require("url");
110
+ const FetchHandler_1 = __importDefault(require("../fetch/FetchHandler"));
111
+ const VMGlobalPropertyScript_1 = __importDefault(require("./VMGlobalPropertyScript"));
112
+ const PerfHooks = __importStar(require("perf_hooks"));
113
+ const vm_1 = __importDefault(require("vm"));
114
+ const buffer_1 = require("buffer");
159
115
  /**
160
- * Handles the Window.
116
+ * Browser window.
117
+ *
118
+ * Reference:
119
+ * https://developer.mozilla.org/en-US/docs/Web/API/Window.
161
120
  */
162
- var Window = /** @class */ (function (_super) {
163
- __extends(Window, _super);
121
+ class Window extends EventTarget_1.default {
164
122
  /**
165
123
  * Constructor.
166
124
  */
167
- function Window() {
168
- var _this = _super.call(this) || this;
125
+ constructor() {
126
+ super();
169
127
  // Public Properties
170
- _this.happyDOM = {
171
- whenAsyncComplete: function () { return __awaiter(_this, void 0, void 0, function () {
172
- return __generator(this, function (_a) {
173
- switch (_a.label) {
174
- case 0: return [4 /*yield*/, this.happyDOM.asyncTaskManager.whenComplete()];
175
- case 1: return [2 /*return*/, _a.sent()];
176
- }
177
- });
178
- }); },
179
- cancelAsync: function () {
180
- _this.happyDOM.asyncTaskManager.cancelAll();
128
+ this.happyDOM = {
129
+ whenAsyncComplete: async () => {
130
+ return await this.happyDOM.asyncTaskManager.whenComplete();
131
+ },
132
+ cancelAsync: () => {
133
+ this.happyDOM.asyncTaskManager.cancelAll();
181
134
  },
182
135
  asyncTaskManager: new AsyncTaskManager_1.default()
183
136
  };
184
137
  // Global classes
185
- _this.Node = Node_1.default;
186
- _this.HTMLElement = HTMLElement_1.default;
187
- _this.HTMLUnknownElement = HTMLUnknownElement_1.default;
188
- _this.HTMLTemplateElement = HTMLTemplateElement_1.default;
189
- _this.HTMLFormElement = HTMLFormElement_1.default;
190
- _this.HTMLInputElement = HTMLInputElement_1.default;
191
- _this.HTMLTextAreaElement = HTMLTextAreaElement_1.default;
192
- _this.HTMLImageElement = HTMLImageElement_1.default;
193
- _this.Image = Image_1.default;
194
- _this.HTMLScriptElement = HTMLScriptElement_1.default;
195
- _this.HTMLLinkElement = HTMLLinkElement_1.default;
196
- _this.HTMLStyleElement = HTMLStyleElement_1.default;
197
- _this.HTMLLabelElement = HTMLLabelElement_1.default;
198
- _this.HTMLSlotElement = HTMLSlotElement_1.default;
199
- _this.HTMLMetaElement = HTMLMetaElement_1.default;
200
- _this.SVGSVGElement = SVGSVGElement_1.default;
201
- _this.SVGElement = SVGElement_1.default;
202
- _this.Text = Text_1.default;
203
- _this.Comment = Comment_1.default;
204
- _this.ShadowRoot = ShadowRoot_1.default;
205
- _this.Element = Element_1.default;
206
- _this.DocumentFragment = DocumentFragment_1.default;
207
- _this.CharacterData = CharacterData_1.default;
208
- _this.NodeFilter = NodeFilter_1.default;
209
- _this.TreeWalker = TreeWalker_1.default;
210
- _this.DOMParser = DOMParser_1.default;
211
- _this.MutationObserver = MutationObserver_1.default;
212
- _this.Document = Document_1.default;
213
- _this.HTMLDocument = HTMLDocument_1.default;
214
- _this.XMLDocument = XMLDocument_1.default;
215
- _this.SVGDocument = SVGDocument_1.default;
216
- _this.Event = Event_1.default;
217
- _this.UIEvent = UIEvent_1.default;
218
- _this.CustomEvent = CustomEvent_1.default;
219
- _this.AnimationEvent = AnimationEvent_1.default;
220
- _this.KeyboardEvent = KeyboardEvent_1.default;
221
- _this.MouseEvent = MouseEvent_1.default;
222
- _this.PointerEvent = PointerEvent_1.default;
223
- _this.FocusEvent = FocusEvent_1.default;
224
- _this.WheelEvent = WheelEvent_1.default;
225
- _this.InputEvent = InputEvent_1.default;
226
- _this.ErrorEvent = ErrorEvent_1.default;
227
- _this.StorageEvent = StorageEvent_1.default;
228
- _this.ProgressEvent = ProgressEvent_1.default;
229
- _this.EventTarget = EventTarget_1.default;
230
- _this.DataTransfer = DataTransfer_1.default;
231
- _this.DataTransferItem = DataTransferItem_1.default;
232
- _this.DataTransferItemList = DataTransferItemList_1.default;
233
- _this.URL = URL_1.default;
234
- _this.Location = Location_1.default;
235
- _this.CustomElementRegistry = CustomElementRegistry_1.default;
236
- _this.Window = Window;
237
- _this.XMLSerializer = XMLSerializer_1.default;
238
- _this.ResizeObserver = ResizeObserver_1.default;
239
- _this.CSSStyleSheet = CSSStyleSheet_1.default;
240
- _this.Blob = Blob_1.default;
241
- _this.File = File_1.default;
242
- _this.FileReader = FileReader_1.default;
243
- _this.DOMException = DOMException_1.default;
244
- _this.History = History_1.default;
245
- _this.Screen = Screen_1.default;
246
- _this.Storage = Storage_1.default;
247
- _this.URLSearchParams = url_1.URLSearchParams;
248
- _this.HTMLCollection = HTMLCollection_1.default;
249
- _this.NodeList = NodeList_1.default;
250
- _this.MediaQueryList = MediaQueryList_1.default;
251
- _this.CSSUnitValue = CSSUnitValue_1.default;
252
- _this.Selection = Selection_1.default;
253
- _this.Navigator = Navigator_1.default;
254
- _this.MimeType = MimeType_1.default;
255
- _this.MimeTypeArray = MimeTypeArray_1.default;
256
- _this.Plugin = Plugin_1.default;
257
- _this.PluginArray = PluginArray_1.default;
138
+ this.Node = Node_1.default;
139
+ this.HTMLElement = HTMLElement_1.default;
140
+ this.HTMLUnknownElement = HTMLUnknownElement_1.default;
141
+ this.HTMLTemplateElement = HTMLTemplateElement_1.default;
142
+ this.HTMLFormElement = HTMLFormElement_1.default;
143
+ this.HTMLInputElement = HTMLInputElement_1.default;
144
+ this.HTMLTextAreaElement = HTMLTextAreaElement_1.default;
145
+ this.HTMLImageElement = HTMLImageElement_1.default;
146
+ this.Image = Image_1.default;
147
+ this.HTMLScriptElement = HTMLScriptElement_1.default;
148
+ this.HTMLLinkElement = HTMLLinkElement_1.default;
149
+ this.HTMLStyleElement = HTMLStyleElement_1.default;
150
+ this.HTMLLabelElement = HTMLLabelElement_1.default;
151
+ this.HTMLSlotElement = HTMLSlotElement_1.default;
152
+ this.HTMLMetaElement = HTMLMetaElement_1.default;
153
+ this.HTMLBaseElement = HTMLBaseElement_1.default;
154
+ this.SVGSVGElement = SVGSVGElement_1.default;
155
+ this.SVGElement = SVGElement_1.default;
156
+ this.Text = Text_1.default;
157
+ this.Comment = Comment_1.default;
158
+ this.ShadowRoot = ShadowRoot_1.default;
159
+ this.Element = Element_1.default;
160
+ this.DocumentFragment = DocumentFragment_1.default;
161
+ this.CharacterData = CharacterData_1.default;
162
+ this.NodeFilter = NodeFilter_1.default;
163
+ this.TreeWalker = TreeWalker_1.default;
164
+ this.DOMParser = DOMParser_1.default;
165
+ this.MutationObserver = MutationObserver_1.default;
166
+ this.Document = Document_1.default;
167
+ this.HTMLDocument = HTMLDocument_1.default;
168
+ this.XMLDocument = XMLDocument_1.default;
169
+ this.SVGDocument = SVGDocument_1.default;
170
+ this.Event = Event_1.default;
171
+ this.UIEvent = UIEvent_1.default;
172
+ this.CustomEvent = CustomEvent_1.default;
173
+ this.AnimationEvent = AnimationEvent_1.default;
174
+ this.KeyboardEvent = KeyboardEvent_1.default;
175
+ this.MouseEvent = MouseEvent_1.default;
176
+ this.PointerEvent = PointerEvent_1.default;
177
+ this.FocusEvent = FocusEvent_1.default;
178
+ this.WheelEvent = WheelEvent_1.default;
179
+ this.InputEvent = InputEvent_1.default;
180
+ this.ErrorEvent = ErrorEvent_1.default;
181
+ this.StorageEvent = StorageEvent_1.default;
182
+ this.ProgressEvent = ProgressEvent_1.default;
183
+ this.EventTarget = EventTarget_1.default;
184
+ this.DataTransfer = DataTransfer_1.default;
185
+ this.DataTransferItem = DataTransferItem_1.default;
186
+ this.DataTransferItemList = DataTransferItemList_1.default;
187
+ this.URL = URL_1.default;
188
+ this.Location = Location_1.default;
189
+ this.CustomElementRegistry = CustomElementRegistry_1.default;
190
+ this.Window = this.constructor;
191
+ this.XMLSerializer = XMLSerializer_1.default;
192
+ this.ResizeObserver = ResizeObserver_1.default;
193
+ this.CSSStyleSheet = CSSStyleSheet_1.default;
194
+ this.Blob = Blob_1.default;
195
+ this.File = File_1.default;
196
+ this.FileReader = FileReader_1.default;
197
+ this.DOMException = DOMException_1.default;
198
+ this.History = History_1.default;
199
+ this.Screen = Screen_1.default;
200
+ this.Storage = Storage_1.default;
201
+ this.URLSearchParams = url_1.URLSearchParams;
202
+ this.HTMLCollection = HTMLCollection_1.default;
203
+ this.NodeList = NodeList_1.default;
204
+ this.MediaQueryList = MediaQueryList_1.default;
205
+ this.CSSUnitValue = CSSUnitValue_1.default;
206
+ this.Selection = Selection_1.default;
207
+ this.Navigator = Navigator_1.default;
208
+ this.MimeType = MimeType_1.default;
209
+ this.MimeTypeArray = MimeTypeArray_1.default;
210
+ this.Plugin = Plugin_1.default;
211
+ this.PluginArray = PluginArray_1.default;
212
+ this.Headers = Headers_1.default;
213
+ this.Request = Request_1.default;
214
+ this.Response = Response_1.default;
258
215
  // Events
259
- _this.onload = null;
260
- _this.onerror = null;
261
- _this.customElements = new CustomElementRegistry_1.default();
262
- _this.location = new Location_1.default();
263
- _this.history = new History_1.default();
264
- _this.navigator = new Navigator_1.default();
265
- _this.console = global ? global.console : null;
266
- _this.self = _this;
267
- _this.top = _this;
268
- _this.parent = _this;
269
- _this.window = _this;
270
- _this.globalThis = _this;
271
- _this.screen = new Screen_1.default();
272
- _this.innerWidth = 1024;
273
- _this.innerHeight = 768;
274
- _this.devicePixelRatio = 1;
275
- _this.sessionStorage = new Storage_1.default();
276
- _this.localStorage = new Storage_1.default();
277
- _this.performance = PerfHooks.performance;
278
- // Node.js Globals
279
- _this.ArrayBuffer = global ? global.ArrayBuffer : null;
280
- _this.Boolean = global ? global.Boolean : null;
281
- _this.Buffer = null;
282
- _this.DataView = global ? global.DataView : null;
283
- _this.Date = global ? global.Date : null;
284
- _this.Error = global ? global.Error : null;
285
- _this.EvalError = global ? global.EvalError : null;
286
- _this.Float32Array = global ? global.Float32Array : null;
287
- _this.Float64Array = global ? global.Float64Array : null;
288
- _this.GLOBAL = null;
289
- _this.Infinity = global ? global.Infinity : null;
290
- _this.Int16Array = global ? global.Int16Array : null;
291
- _this.Int32Array = global ? global.Int32Array : null;
292
- _this.Int8Array = global ? global.Int8Array : null;
293
- _this.Intl = global ? global.Intl : null;
294
- _this.JSON = global ? global.JSON : null;
295
- _this.Map = global ? global.Map : null;
296
- _this.Math = global ? global.Math : null;
297
- _this.NaN = global ? global.NaN : null;
298
- _this.Number = global ? global.Number : null;
299
- _this.Promise = global ? global.Promise : null;
300
- _this.RangeError = global ? global.RangeError : null;
301
- _this.ReferenceError = global ? global.ReferenceError : null;
302
- _this.RegExp = global ? global.RegExp : null;
303
- _this.Reflect = global ? global.Reflect : null;
304
- _this.Set = global ? global.Set : null;
305
- _this.Symbol = global ? global.Symbol : null;
306
- _this.SyntaxError = global ? global.SyntaxError : null;
307
- _this.String = global ? global.String : null;
308
- _this.TypeError = global ? global.TypeError : null;
309
- _this.URIError = global ? global.URIError : null;
310
- _this.Uint16Array = global ? global.Uint16Array : null;
311
- _this.Uint32Array = global ? global.Uint32Array : null;
312
- _this.Uint8Array = global ? global.Uint8Array : null;
313
- _this.Uint8ClampedArray = global ? global.Uint8ClampedArray : null;
314
- _this.WeakMap = global ? global.WeakMap : null;
315
- _this.WeakSet = global ? global.WeakSet : null;
316
- _this.clearImmediate = null;
317
- _this.decodeURI = global ? global.decodeURI : null;
318
- _this.decodeURIComponent = global ? global.decodeURIComponent : null;
319
- _this.encodeURI = global ? global.encodeURI : null;
320
- _this.encodeURIComponent = global ? global.encodeURIComponent : null;
321
- _this.escape = global ? global.escape : null;
322
- _this.global = null;
323
- _this.isFinite = global ? global.isFinite : null;
324
- _this.isNaN = global ? global.isNaN : null;
325
- _this.parseFloat = global ? global.parseFloat : null;
326
- _this.parseInt = global ? global.parseInt : null;
327
- _this.process = null;
328
- _this.root = null;
329
- _this.setImmediate = null;
330
- _this.queueMicrotask = global ? global.queueMicrotask : null;
331
- _this.undefined = global ? global.undefined : null;
332
- _this.unescape = global ? global.unescape : null;
333
- _this.gc = null;
334
- _this.v8debug = null;
335
- _this.AbortController = global ? global.AbortController : null;
336
- _this.AbortSignal = global ? global.AbortSignal : null;
337
- // Private properties
338
- _this._objectClass = null;
339
- _this._arrayClass = null;
340
- _this._functionClass = null;
341
- _this.document = new HTMLDocument_1.default();
342
- _this.document.defaultView = _this;
343
- _this.document._readyStateManager.whenComplete().then(function () {
344
- _this.dispatchEvent(new Event_1.default('load'));
216
+ this.onload = null;
217
+ this.onerror = null;
218
+ this.customElements = new CustomElementRegistry_1.default();
219
+ this.location = new Location_1.default();
220
+ this.history = new History_1.default();
221
+ this.navigator = new Navigator_1.default();
222
+ this.console = console;
223
+ this.self = this;
224
+ this.top = this;
225
+ this.parent = this;
226
+ this.window = this;
227
+ this.globalThis = this;
228
+ this.screen = new Screen_1.default();
229
+ this.innerWidth = 1024;
230
+ this.innerHeight = 768;
231
+ this.devicePixelRatio = 1;
232
+ this.sessionStorage = new Storage_1.default();
233
+ this.localStorage = new Storage_1.default();
234
+ this.performance = PerfHooks.performance;
235
+ this.Buffer = buffer_1.Buffer;
236
+ this.document = new HTMLDocument_1.default();
237
+ this.document.defaultView = this;
238
+ this.document._readyStateManager.whenComplete().then(() => {
239
+ this.dispatchEvent(new Event_1.default('load'));
345
240
  });
346
- DOMParser_1.default._ownerDocument = DOMParser_1.default._ownerDocument || _this.document;
347
- FileReader_1.default._ownerDocument = FileReader_1.default._ownerDocument || _this.document;
348
- Image_1.default.ownerDocument = Image_1.default.ownerDocument || _this.document;
349
- for (var _i = 0, NonImplementedEventTypes_2 = NonImplementedEventTypes_1.default; _i < NonImplementedEventTypes_2.length; _i++) {
350
- var eventType = NonImplementedEventTypes_2[_i];
351
- if (!_this[eventType]) {
352
- _this[eventType] = Event_1.default;
241
+ DOMParser_1.default._ownerDocument = this.document;
242
+ FileReader_1.default._ownerDocument = this.document;
243
+ Image_1.default.ownerDocument = this.document;
244
+ Request_1.default._ownerDocument = this.document;
245
+ Response_1.default._ownerDocument = this.document;
246
+ for (const eventType of NonImplementedEventTypes_1.default) {
247
+ if (!this[eventType]) {
248
+ this[eventType] = Event_1.default;
353
249
  }
354
250
  }
355
- for (var _a = 0, NonImplemenetedElementClasses_2 = NonImplemenetedElementClasses_1.default; _a < NonImplemenetedElementClasses_2.length; _a++) {
356
- var className = NonImplemenetedElementClasses_2[_a];
357
- if (!_this[className]) {
358
- _this[className] = HTMLElement_1.default;
251
+ for (const className of NonImplemenetedElementClasses_1.default) {
252
+ if (!this[className]) {
253
+ this[className] = HTMLElement_1.default;
359
254
  }
360
255
  }
361
256
  // Binds all methods to "this", so that it will use the correct context when called globally.
362
- for (var _b = 0, _c = Object.keys(Window.prototype); _b < _c.length; _b++) {
363
- var key = _c[_b];
364
- if (typeof _this[key] === 'function') {
365
- _this[key] = _this[key].bind(_this);
257
+ for (const key of Object.getOwnPropertyNames(this.constructor.prototype)) {
258
+ if (key !== 'constructor' && key !== 'CSS' && typeof this[key] === 'function') {
259
+ this[key] = this[key].bind(this);
366
260
  }
367
261
  }
368
- return _this;
262
+ // Only contextify if there isn't any sub-class handling globals (like GlobalWindow)
263
+ if (this.Array === undefined && !vm_1.default.isContext(this)) {
264
+ vm_1.default.createContext(this);
265
+ // Sets global properties from the VM to the Window object.
266
+ // Otherwise "this.Array" will be undefined for example.
267
+ vm_1.default.runInContext(VMGlobalPropertyScript_1.default, this);
268
+ }
269
+ }
270
+ /**
271
+ * The CSS interface holds useful CSS-related methods.
272
+ *
273
+ * @returns CSS interface.
274
+ */
275
+ get CSS() {
276
+ return new CSS_1.default();
369
277
  }
370
- Object.defineProperty(Window.prototype, "Object", {
371
- /**
372
- * Returns Object class.
373
- *
374
- * @returns Object class.
375
- */
376
- get: function () {
377
- if (this._objectClass) {
378
- return this._objectClass;
379
- }
380
- // When inside a VM global.Object is not the same as ({}).constructor
381
- // We will therefore run the code inside the VM to get the real constructor
382
- this._objectClass = this.eval('({}).constructor');
383
- return this._objectClass;
384
- },
385
- enumerable: false,
386
- configurable: true
387
- });
388
- Object.defineProperty(Window.prototype, "Array", {
389
- /**
390
- * Returns Array class.
391
- *
392
- * @returns Array class.
393
- */
394
- get: function () {
395
- if (this._arrayClass) {
396
- return this._arrayClass;
397
- }
398
- // When inside a VM global.Object is not the same as [].constructor
399
- // We will therefore run the code inside the VM to get the real constructor
400
- this._arrayClass = this.eval('[].constructor');
401
- return this._arrayClass;
402
- },
403
- enumerable: false,
404
- configurable: true
405
- });
406
- Object.defineProperty(Window.prototype, "Function", {
407
- /**
408
- * Returns Function class.
409
- *
410
- * @returns Function class.
411
- */
412
- get: function () {
413
- if (this._functionClass) {
414
- return this._functionClass;
415
- }
416
- // When inside a VM global.Function is not the same as (() => {}).constructor
417
- // We will therefore run the code inside the VM to get the real constructor
418
- this._functionClass = this.eval('(() => {}).constructor');
419
- return this._functionClass;
420
- },
421
- enumerable: false,
422
- configurable: true
423
- });
424
- Object.defineProperty(Window.prototype, "CSS", {
425
- /**
426
- * The CSS interface holds useful CSS-related methods.
427
- *
428
- * @returns CSS interface.
429
- */
430
- get: function () {
431
- return new CSS_1.default();
432
- },
433
- enumerable: false,
434
- configurable: true
435
- });
436
- Object.defineProperty(Window.prototype, "Headers", {
437
- /**
438
- * Returns Headers class.
439
- *
440
- * @returns Headers.
441
- */
442
- get: function () {
443
- return require('../fetch/Headers').default;
444
- },
445
- enumerable: false,
446
- configurable: true
447
- });
448
- Object.defineProperty(Window.prototype, "Request", {
449
- /**
450
- * Returns Request class.
451
- *
452
- * @returns Request.
453
- */
454
- get: function () {
455
- var Request = require('../fetch/Request').default;
456
- Request._ownerDocument = Request._ownerDocument || this.document;
457
- return Request;
458
- },
459
- enumerable: false,
460
- configurable: true
461
- });
462
- Object.defineProperty(Window.prototype, "Response", {
463
- /**
464
- * Returns Response class.
465
- *
466
- * @returns Response.
467
- */
468
- get: function () {
469
- var Response = require('../fetch/Response').default;
470
- Response._ownerDocument = Response._ownerDocument || this.document;
471
- return Response;
472
- },
473
- enumerable: false,
474
- configurable: true
475
- });
476
278
  /**
477
279
  * Evaluates code.
478
280
  *
281
+ * @override
479
282
  * @param code Code.
480
283
  * @returns Result.
481
284
  */
482
- Window.prototype.eval = function (code) {
483
- var vmExists = false;
484
- var vm = null;
485
- try {
486
- vmExists = !!require.resolve('vm');
487
- }
488
- catch (error) {
489
- // Ignore error;
285
+ eval(code) {
286
+ if (vm_1.default.isContext(this)) {
287
+ return vm_1.default.runInContext(code, this);
490
288
  }
491
- if (vmExists) {
492
- vm = require('vm');
493
- }
494
- if (vm && vm.isContext(this)) {
495
- return vm.runInContext(code, this);
496
- }
497
- return global.eval(code);
498
- };
289
+ return eval(code);
290
+ }
499
291
  /**
500
292
  * Returns an object containing the values of all CSS properties of an element.
501
293
  *
502
294
  * @param element Element.
503
295
  * @returns CSS style declaration.
504
296
  */
505
- Window.prototype.getComputedStyle = function (element) {
297
+ getComputedStyle(element) {
506
298
  return new CSSStyleDeclaration_1.default(element._attributes, element);
507
- };
299
+ }
508
300
  /**
509
301
  * Scrolls to a particular set of coordinates.
510
302
  *
511
303
  * @param x X position or options object.
512
304
  * @param y Y position.
513
305
  */
514
- Window.prototype.scroll = function (x, y) {
515
- var _this = this;
306
+ scroll(x, y) {
516
307
  if (typeof x === 'object') {
517
308
  if (x.behavior === 'smooth') {
518
- this.setTimeout(function () {
309
+ this.setTimeout(() => {
519
310
  if (x.top !== undefined) {
520
- _this.document.documentElement.scrollTop = x.top;
311
+ this.document.documentElement.scrollTop = x.top;
521
312
  }
522
313
  if (x.left !== undefined) {
523
- _this.document.documentElement.scrollLeft = x.left;
314
+ this.document.documentElement.scrollLeft = x.left;
524
315
  }
525
316
  });
526
317
  }
@@ -537,27 +328,27 @@ var Window = /** @class */ (function (_super) {
537
328
  this.document.documentElement.scrollLeft = x;
538
329
  this.document.documentElement.scrollTop = y;
539
330
  }
540
- };
331
+ }
541
332
  /**
542
333
  * Scrolls to a particular set of coordinates.
543
334
  *
544
335
  * @param x X position or options object.
545
336
  * @param y Y position.
546
337
  */
547
- Window.prototype.scrollTo = function (x, y) {
338
+ scrollTo(x, y) {
548
339
  this.scroll(x, y);
549
- };
340
+ }
550
341
  /**
551
342
  * Returns a new MediaQueryList object that can then be used to determine if the document matches the media query string.
552
343
  *
553
344
  * @param mediaQueryString A string specifying the media query to parse into a MediaQueryList.
554
345
  * @returns A new MediaQueryList.
555
346
  */
556
- Window.prototype.matchMedia = function (mediaQueryString) {
557
- var mediaQueryList = new MediaQueryList_1.default();
347
+ matchMedia(mediaQueryString) {
348
+ const mediaQueryList = new MediaQueryList_1.default();
558
349
  mediaQueryList._media = mediaQueryString;
559
350
  return mediaQueryList;
560
- };
351
+ }
561
352
  /**
562
353
  * Sets a timer which executes a function once the timer expires.
563
354
  *
@@ -566,26 +357,24 @@ var Window = /** @class */ (function (_super) {
566
357
  * @param [delay=0] Delay in ms.
567
358
  * @returns Timeout ID.
568
359
  */
569
- Window.prototype.setTimeout = function (callback, delay) {
570
- var _this = this;
571
- if (delay === void 0) { delay = 0; }
572
- var id = global.setTimeout(function () {
573
- _this.happyDOM.asyncTaskManager.endTimer(id);
360
+ setTimeout(callback, delay = 0) {
361
+ const id = setTimeout(() => {
362
+ this.happyDOM.asyncTaskManager.endTimer(id);
574
363
  callback();
575
364
  }, delay);
576
365
  this.happyDOM.asyncTaskManager.startTimer(id);
577
366
  return id;
578
- };
367
+ }
579
368
  /**
580
369
  * Cancels a timeout previously established by calling setTimeout().
581
370
  *
582
371
  * @override
583
372
  * @param id ID of the timeout.
584
373
  */
585
- Window.prototype.clearTimeout = function (id) {
586
- global.clearTimeout(id);
374
+ clearTimeout(id) {
375
+ clearTimeout(id);
587
376
  this.happyDOM.asyncTaskManager.endTimer(id);
588
- };
377
+ }
589
378
  /**
590
379
  * Calls a function with a fixed time delay between each call.
591
380
  *
@@ -594,22 +383,21 @@ var Window = /** @class */ (function (_super) {
594
383
  * @param [delay=0] Delay in ms.
595
384
  * @returns Interval ID.
596
385
  */
597
- Window.prototype.setInterval = function (callback, delay) {
598
- if (delay === void 0) { delay = 0; }
599
- var id = global.setInterval(callback, delay);
386
+ setInterval(callback, delay = 0) {
387
+ const id = setInterval(callback, delay);
600
388
  this.happyDOM.asyncTaskManager.startTimer(id);
601
389
  return id;
602
- };
390
+ }
603
391
  /**
604
392
  * Cancels a timed repeating action which was previously established by a call to setInterval().
605
393
  *
606
394
  * @override
607
395
  * @param id ID of the interval.
608
396
  */
609
- Window.prototype.clearInterval = function (id) {
610
- global.clearInterval(id);
397
+ clearInterval(id) {
398
+ clearInterval(id);
611
399
  this.happyDOM.asyncTaskManager.endTimer(id);
612
- };
400
+ }
613
401
  /**
614
402
  * Mock animation frames with timeouts.
615
403
  *
@@ -617,20 +405,20 @@ var Window = /** @class */ (function (_super) {
617
405
  * @param callback Callback.
618
406
  * @returns Timeout ID.
619
407
  */
620
- Window.prototype.requestAnimationFrame = function (callback) {
621
- return this.setTimeout(function () {
408
+ requestAnimationFrame(callback) {
409
+ return this.setTimeout(() => {
622
410
  callback(2);
623
411
  });
624
- };
412
+ }
625
413
  /**
626
414
  * Mock animation frames with timeouts.
627
415
  *
628
416
  * @override
629
417
  * @param id Timeout ID.
630
418
  */
631
- Window.prototype.cancelAnimationFrame = function (id) {
419
+ cancelAnimationFrame(id) {
632
420
  this.clearTimeout(id);
633
- };
421
+ }
634
422
  /**
635
423
  * This method provides an easy, logical way to fetch resources asynchronously across the network.
636
424
  *
@@ -639,17 +427,9 @@ var Window = /** @class */ (function (_super) {
639
427
  * @param [init] Init.
640
428
  * @returns Promise.
641
429
  */
642
- Window.prototype.fetch = function (url, init) {
643
- return __awaiter(this, void 0, void 0, function () {
644
- return __generator(this, function (_a) {
645
- switch (_a.label) {
646
- case 0: return [4 /*yield*/, FetchHandler_1.default.fetch(this.document, url, init)];
647
- case 1: return [2 /*return*/, _a.sent()];
648
- }
649
- });
650
- });
651
- };
652
- return Window;
653
- }(EventTarget_1.default));
430
+ async fetch(url, init) {
431
+ return await FetchHandler_1.default.fetch(this.document, url, init);
432
+ }
433
+ }
654
434
  exports.default = Window;
655
435
  //# sourceMappingURL=Window.js.map