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,46 @@
1
+ import Response from '../Response.js';
2
+
3
+ /**
4
+ * Preload entry.
5
+ *
6
+ * @see https://html.spec.whatwg.org/multipage/links.html#preload-entry
7
+ */
8
+ export default class PreloadEntry {
9
+ public integrityMetadata: string | null = null;
10
+ public response: Response | null = null;
11
+ public error: Error | null = null;
12
+ #callback: { resolve: (response: Response) => void; reject: (error: Error) => void } | null =
13
+ null;
14
+
15
+ /**
16
+ * On response available.
17
+ *
18
+ * @returns Response.
19
+ */
20
+ public onResponseAvailable(): Promise<Response> {
21
+ return new Promise((resolve, reject) => {
22
+ this.#callback = { resolve, reject };
23
+ });
24
+ }
25
+
26
+ /**
27
+ * Response available.
28
+ *
29
+ * @param error
30
+ * @param response
31
+ */
32
+ public responseAvailable(error: Error | null, response: Response): void {
33
+ this.response = response;
34
+ this.error = error;
35
+
36
+ if (!this.#callback) {
37
+ return;
38
+ }
39
+
40
+ if (error) {
41
+ this.#callback.reject(error);
42
+ } else {
43
+ this.#callback.resolve(response);
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,33 @@
1
+ import IRequestCredentials from '../types/IRequestCredentials.js';
2
+ import IRequestMode from '../types/IRequestMode.js';
3
+
4
+ /**
5
+ * Utility for preloading resources.
6
+ *
7
+ * @see https://html.spec.whatwg.org/multipage/links.html#link-type-preload
8
+ */
9
+ export default class PreloadUtility {
10
+ /**
11
+ * Returns a key for a preload entry.
12
+ *
13
+ * @param options Options.
14
+ * @param options.url URL.
15
+ * @param options.destination Destination.
16
+ * @param options.mode Mode.
17
+ * @param options.credentialsMode Credentials mode.
18
+ * @returns Key.
19
+ */
20
+ public static getKey(options: {
21
+ url: string;
22
+ destination: string;
23
+ mode: IRequestMode;
24
+ credentialsMode: IRequestCredentials;
25
+ }): string {
26
+ return JSON.stringify({
27
+ url: options.url,
28
+ destination: options.destination,
29
+ mode: options.mode,
30
+ credentialsMode: options.credentialsMode
31
+ });
32
+ }
33
+ }
@@ -5,6 +5,7 @@ import IRequestReferrerPolicy from './IRequestReferrerPolicy.js';
5
5
  import IRequestRedirect from './IRequestRedirect.js';
6
6
  import IRequestBody from './IRequestBody.js';
7
7
  import IRequestCredentials from './IRequestCredentials.js';
8
+ import IRequestMode from './IRequestMode.js';
8
9
 
9
10
  /**
10
11
  * Fetch request init.
@@ -13,6 +14,7 @@ export default interface IRequestInit {
13
14
  body?: IRequestBody;
14
15
  headers?: IHeadersInit;
15
16
  method?: string;
17
+ mode?: IRequestMode;
16
18
  redirect?: IRequestRedirect;
17
19
  signal?: AbortSignal | null;
18
20
  referrer?: '' | 'no-referrer' | 'client' | string | URL;
@@ -0,0 +1,2 @@
1
+ type IRequestMode = 'same-origin' | 'cors' | 'no-cors' | 'navigate' | 'websocket';
2
+ export default IRequestMode;
@@ -31,7 +31,7 @@ export default class FetchRequestReferrerUtility {
31
31
  */
32
32
  public static prepareRequest(originURL: URL, request: Request): void {
33
33
  if (!request.referrerPolicy) {
34
- (<string>request.referrerPolicy) = 'strict-origin-when-cross-origin';
34
+ request[PropertySymbol.referrerPolicy] = 'strict-origin-when-cross-origin';
35
35
  }
36
36
 
37
37
  if (request.referrer && request.referrer !== 'no-referrer') {
@@ -0,0 +1,54 @@
1
+ import BrowserWindow from '../window/BrowserWindow.js';
2
+ import { URL } from 'url';
3
+ import IModule from './IModule.js';
4
+ import CSSStyleSheet from '../css/CSSStyleSheet.js';
5
+
6
+ /**
7
+ * CSS module.
8
+ */
9
+ export default class CSSModule implements IModule {
10
+ public readonly url: URL;
11
+ readonly #window: BrowserWindow;
12
+ readonly #source: string;
13
+ #exports: { default: CSSStyleSheet } | null = null;
14
+
15
+ /**
16
+ * Constructor.
17
+ *
18
+ * @param window Window.
19
+ * @param url Module URL.
20
+ * @param source Source code.
21
+ */
22
+ constructor(window: BrowserWindow, url: URL, source: string) {
23
+ this.#window = window;
24
+ this.url = url;
25
+ this.#source = source;
26
+ }
27
+
28
+ /**
29
+ * Compiles and evaluates the module.
30
+ *
31
+ * @returns Module exports.
32
+ */
33
+ public async evaluate(): Promise<{ default: CSSStyleSheet }> {
34
+ if (this.#exports) {
35
+ return this.#exports;
36
+ }
37
+
38
+ const styleSheet = new this.#window.CSSStyleSheet();
39
+ styleSheet.replaceSync(this.#source);
40
+
41
+ this.#exports = { default: styleSheet };
42
+
43
+ return this.#exports;
44
+ }
45
+
46
+ /**
47
+ * Compiles and preloads the module and its imports.
48
+ *
49
+ * @returns Promise.
50
+ */
51
+ public async preload(): Promise<void> {
52
+ await this.evaluate();
53
+ }
54
+ }
@@ -0,0 +1,171 @@
1
+ import BrowserWindow from '../window/BrowserWindow.js';
2
+ import { URL } from 'url';
3
+ import IModule from './IModule.js';
4
+ import ECMAScriptModuleCompiler from './ECMAScriptModuleCompiler.js';
5
+ import * as PropertySymbol from '../PropertySymbol.js';
6
+ import Location from '../location/Location.js';
7
+ import WindowBrowserContext from '../window/WindowBrowserContext.js';
8
+ import IECMAScriptModuleCompiledResult from './IECMAScriptModuleCompiledResult.js';
9
+ import ModuleFactory from './ModuleFactory.js';
10
+
11
+ const EMPTY_COMPILED_RESULT = { imports: [], execute: () => {} };
12
+
13
+ /**
14
+ * ECMAScript module.
15
+ */
16
+ export default class ECMAScriptModule implements IModule {
17
+ public readonly url: URL;
18
+ public readonly [PropertySymbol.window]: BrowserWindow;
19
+ readonly #source: string;
20
+ #preloaded: boolean = false;
21
+ #compiled: IECMAScriptModuleCompiledResult | null = null;
22
+ #exports: { [k: string]: any } | null = null;
23
+
24
+ /**
25
+ * Constructor.
26
+ *
27
+ * @param window Window.
28
+ * @param url Module URL.
29
+ * @param source Source code.
30
+ */
31
+ constructor(window: BrowserWindow, url: URL | Location, source: string) {
32
+ this[PropertySymbol.window] = window;
33
+ this.url = <URL>url;
34
+ this.#source = source;
35
+ }
36
+
37
+ /**
38
+ * Compiles and evaluates the module.
39
+ *
40
+ * @returns Module exports.
41
+ */
42
+ public async evaluate(): Promise<{ [key: string]: any } | null> {
43
+ if (this.#exports) {
44
+ return this.#exports;
45
+ }
46
+
47
+ const compiled = this.#compile();
48
+ const modulePromises: Promise<IModule>[] = [];
49
+ const window = this[PropertySymbol.window];
50
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
51
+
52
+ if (!browserFrame) {
53
+ return {};
54
+ }
55
+
56
+ for (const moduleImport of compiled.imports) {
57
+ modulePromises.push(
58
+ ModuleFactory.getModule(window, this.url, moduleImport.url, {
59
+ with: { type: moduleImport.type }
60
+ })
61
+ );
62
+ }
63
+
64
+ const modules = await Promise.all(modulePromises);
65
+
66
+ const imports = new Map<string, { [key: string]: any }>();
67
+
68
+ for (const module of modules) {
69
+ imports.set(module.url.href, await module.evaluate());
70
+ }
71
+
72
+ const exports = {};
73
+
74
+ this.#exports = exports;
75
+
76
+ compiled.execute({
77
+ dispatchError: window[PropertySymbol.dispatchError].bind(window),
78
+ dynamicImport: this.#import.bind(this),
79
+ imports,
80
+ exports
81
+ });
82
+
83
+ return exports;
84
+ }
85
+
86
+ /**
87
+ * Compiles and preloads the module and its imports.
88
+ *
89
+ * @returns Promise.
90
+ */
91
+ public async preload(): Promise<void> {
92
+ if (this.#preloaded) {
93
+ return;
94
+ }
95
+
96
+ this.#preloaded = true;
97
+
98
+ const compiled = this.#compile();
99
+ const modulePromises: Promise<IModule>[] = [];
100
+ const window = this[PropertySymbol.window];
101
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
102
+
103
+ if (!browserFrame) {
104
+ return;
105
+ }
106
+
107
+ for (const moduleImport of compiled.imports) {
108
+ modulePromises.push(
109
+ ModuleFactory.getModule(window, this.url, moduleImport.url, {
110
+ with: { type: moduleImport.type }
111
+ })
112
+ );
113
+ }
114
+
115
+ const modules = await Promise.all(modulePromises);
116
+
117
+ const promises: Promise<void>[] = [];
118
+ for (const module of modules) {
119
+ promises.push(module.preload());
120
+ }
121
+
122
+ await Promise.all(promises);
123
+ }
124
+
125
+ /**
126
+ * Compiles the module.
127
+ */
128
+ #compile(): IECMAScriptModuleCompiledResult {
129
+ if (this.#compiled) {
130
+ return this.#compiled;
131
+ }
132
+
133
+ // In case of an error, the compiled module will be empty.
134
+ this.#compiled = EMPTY_COMPILED_RESULT;
135
+
136
+ const compiler = new ECMAScriptModuleCompiler(this[PropertySymbol.window]);
137
+
138
+ this.#compiled = compiler.compile(this.url.href, this.#source);
139
+
140
+ return this.#compiled;
141
+ }
142
+
143
+ /**
144
+ * Imports a module.
145
+ *
146
+ * @param url URL.
147
+ * @param [options] Options.
148
+ * @param [options.with] With.
149
+ * @param [options.with.type] Type.
150
+ */
151
+ async #import(
152
+ url: string,
153
+ options?: { with?: { type?: string } }
154
+ ): Promise<{ [key: string]: any }> {
155
+ const window = this[PropertySymbol.window];
156
+ const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
157
+
158
+ if (!browserFrame) {
159
+ return;
160
+ }
161
+
162
+ const asyncTaskManager = browserFrame[PropertySymbol.asyncTaskManager];
163
+ const taskID = asyncTaskManager?.startTask();
164
+ const module = await ModuleFactory.getModule(window, this.url, url, options);
165
+ const exports = await module.evaluate();
166
+
167
+ asyncTaskManager.endTask(taskID);
168
+
169
+ return exports;
170
+ }
171
+ }