happy-dom 16.8.1 → 17.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.
Files changed (365) hide show
  1. package/cjs/PropertySymbol.cjs +13 -1
  2. package/cjs/PropertySymbol.cjs.map +1 -1
  3. package/cjs/PropertySymbol.d.ts +12 -0
  4. package/cjs/PropertySymbol.d.ts.map +1 -1
  5. package/cjs/async-task-manager/AsyncTaskManager.cjs +67 -18
  6. package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
  7. package/cjs/async-task-manager/AsyncTaskManager.d.ts +5 -0
  8. package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  9. package/cjs/browser/BrowserSettingsFactory.cjs +4 -0
  10. package/cjs/browser/BrowserSettingsFactory.cjs.map +1 -1
  11. package/cjs/browser/BrowserSettingsFactory.d.ts.map +1 -1
  12. package/cjs/browser/DefaultBrowserSettings.cjs +3 -0
  13. package/cjs/browser/DefaultBrowserSettings.cjs.map +1 -1
  14. package/cjs/browser/DefaultBrowserSettings.d.ts.map +1 -1
  15. package/cjs/browser/types/IBrowserSettings.d.ts +6 -0
  16. package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
  17. package/cjs/browser/types/IOptionalBrowserSettings.d.ts +6 -0
  18. package/cjs/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
  19. package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
  20. package/cjs/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
  21. package/cjs/dom/DOMTokenList.cjs +7 -4
  22. package/cjs/dom/DOMTokenList.cjs.map +1 -1
  23. package/cjs/dom/DOMTokenList.d.ts +5 -3
  24. package/cjs/dom/DOMTokenList.d.ts.map +1 -1
  25. package/cjs/event/EventTarget.cjs +31 -5
  26. package/cjs/event/EventTarget.cjs.map +1 -1
  27. package/cjs/event/EventTarget.d.ts.map +1 -1
  28. package/cjs/fetch/Fetch.cjs +67 -13
  29. package/cjs/fetch/Fetch.cjs.map +1 -1
  30. package/cjs/fetch/Fetch.d.ts +3 -0
  31. package/cjs/fetch/Fetch.d.ts.map +1 -1
  32. package/cjs/fetch/Request.cjs +119 -27
  33. package/cjs/fetch/Request.cjs.map +1 -1
  34. package/cjs/fetch/Request.d.ts +65 -9
  35. package/cjs/fetch/Request.d.ts.map +1 -1
  36. package/cjs/fetch/ResourceFetch.cjs +91 -13
  37. package/cjs/fetch/ResourceFetch.cjs.map +1 -1
  38. package/cjs/fetch/ResourceFetch.d.ts +21 -11
  39. package/cjs/fetch/ResourceFetch.d.ts.map +1 -1
  40. package/cjs/fetch/SyncFetch.cjs +36 -7
  41. package/cjs/fetch/SyncFetch.cjs.map +1 -1
  42. package/cjs/fetch/SyncFetch.d.ts.map +1 -1
  43. package/cjs/fetch/preload/PreloadEntry.cjs +44 -0
  44. package/cjs/fetch/preload/PreloadEntry.cjs.map +1 -0
  45. package/cjs/fetch/preload/PreloadEntry.d.ts +26 -0
  46. package/cjs/fetch/preload/PreloadEntry.d.ts.map +1 -0
  47. package/cjs/fetch/preload/PreloadUtility.cjs +29 -0
  48. package/cjs/fetch/preload/PreloadUtility.cjs.map +1 -0
  49. package/cjs/fetch/preload/PreloadUtility.d.ts +26 -0
  50. package/cjs/fetch/preload/PreloadUtility.d.ts.map +1 -0
  51. package/cjs/fetch/types/IRequestInit.d.ts +2 -0
  52. package/cjs/fetch/types/IRequestInit.d.ts.map +1 -1
  53. package/cjs/fetch/types/IRequestMode.cjs +3 -0
  54. package/cjs/fetch/types/IRequestMode.cjs.map +1 -0
  55. package/cjs/fetch/types/IRequestMode.d.ts +3 -0
  56. package/cjs/fetch/types/IRequestMode.d.ts.map +1 -0
  57. package/cjs/fetch/utilities/FetchRequestReferrerUtility.cjs +1 -1
  58. package/cjs/fetch/utilities/FetchRequestReferrerUtility.cjs.map +1 -1
  59. package/cjs/module/CSSModule.cjs +47 -0
  60. package/cjs/module/CSSModule.cjs.map +1 -0
  61. package/cjs/module/CSSModule.d.ts +34 -0
  62. package/cjs/module/CSSModule.d.ts.map +1 -0
  63. package/cjs/module/ECMAScriptModule.cjs +157 -0
  64. package/cjs/module/ECMAScriptModule.cjs.map +1 -0
  65. package/cjs/module/ECMAScriptModule.d.ts +36 -0
  66. package/cjs/module/ECMAScriptModule.d.ts.map +1 -0
  67. package/cjs/module/ECMAScriptModuleCompiler.cjs +550 -0
  68. package/cjs/module/ECMAScriptModuleCompiler.cjs.map +1 -0
  69. package/cjs/module/ECMAScriptModuleCompiler.d.ts +31 -0
  70. package/cjs/module/ECMAScriptModuleCompiler.d.ts.map +1 -0
  71. package/cjs/module/IECMAScriptModuleCompiledResult.cjs +3 -0
  72. package/cjs/module/IECMAScriptModuleCompiledResult.cjs.map +1 -0
  73. package/cjs/module/IECMAScriptModuleCompiledResult.d.ts +21 -0
  74. package/cjs/module/IECMAScriptModuleCompiledResult.d.ts.map +1 -0
  75. package/cjs/module/IECMAScriptModuleImport.cjs +3 -0
  76. package/cjs/module/IECMAScriptModuleImport.cjs.map +1 -0
  77. package/cjs/module/IECMAScriptModuleImport.d.ts +5 -0
  78. package/cjs/module/IECMAScriptModuleImport.d.ts.map +1 -0
  79. package/cjs/module/IModule.cjs +3 -0
  80. package/cjs/module/IModule.cjs.map +1 -0
  81. package/cjs/module/IModule.d.ts +21 -0
  82. package/cjs/module/IModule.d.ts.map +1 -0
  83. package/cjs/module/IModuleImportMap.cjs +3 -0
  84. package/cjs/module/IModuleImportMap.cjs.map +1 -0
  85. package/cjs/module/IModuleImportMap.d.ts +10 -0
  86. package/cjs/module/IModuleImportMap.d.ts.map +1 -0
  87. package/cjs/module/IModuleImportMapRule.cjs +3 -0
  88. package/cjs/module/IModuleImportMapRule.cjs.map +1 -0
  89. package/cjs/module/IModuleImportMapRule.d.ts +5 -0
  90. package/cjs/module/IModuleImportMapRule.d.ts.map +1 -0
  91. package/cjs/module/IModuleImportMapScope.cjs +3 -0
  92. package/cjs/module/IModuleImportMapScope.cjs.map +1 -0
  93. package/cjs/module/IModuleImportMapScope.d.ts +6 -0
  94. package/cjs/module/IModuleImportMapScope.d.ts.map +1 -0
  95. package/cjs/module/JSONModule.cjs +52 -0
  96. package/cjs/module/JSONModule.cjs.map +1 -0
  97. package/cjs/module/JSONModule.d.ts +33 -0
  98. package/cjs/module/JSONModule.d.ts.map +1 -0
  99. package/cjs/module/ModuleFactory.cjs +136 -0
  100. package/cjs/module/ModuleFactory.cjs.map +1 -0
  101. package/cjs/module/ModuleFactory.d.ts +33 -0
  102. package/cjs/module/ModuleFactory.d.ts.map +1 -0
  103. package/cjs/module/ModuleURLUtility.cjs +67 -0
  104. package/cjs/module/ModuleURLUtility.cjs.map +1 -0
  105. package/cjs/module/ModuleURLUtility.d.ts +17 -0
  106. package/cjs/module/ModuleURLUtility.d.ts.map +1 -0
  107. package/cjs/module/UnresolvedModule.cjs +70 -0
  108. package/cjs/module/UnresolvedModule.cjs.map +1 -0
  109. package/cjs/module/UnresolvedModule.d.ts +43 -0
  110. package/cjs/module/UnresolvedModule.d.ts.map +1 -0
  111. package/cjs/nodes/document/Document.cjs +1 -0
  112. package/cjs/nodes/document/Document.cjs.map +1 -1
  113. package/cjs/nodes/document/Document.d.ts +2 -0
  114. package/cjs/nodes/document/Document.d.ts.map +1 -1
  115. package/cjs/nodes/element/Element.cjs +21 -5
  116. package/cjs/nodes/element/Element.cjs.map +1 -1
  117. package/cjs/nodes/element/Element.d.ts +6 -0
  118. package/cjs/nodes/element/Element.d.ts.map +1 -1
  119. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +8 -0
  120. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
  121. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +6 -0
  122. package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  123. package/cjs/nodes/html-area-element/HTMLAreaElement.cjs +8 -0
  124. package/cjs/nodes/html-area-element/HTMLAreaElement.cjs.map +1 -1
  125. package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts +6 -0
  126. package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
  127. package/cjs/nodes/html-element/HTMLElement.cjs +3 -0
  128. package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
  129. package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
  130. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +7 -3
  131. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
  132. package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  133. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +147 -19
  134. package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
  135. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +8 -2
  136. package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  137. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +8 -0
  138. package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
  139. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts +6 -0
  140. package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  141. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +380 -46
  142. package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
  143. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +80 -0
  144. package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  145. package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.cjs +0 -1
  146. package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.cjs.map +1 -1
  147. package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.d.ts +0 -3
  148. package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.d.ts.map +1 -1
  149. package/cjs/utilities/AttributeUtility.cjs +36 -0
  150. package/cjs/utilities/AttributeUtility.cjs.map +1 -0
  151. package/cjs/utilities/AttributeUtility.d.ts +18 -0
  152. package/cjs/utilities/AttributeUtility.d.ts.map +1 -0
  153. package/cjs/window/BrowserWindow.cjs +73 -6
  154. package/cjs/window/BrowserWindow.cjs.map +1 -1
  155. package/cjs/window/BrowserWindow.d.ts +14 -0
  156. package/cjs/window/BrowserWindow.d.ts.map +1 -1
  157. package/lib/PropertySymbol.d.ts +12 -0
  158. package/lib/PropertySymbol.d.ts.map +1 -1
  159. package/lib/PropertySymbol.js +12 -0
  160. package/lib/PropertySymbol.js.map +1 -1
  161. package/lib/async-task-manager/AsyncTaskManager.d.ts +5 -0
  162. package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
  163. package/lib/async-task-manager/AsyncTaskManager.js +67 -18
  164. package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
  165. package/lib/browser/BrowserSettingsFactory.d.ts.map +1 -1
  166. package/lib/browser/BrowserSettingsFactory.js +4 -0
  167. package/lib/browser/BrowserSettingsFactory.js.map +1 -1
  168. package/lib/browser/DefaultBrowserSettings.d.ts.map +1 -1
  169. package/lib/browser/DefaultBrowserSettings.js +3 -0
  170. package/lib/browser/DefaultBrowserSettings.js.map +1 -1
  171. package/lib/browser/types/IBrowserSettings.d.ts +6 -0
  172. package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
  173. package/lib/browser/types/IOptionalBrowserSettings.d.ts +6 -0
  174. package/lib/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
  175. package/lib/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
  176. package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
  177. package/lib/dom/DOMTokenList.d.ts +5 -3
  178. package/lib/dom/DOMTokenList.d.ts.map +1 -1
  179. package/lib/dom/DOMTokenList.js +7 -4
  180. package/lib/dom/DOMTokenList.js.map +1 -1
  181. package/lib/event/EventTarget.d.ts.map +1 -1
  182. package/lib/event/EventTarget.js +31 -5
  183. package/lib/event/EventTarget.js.map +1 -1
  184. package/lib/fetch/Fetch.d.ts +3 -0
  185. package/lib/fetch/Fetch.d.ts.map +1 -1
  186. package/lib/fetch/Fetch.js +64 -10
  187. package/lib/fetch/Fetch.js.map +1 -1
  188. package/lib/fetch/Request.d.ts +65 -9
  189. package/lib/fetch/Request.d.ts.map +1 -1
  190. package/lib/fetch/Request.js +116 -24
  191. package/lib/fetch/Request.js.map +1 -1
  192. package/lib/fetch/ResourceFetch.d.ts +21 -11
  193. package/lib/fetch/ResourceFetch.d.ts.map +1 -1
  194. package/lib/fetch/ResourceFetch.js +68 -13
  195. package/lib/fetch/ResourceFetch.js.map +1 -1
  196. package/lib/fetch/SyncFetch.d.ts.map +1 -1
  197. package/lib/fetch/SyncFetch.js +36 -7
  198. package/lib/fetch/SyncFetch.js.map +1 -1
  199. package/lib/fetch/preload/PreloadEntry.d.ts +26 -0
  200. package/lib/fetch/preload/PreloadEntry.d.ts.map +1 -0
  201. package/lib/fetch/preload/PreloadEntry.js +41 -0
  202. package/lib/fetch/preload/PreloadEntry.js.map +1 -0
  203. package/lib/fetch/preload/PreloadUtility.d.ts +26 -0
  204. package/lib/fetch/preload/PreloadUtility.d.ts.map +1 -0
  205. package/lib/fetch/preload/PreloadUtility.js +26 -0
  206. package/lib/fetch/preload/PreloadUtility.js.map +1 -0
  207. package/lib/fetch/types/IRequestInit.d.ts +2 -0
  208. package/lib/fetch/types/IRequestInit.d.ts.map +1 -1
  209. package/lib/fetch/types/IRequestMode.d.ts +3 -0
  210. package/lib/fetch/types/IRequestMode.d.ts.map +1 -0
  211. package/lib/fetch/types/IRequestMode.js +2 -0
  212. package/lib/fetch/types/IRequestMode.js.map +1 -0
  213. package/lib/fetch/utilities/FetchRequestReferrerUtility.js +1 -1
  214. package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -1
  215. package/lib/module/CSSModule.d.ts +34 -0
  216. package/lib/module/CSSModule.d.ts.map +1 -0
  217. package/lib/module/CSSModule.js +44 -0
  218. package/lib/module/CSSModule.js.map +1 -0
  219. package/lib/module/ECMAScriptModule.d.ts +36 -0
  220. package/lib/module/ECMAScriptModule.d.ts.map +1 -0
  221. package/lib/module/ECMAScriptModule.js +128 -0
  222. package/lib/module/ECMAScriptModule.js.map +1 -0
  223. package/lib/module/ECMAScriptModuleCompiler.d.ts +31 -0
  224. package/lib/module/ECMAScriptModuleCompiler.d.ts.map +1 -0
  225. package/lib/module/ECMAScriptModuleCompiler.js +521 -0
  226. package/lib/module/ECMAScriptModuleCompiler.js.map +1 -0
  227. package/lib/module/IECMAScriptModuleCompiledResult.d.ts +21 -0
  228. package/lib/module/IECMAScriptModuleCompiledResult.d.ts.map +1 -0
  229. package/lib/module/IECMAScriptModuleCompiledResult.js +2 -0
  230. package/lib/module/IECMAScriptModuleCompiledResult.js.map +1 -0
  231. package/lib/module/IECMAScriptModuleImport.d.ts +5 -0
  232. package/lib/module/IECMAScriptModuleImport.d.ts.map +1 -0
  233. package/lib/module/IECMAScriptModuleImport.js +2 -0
  234. package/lib/module/IECMAScriptModuleImport.js.map +1 -0
  235. package/lib/module/IModule.d.ts +21 -0
  236. package/lib/module/IModule.d.ts.map +1 -0
  237. package/lib/module/IModule.js +2 -0
  238. package/lib/module/IModule.js.map +1 -0
  239. package/lib/module/IModuleImportMap.d.ts +10 -0
  240. package/lib/module/IModuleImportMap.d.ts.map +1 -0
  241. package/lib/module/IModuleImportMap.js +2 -0
  242. package/lib/module/IModuleImportMap.js.map +1 -0
  243. package/lib/module/IModuleImportMapRule.d.ts +5 -0
  244. package/lib/module/IModuleImportMapRule.d.ts.map +1 -0
  245. package/lib/module/IModuleImportMapRule.js +2 -0
  246. package/lib/module/IModuleImportMapRule.js.map +1 -0
  247. package/lib/module/IModuleImportMapScope.d.ts +6 -0
  248. package/lib/module/IModuleImportMapScope.d.ts.map +1 -0
  249. package/lib/module/IModuleImportMapScope.js +2 -0
  250. package/lib/module/IModuleImportMapScope.js.map +1 -0
  251. package/lib/module/JSONModule.d.ts +33 -0
  252. package/lib/module/JSONModule.d.ts.map +1 -0
  253. package/lib/module/JSONModule.js +49 -0
  254. package/lib/module/JSONModule.js.map +1 -0
  255. package/lib/module/ModuleFactory.d.ts +33 -0
  256. package/lib/module/ModuleFactory.d.ts.map +1 -0
  257. package/lib/module/ModuleFactory.js +107 -0
  258. package/lib/module/ModuleFactory.js.map +1 -0
  259. package/lib/module/ModuleURLUtility.d.ts +17 -0
  260. package/lib/module/ModuleURLUtility.d.ts.map +1 -0
  261. package/lib/module/ModuleURLUtility.js +41 -0
  262. package/lib/module/ModuleURLUtility.js.map +1 -0
  263. package/lib/module/UnresolvedModule.d.ts +43 -0
  264. package/lib/module/UnresolvedModule.d.ts.map +1 -0
  265. package/lib/module/UnresolvedModule.js +67 -0
  266. package/lib/module/UnresolvedModule.js.map +1 -0
  267. package/lib/nodes/document/Document.d.ts +2 -0
  268. package/lib/nodes/document/Document.d.ts.map +1 -1
  269. package/lib/nodes/document/Document.js +1 -0
  270. package/lib/nodes/document/Document.js.map +1 -1
  271. package/lib/nodes/element/Element.d.ts +6 -0
  272. package/lib/nodes/element/Element.d.ts.map +1 -1
  273. package/lib/nodes/element/Element.js +21 -5
  274. package/lib/nodes/element/Element.js.map +1 -1
  275. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +6 -0
  276. package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
  277. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +8 -0
  278. package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
  279. package/lib/nodes/html-area-element/HTMLAreaElement.d.ts +6 -0
  280. package/lib/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
  281. package/lib/nodes/html-area-element/HTMLAreaElement.js +8 -0
  282. package/lib/nodes/html-area-element/HTMLAreaElement.js.map +1 -1
  283. package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
  284. package/lib/nodes/html-element/HTMLElement.js +3 -0
  285. package/lib/nodes/html-element/HTMLElement.js.map +1 -1
  286. package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
  287. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +7 -3
  288. package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
  289. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +8 -2
  290. package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
  291. package/lib/nodes/html-link-element/HTMLLinkElement.js +147 -19
  292. package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
  293. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts +6 -0
  294. package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
  295. package/lib/nodes/html-media-element/HTMLMediaElement.js +8 -0
  296. package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
  297. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +80 -0
  298. package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
  299. package/lib/nodes/html-script-element/HTMLScriptElement.js +380 -46
  300. package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
  301. package/lib/nodes/html-table-cell-element/HTMLTableCellElement.d.ts +0 -3
  302. package/lib/nodes/html-table-cell-element/HTMLTableCellElement.d.ts.map +1 -1
  303. package/lib/nodes/html-table-cell-element/HTMLTableCellElement.js +0 -1
  304. package/lib/nodes/html-table-cell-element/HTMLTableCellElement.js.map +1 -1
  305. package/lib/utilities/AttributeUtility.d.ts +18 -0
  306. package/lib/utilities/AttributeUtility.d.ts.map +1 -0
  307. package/lib/utilities/AttributeUtility.js +29 -0
  308. package/lib/utilities/AttributeUtility.js.map +1 -0
  309. package/lib/window/BrowserWindow.d.ts +14 -0
  310. package/lib/window/BrowserWindow.d.ts.map +1 -1
  311. package/lib/window/BrowserWindow.js +73 -6
  312. package/lib/window/BrowserWindow.js.map +1 -1
  313. package/package.json +1 -1
  314. package/src/PropertySymbol.ts +12 -0
  315. package/src/async-task-manager/AsyncTaskManager.ts +81 -19
  316. package/src/browser/BrowserSettingsFactory.ts +4 -0
  317. package/src/browser/DefaultBrowserSettings.ts +3 -0
  318. package/src/browser/types/IBrowserSettings.ts +7 -0
  319. package/src/browser/types/IOptionalBrowserSettings.ts +7 -0
  320. package/src/browser/utilities/BrowserFrameNavigator.ts +2 -7
  321. package/src/dom/DOMTokenList.ts +12 -4
  322. package/src/event/EventTarget.ts +31 -11
  323. package/src/fetch/Fetch.ts +82 -16
  324. package/src/fetch/Request.ts +132 -24
  325. package/src/fetch/ResourceFetch.ts +99 -14
  326. package/src/fetch/SyncFetch.ts +41 -9
  327. package/src/fetch/preload/PreloadEntry.ts +46 -0
  328. package/src/fetch/preload/PreloadUtility.ts +33 -0
  329. package/src/fetch/types/IRequestInit.ts +2 -0
  330. package/src/fetch/types/IRequestMode.ts +2 -0
  331. package/src/fetch/utilities/FetchRequestReferrerUtility.ts +1 -1
  332. package/src/module/CSSModule.ts +54 -0
  333. package/src/module/ECMAScriptModule.ts +171 -0
  334. package/src/module/ECMAScriptModuleCompiler.ts +567 -0
  335. package/src/module/IECMAScriptModuleCompiledResult.ts +14 -0
  336. package/src/module/IECMAScriptModuleImport.ts +4 -0
  337. package/src/module/IModule.ts +20 -0
  338. package/src/module/IModuleImportMap.ts +10 -0
  339. package/src/module/IModuleImportMapRule.ts +4 -0
  340. package/src/module/IModuleImportMapScope.ts +6 -0
  341. package/src/module/JSONModule.ts +59 -0
  342. package/src/module/ModuleFactory.ts +134 -0
  343. package/src/module/ModuleURLUtility.ts +51 -0
  344. package/src/module/UnresolvedModule.ts +77 -0
  345. package/src/nodes/document/Document.ts +2 -0
  346. package/src/nodes/element/Element.ts +25 -7
  347. package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +9 -0
  348. package/src/nodes/html-area-element/HTMLAreaElement.ts +9 -0
  349. package/src/nodes/html-element/HTMLElement.ts +3 -0
  350. package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +9 -8
  351. package/src/nodes/html-link-element/HTMLLinkElement.ts +181 -28
  352. package/src/nodes/html-media-element/HTMLMediaElement.ts +9 -0
  353. package/src/nodes/html-script-element/HTMLScriptElement.ts +441 -69
  354. package/src/nodes/html-table-cell-element/HTMLTableCellElement.ts +0 -3
  355. package/src/utilities/AttributeUtility.ts +43 -0
  356. package/src/window/BrowserWindow.ts +77 -10
  357. package/cjs/window/WindowErrorUtility.cjs +0 -85
  358. package/cjs/window/WindowErrorUtility.cjs.map +0 -1
  359. package/cjs/window/WindowErrorUtility.d.ts +0 -27
  360. package/cjs/window/WindowErrorUtility.d.ts.map +0 -1
  361. package/lib/window/WindowErrorUtility.d.ts +0 -27
  362. package/lib/window/WindowErrorUtility.d.ts.map +0 -1
  363. package/lib/window/WindowErrorUtility.js +0 -56
  364. package/lib/window/WindowErrorUtility.js.map +0 -1
  365. package/src/window/WindowErrorUtility.ts +0 -68
@@ -0,0 +1,134 @@
1
+ import { URL } from 'url';
2
+ import IModule from './IModule.js';
3
+ import * as PropertySymbol from '../PropertySymbol.js';
4
+ import CSSModule from './CSSModule.js';
5
+ import JSONModule from './JSONModule.js';
6
+ import UnresolvedModule from './UnresolvedModule.js';
7
+ import WindowBrowserContext from '../window/WindowBrowserContext.js';
8
+ import ResourceFetch from '../fetch/ResourceFetch.js';
9
+ import ECMAScriptModule from './ECMAScriptModule.js';
10
+ import BrowserWindow from '../window/BrowserWindow.js';
11
+ import Location from '../location/Location.js';
12
+
13
+ /**
14
+ * Module factory.
15
+ */
16
+ export default class ModuleFactory {
17
+ /**
18
+ * Fetches the source code of the module from the given URL and creates a new module instance.
19
+ *
20
+ * @param window Window.
21
+ * @param parentURL Parent URL.
22
+ * @param url Module URL.
23
+ * @param [options] Options.
24
+ * @param [options.with] Options.
25
+ * @param [options.with.type] Module type.
26
+ */
27
+ public static async getModule(
28
+ window: BrowserWindow,
29
+ parentURL: URL | Location,
30
+ url: string,
31
+ options?: { with?: { type?: string } }
32
+ ): Promise<IModule> {
33
+ const absoluteURL = this.getURL(window, parentURL, url);
34
+ const absoluteURLString = absoluteURL.href;
35
+ const type = options?.with?.type || 'esm';
36
+
37
+ if (type !== 'esm' && type !== 'css' && type !== 'json') {
38
+ throw new window.TypeError(
39
+ `Failed to import module "${absoluteURL}" from "${parentURL}": Unkown type "${type}"`
40
+ );
41
+ }
42
+
43
+ const cached = <IModule>window[PropertySymbol.modules][type].get(absoluteURLString);
44
+
45
+ if (cached) {
46
+ if (cached instanceof UnresolvedModule) {
47
+ await new Promise((resolve, reject) => {
48
+ cached.addResolveListener(resolve, reject);
49
+ });
50
+ return <IModule>window[PropertySymbol.modules][type].get(absoluteURLString);
51
+ }
52
+ return cached;
53
+ }
54
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
55
+
56
+ if (!browserFrame) {
57
+ throw new window.TypeError(
58
+ `Failed to import module "${absoluteURL}" from "${parentURL}": Window is closed and is no longer attached to a frame`
59
+ );
60
+ }
61
+
62
+ const unresolvedModule = new UnresolvedModule(window, absoluteURL);
63
+
64
+ window[PropertySymbol.modules][type].set(absoluteURLString, unresolvedModule);
65
+
66
+ const resourceFetch = new ResourceFetch(window);
67
+ let source: string;
68
+ try {
69
+ source = await resourceFetch.fetch(absoluteURL, 'module');
70
+ } catch (error) {
71
+ unresolvedModule.resolve(error);
72
+ throw error;
73
+ }
74
+ let module: IModule;
75
+
76
+ switch (type) {
77
+ case 'json':
78
+ module = new JSONModule(window, absoluteURL, source);
79
+ break;
80
+ case 'css':
81
+ module = new CSSModule(window, absoluteURL, source);
82
+ break;
83
+ case 'esm':
84
+ module = new ECMAScriptModule(window, absoluteURL, source);
85
+ break;
86
+ }
87
+
88
+ window[PropertySymbol.modules][type].set(absoluteURLString, module);
89
+
90
+ unresolvedModule.resolve();
91
+
92
+ return module;
93
+ }
94
+
95
+ /**
96
+ * Returns module URL based on parent URL and the import map.
97
+ *
98
+ * @param window Window.
99
+ * @param parentURL Parent URL.
100
+ * @param url Module URL.
101
+ */
102
+ private static getURL(window: BrowserWindow, parentURL: URL | Location, url: string): URL {
103
+ const parentURLString = parentURL.href;
104
+ const absoluteURL = new URL(url, parentURLString);
105
+ const absoluteURLString = absoluteURL.href;
106
+ const importMap = window[PropertySymbol.moduleImportMap];
107
+
108
+ if (!importMap) {
109
+ return absoluteURL;
110
+ }
111
+
112
+ if (importMap.scopes) {
113
+ for (const scope of importMap.scopes) {
114
+ if (parentURLString.includes(scope.scope)) {
115
+ for (const rule of scope.rules) {
116
+ if (absoluteURLString.startsWith(rule.from)) {
117
+ return new URL(rule.to + absoluteURLString.replace(rule.from, ''));
118
+ }
119
+ }
120
+ }
121
+ }
122
+ }
123
+
124
+ if (importMap.imports) {
125
+ for (const rule of importMap.imports) {
126
+ if (absoluteURLString.startsWith(rule.from)) {
127
+ return new URL(rule.to + absoluteURLString.replace(rule.from, ''));
128
+ }
129
+ }
130
+ }
131
+
132
+ return absoluteURL;
133
+ }
134
+ }
@@ -0,0 +1,51 @@
1
+ import { URL } from 'url';
2
+ import * as PropertySymbol from '../PropertySymbol.js';
3
+ import BrowserWindow from '../window/BrowserWindow.js';
4
+ import Location from '../location/Location.js';
5
+
6
+ /**
7
+ * Module URL utility.
8
+ */
9
+ export default class ModuleURLUtility {
10
+ /**
11
+ * Returns module URL based on parent URL and the import map.
12
+ *
13
+ * @param window Window.
14
+ * @param parentURL Parent URL.
15
+ * @param url Module URL.
16
+ */
17
+ public static getURL(
18
+ window: BrowserWindow,
19
+ parentURL: URL | Location | string,
20
+ url: string
21
+ ): URL {
22
+ const parentURLString = typeof parentURL === 'string' ? parentURL : parentURL.href;
23
+ const importMap = window[PropertySymbol.moduleImportMap];
24
+
25
+ if (!importMap) {
26
+ return new URL(url, parentURLString);
27
+ }
28
+
29
+ if (importMap.scopes.length) {
30
+ for (const scope of importMap.scopes) {
31
+ if (parentURLString.includes(scope.scope)) {
32
+ for (const rule of scope.rules) {
33
+ if (url.startsWith(rule.from)) {
34
+ return new URL(rule.to + url.replace(rule.from, ''), parentURLString);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ if (importMap.imports.length) {
42
+ for (const rule of importMap.imports) {
43
+ if (url.startsWith(rule.from)) {
44
+ return new URL(rule.to + url.replace(rule.from, ''), parentURLString);
45
+ }
46
+ }
47
+ }
48
+
49
+ return new URL(url, parentURLString);
50
+ }
51
+ }
@@ -0,0 +1,77 @@
1
+ import BrowserWindow from '../window/BrowserWindow.js';
2
+ import { URL } from 'url';
3
+ import IModule from './IModule.js';
4
+
5
+ /**
6
+ * CSS module.
7
+ */
8
+ export default class UnresolvedModule implements IModule {
9
+ public readonly url: URL;
10
+ readonly #window: BrowserWindow;
11
+ #hooks: { resolve: (value: unknown) => void; reject: (error: Error) => void }[] = [];
12
+ #error: Error | null = null;
13
+
14
+ /**
15
+ * Constructor.
16
+ *
17
+ * @param window Window.
18
+ * @param url Module URL.
19
+ */
20
+ constructor(window: BrowserWindow, url: URL) {
21
+ this.#window = window;
22
+ this.url = url;
23
+ }
24
+
25
+ /**
26
+ * Compiles and evaluates the module.
27
+ *
28
+ * @returns Module exports.
29
+ */
30
+ public async evaluate(): Promise<null> {
31
+ throw new this.#window.TypeError('Unresolved module. We should never end up here.');
32
+ }
33
+
34
+ /**
35
+ * Compiles and preloads the module and its imports.
36
+ *
37
+ * @returns Promise.
38
+ */
39
+ public async preload(): Promise<void> {
40
+ throw new this.#window.TypeError('Unresolved module. We should never end up here.');
41
+ }
42
+
43
+ /**
44
+ * Add a hook to be called when the module is resolved.
45
+ *
46
+ * @param resolve Resolve.
47
+ * @param reject Reject.
48
+ */
49
+ public addResolveListener(
50
+ resolve: (value: unknown) => void,
51
+ reject: (error: Error) => void
52
+ ): void {
53
+ if (this.#error) {
54
+ reject(this.#error);
55
+ return;
56
+ }
57
+ this.#hooks.push({ resolve, reject });
58
+ }
59
+
60
+ /**
61
+ * Resolves the module.
62
+ *
63
+ * @param [error] Error.
64
+ */
65
+ public resolve(error?: Error): void {
66
+ if (error) {
67
+ this.#error = error;
68
+ }
69
+ for (const hook of this.#hooks) {
70
+ if (error) {
71
+ hook.reject(error);
72
+ } else {
73
+ hook.resolve(null);
74
+ }
75
+ }
76
+ }
77
+ }
@@ -49,6 +49,7 @@ import NodeFactory from '../NodeFactory.js';
49
49
  import SVGElementConfig from '../../config/SVGElementConfig.js';
50
50
  import StringUtility from '../../utilities/StringUtility.js';
51
51
  import HTMLParser from '../../html-parser/HTMLParser.js';
52
+ import PreloadEntry from '../../fetch/preload/PreloadEntry.js';
52
53
 
53
54
  const PROCESSING_INSTRUCTION_TARGET_REGEXP = /^[a-z][a-z0-9-]+$/;
54
55
 
@@ -80,6 +81,7 @@ export default class Document extends Node {
80
81
  > = new Map();
81
82
  public [PropertySymbol.contentType]: string = 'text/html';
82
83
  public [PropertySymbol.xmlProcessingInstruction]: ProcessingInstruction | null = null;
84
+ public [PropertySymbol.preloads]: Map<string, PreloadEntry> = new Map();
83
85
  public declare cloneNode: (deep?: boolean) => Document;
84
86
 
85
87
  // Private properties
@@ -14,7 +14,6 @@ import Attr from '../attr/Attr.js';
14
14
  import NamedNodeMap from './NamedNodeMap.js';
15
15
  import Event from '../../event/Event.js';
16
16
  import EventPhaseEnum from '../../event/EventPhaseEnum.js';
17
- import WindowErrorUtility from '../../window/WindowErrorUtility.js';
18
17
  import WindowBrowserContext from '../../window/WindowBrowserContext.js';
19
18
  import BrowserErrorCaptureEnum from '../../browser/enums/BrowserErrorCaptureEnum.js';
20
19
  import NodeTypeEnum from '../node/NodeTypeEnum.js';
@@ -33,6 +32,7 @@ import NodeFactory from '../NodeFactory.js';
33
32
  import HTMLSerializer from '../../html-serializer/HTMLSerializer.js';
34
33
  import HTMLParser from '../../html-parser/HTMLParser.js';
35
34
  import IScrollToOptions from '../../window/IScrollToOptions.js';
35
+ import { AttributeUtility } from '../../utilities/AttributeUtility.js';
36
36
 
37
37
  type InsertAdjacentPosition = 'beforebegin' | 'afterbegin' | 'beforeend' | 'afterend';
38
38
 
@@ -259,6 +259,15 @@ export default class Element
259
259
  return <DOMTokenList>this[PropertySymbol.classList];
260
260
  }
261
261
 
262
+ /**
263
+ * Sets class list.
264
+ *
265
+ * @param value Class list.
266
+ */
267
+ public set classList(value: string) {
268
+ this.setAttribute('class', value);
269
+ }
270
+
262
271
  /**
263
272
  * Returns ID.
264
273
  *
@@ -669,6 +678,12 @@ export default class Element
669
678
  * @param value Value.
670
679
  */
671
680
  public setAttribute(name: string, value: string): void {
681
+ AttributeUtility.validateAttributeName(
682
+ name,
683
+ this[PropertySymbol.ownerDocument][PropertySymbol.contentType],
684
+ { method: 'setAttribute', instance: 'Element' }
685
+ );
686
+ name = String(name);
672
687
  const namespaceURI = this[PropertySymbol.namespaceURI];
673
688
  // TODO: Is it correct to check for namespaceURI === NamespaceURI.svg?
674
689
  const attribute =
@@ -1258,7 +1273,8 @@ export default class Element
1258
1273
  */
1259
1274
  public override dispatchEvent(event: Event): boolean {
1260
1275
  const returnValue = super.dispatchEvent(event);
1261
- const browserSettings = new WindowBrowserContext(this[PropertySymbol.window]).getSettings();
1276
+ const window = this[PropertySymbol.window];
1277
+ const browserSettings = new WindowBrowserContext(window).getSettings();
1262
1278
 
1263
1279
  if (
1264
1280
  browserSettings &&
@@ -1269,17 +1285,19 @@ export default class Element
1269
1285
  const attribute = this.getAttribute('on' + event.type);
1270
1286
 
1271
1287
  if (attribute && !event[PropertySymbol.immediatePropagationStopped]) {
1272
- const code = `//# sourceURL=${this[PropertySymbol.window].location.href}\n${attribute}`;
1288
+ const code = `//# sourceURL=${window.location.href}\n${attribute}`;
1273
1289
 
1274
1290
  if (
1275
1291
  browserSettings.disableErrorCapturing ||
1276
1292
  browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
1277
1293
  ) {
1278
- this[PropertySymbol.window].eval(code);
1294
+ window.eval(code);
1279
1295
  } else {
1280
- WindowErrorUtility.captureError(this[PropertySymbol.window], () =>
1281
- this[PropertySymbol.window].eval(code)
1282
- );
1296
+ try {
1297
+ window.eval(code);
1298
+ } catch (error) {
1299
+ window[PropertySymbol.dispatchError](error);
1300
+ }
1283
1301
  }
1284
1302
  }
1285
1303
  }
@@ -294,6 +294,15 @@ export default class HTMLAnchorElement extends HTMLElement implements IHTMLHyper
294
294
  return <DOMTokenList>this[PropertySymbol.relList];
295
295
  }
296
296
 
297
+ /**
298
+ * Sets rel list.
299
+ *
300
+ * @param value Value.
301
+ */
302
+ public set relList(value: string) {
303
+ this.setAttribute('rel', value);
304
+ }
305
+
297
306
  /**
298
307
  * Returns search.
299
308
  *
@@ -158,6 +158,15 @@ export default class HTMLAreaElement extends HTMLElement implements IHTMLHyperli
158
158
  return <DOMTokenList>this[PropertySymbol.relList];
159
159
  }
160
160
 
161
+ /**
162
+ * Sets rel list.
163
+ *
164
+ * @param value Value.
165
+ */
166
+ public set relList(value: string) {
167
+ this.setAttribute('rel', value);
168
+ }
169
+
161
170
  /**
162
171
  * Returns target.
163
172
  *
@@ -746,6 +746,9 @@ export default class HTMLElement extends Element {
746
746
  }
747
747
 
748
748
  if (newElement[PropertySymbol.isConnected]) {
749
+ if (newElement[PropertySymbol.shadowRoot]) {
750
+ newElement[PropertySymbol.shadowRoot][PropertySymbol.isConnected] = true;
751
+ }
749
752
  newElement[PropertySymbol.connectedToDocument]();
750
753
  }
751
754
  }
@@ -9,7 +9,6 @@ import DOMTokenList from '../../dom/DOMTokenList.js';
9
9
  import Attr from '../attr/Attr.js';
10
10
  import BrowserFrameFactory from '../../browser/utilities/BrowserFrameFactory.js';
11
11
  import BrowserFrameURL from '../../browser/utilities/BrowserFrameURL.js';
12
- import WindowErrorUtility from '../../window/WindowErrorUtility.js';
13
12
  import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
14
13
  import IRequestReferrerPolicy from '../../fetch/types/IRequestReferrerPolicy.js';
15
14
  import WindowBrowserContext from '../../window/WindowBrowserContext.js';
@@ -375,13 +374,12 @@ export default class HTMLIFrameElement extends HTMLElement {
375
374
  }
376
375
 
377
376
  if (browserFrame.page.context.browser.settings.disableIframePageLoading) {
378
- WindowErrorUtility.dispatchError(
379
- this,
380
- new window.DOMException(
381
- `Failed to load iframe page "${targetURL.href}". Iframe page loading is disabled.`,
382
- DOMExceptionNameEnum.notSupportedError
383
- )
377
+ const error = new window.DOMException(
378
+ `Failed to load iframe page "${targetURL.href}". Iframe page loading is disabled.`,
379
+ DOMExceptionNameEnum.notSupportedError
384
380
  );
381
+ browserFrame.page?.console.error(error);
382
+ this.dispatchEvent(new Event('error'));
385
383
  return;
386
384
  }
387
385
 
@@ -400,7 +398,10 @@ export default class HTMLIFrameElement extends HTMLElement {
400
398
  referrerPolicy: <IRequestReferrerPolicy>this.referrerPolicy
401
399
  })
402
400
  .then(() => this.dispatchEvent(new Event('load')))
403
- .catch((error) => WindowErrorUtility.dispatchError(this, error));
401
+ .catch((error) => {
402
+ browserFrame.page?.console.error(error);
403
+ this.dispatchEvent(new Event('error'));
404
+ });
404
405
 
405
406
  this.#contentWindowContainer.window = isSameOrigin
406
407
  ? this.#iframe.window