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.
- package/cjs/PropertySymbol.cjs +13 -1
- package/cjs/PropertySymbol.cjs.map +1 -1
- package/cjs/PropertySymbol.d.ts +12 -0
- package/cjs/PropertySymbol.d.ts.map +1 -1
- package/cjs/async-task-manager/AsyncTaskManager.cjs +67 -18
- package/cjs/async-task-manager/AsyncTaskManager.cjs.map +1 -1
- package/cjs/async-task-manager/AsyncTaskManager.d.ts +5 -0
- package/cjs/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/cjs/browser/BrowserSettingsFactory.cjs +4 -0
- package/cjs/browser/BrowserSettingsFactory.cjs.map +1 -1
- package/cjs/browser/BrowserSettingsFactory.d.ts.map +1 -1
- package/cjs/browser/DefaultBrowserSettings.cjs +3 -0
- package/cjs/browser/DefaultBrowserSettings.cjs.map +1 -1
- package/cjs/browser/DefaultBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/types/IBrowserSettings.d.ts +6 -0
- package/cjs/browser/types/IBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/types/IOptionalBrowserSettings.d.ts +6 -0
- package/cjs/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.cjs.map +1 -1
- package/cjs/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
- package/cjs/dom/DOMTokenList.cjs +7 -4
- package/cjs/dom/DOMTokenList.cjs.map +1 -1
- package/cjs/dom/DOMTokenList.d.ts +5 -3
- package/cjs/dom/DOMTokenList.d.ts.map +1 -1
- package/cjs/event/EventTarget.cjs +31 -5
- package/cjs/event/EventTarget.cjs.map +1 -1
- package/cjs/event/EventTarget.d.ts.map +1 -1
- package/cjs/fetch/Fetch.cjs +67 -13
- package/cjs/fetch/Fetch.cjs.map +1 -1
- package/cjs/fetch/Fetch.d.ts +3 -0
- package/cjs/fetch/Fetch.d.ts.map +1 -1
- package/cjs/fetch/Request.cjs +119 -27
- package/cjs/fetch/Request.cjs.map +1 -1
- package/cjs/fetch/Request.d.ts +65 -9
- package/cjs/fetch/Request.d.ts.map +1 -1
- package/cjs/fetch/ResourceFetch.cjs +91 -13
- package/cjs/fetch/ResourceFetch.cjs.map +1 -1
- package/cjs/fetch/ResourceFetch.d.ts +21 -11
- package/cjs/fetch/ResourceFetch.d.ts.map +1 -1
- package/cjs/fetch/SyncFetch.cjs +36 -7
- package/cjs/fetch/SyncFetch.cjs.map +1 -1
- package/cjs/fetch/SyncFetch.d.ts.map +1 -1
- package/cjs/fetch/preload/PreloadEntry.cjs +44 -0
- package/cjs/fetch/preload/PreloadEntry.cjs.map +1 -0
- package/cjs/fetch/preload/PreloadEntry.d.ts +26 -0
- package/cjs/fetch/preload/PreloadEntry.d.ts.map +1 -0
- package/cjs/fetch/preload/PreloadUtility.cjs +29 -0
- package/cjs/fetch/preload/PreloadUtility.cjs.map +1 -0
- package/cjs/fetch/preload/PreloadUtility.d.ts +26 -0
- package/cjs/fetch/preload/PreloadUtility.d.ts.map +1 -0
- package/cjs/fetch/types/IRequestInit.d.ts +2 -0
- package/cjs/fetch/types/IRequestInit.d.ts.map +1 -1
- package/cjs/fetch/types/IRequestMode.cjs +3 -0
- package/cjs/fetch/types/IRequestMode.cjs.map +1 -0
- package/cjs/fetch/types/IRequestMode.d.ts +3 -0
- package/cjs/fetch/types/IRequestMode.d.ts.map +1 -0
- package/cjs/fetch/utilities/FetchRequestReferrerUtility.cjs +1 -1
- package/cjs/fetch/utilities/FetchRequestReferrerUtility.cjs.map +1 -1
- package/cjs/module/CSSModule.cjs +47 -0
- package/cjs/module/CSSModule.cjs.map +1 -0
- package/cjs/module/CSSModule.d.ts +34 -0
- package/cjs/module/CSSModule.d.ts.map +1 -0
- package/cjs/module/ECMAScriptModule.cjs +157 -0
- package/cjs/module/ECMAScriptModule.cjs.map +1 -0
- package/cjs/module/ECMAScriptModule.d.ts +36 -0
- package/cjs/module/ECMAScriptModule.d.ts.map +1 -0
- package/cjs/module/ECMAScriptModuleCompiler.cjs +550 -0
- package/cjs/module/ECMAScriptModuleCompiler.cjs.map +1 -0
- package/cjs/module/ECMAScriptModuleCompiler.d.ts +31 -0
- package/cjs/module/ECMAScriptModuleCompiler.d.ts.map +1 -0
- package/cjs/module/IECMAScriptModuleCompiledResult.cjs +3 -0
- package/cjs/module/IECMAScriptModuleCompiledResult.cjs.map +1 -0
- package/cjs/module/IECMAScriptModuleCompiledResult.d.ts +21 -0
- package/cjs/module/IECMAScriptModuleCompiledResult.d.ts.map +1 -0
- package/cjs/module/IECMAScriptModuleImport.cjs +3 -0
- package/cjs/module/IECMAScriptModuleImport.cjs.map +1 -0
- package/cjs/module/IECMAScriptModuleImport.d.ts +5 -0
- package/cjs/module/IECMAScriptModuleImport.d.ts.map +1 -0
- package/cjs/module/IModule.cjs +3 -0
- package/cjs/module/IModule.cjs.map +1 -0
- package/cjs/module/IModule.d.ts +21 -0
- package/cjs/module/IModule.d.ts.map +1 -0
- package/cjs/module/IModuleImportMap.cjs +3 -0
- package/cjs/module/IModuleImportMap.cjs.map +1 -0
- package/cjs/module/IModuleImportMap.d.ts +10 -0
- package/cjs/module/IModuleImportMap.d.ts.map +1 -0
- package/cjs/module/IModuleImportMapRule.cjs +3 -0
- package/cjs/module/IModuleImportMapRule.cjs.map +1 -0
- package/cjs/module/IModuleImportMapRule.d.ts +5 -0
- package/cjs/module/IModuleImportMapRule.d.ts.map +1 -0
- package/cjs/module/IModuleImportMapScope.cjs +3 -0
- package/cjs/module/IModuleImportMapScope.cjs.map +1 -0
- package/cjs/module/IModuleImportMapScope.d.ts +6 -0
- package/cjs/module/IModuleImportMapScope.d.ts.map +1 -0
- package/cjs/module/JSONModule.cjs +52 -0
- package/cjs/module/JSONModule.cjs.map +1 -0
- package/cjs/module/JSONModule.d.ts +33 -0
- package/cjs/module/JSONModule.d.ts.map +1 -0
- package/cjs/module/ModuleFactory.cjs +136 -0
- package/cjs/module/ModuleFactory.cjs.map +1 -0
- package/cjs/module/ModuleFactory.d.ts +33 -0
- package/cjs/module/ModuleFactory.d.ts.map +1 -0
- package/cjs/module/ModuleURLUtility.cjs +67 -0
- package/cjs/module/ModuleURLUtility.cjs.map +1 -0
- package/cjs/module/ModuleURLUtility.d.ts +17 -0
- package/cjs/module/ModuleURLUtility.d.ts.map +1 -0
- package/cjs/module/UnresolvedModule.cjs +70 -0
- package/cjs/module/UnresolvedModule.cjs.map +1 -0
- package/cjs/module/UnresolvedModule.d.ts +43 -0
- package/cjs/module/UnresolvedModule.d.ts.map +1 -0
- package/cjs/nodes/document/Document.cjs +1 -0
- package/cjs/nodes/document/Document.cjs.map +1 -1
- package/cjs/nodes/document/Document.d.ts +2 -0
- package/cjs/nodes/document/Document.d.ts.map +1 -1
- package/cjs/nodes/element/Element.cjs +21 -5
- package/cjs/nodes/element/Element.cjs.map +1 -1
- package/cjs/nodes/element/Element.d.ts +6 -0
- package/cjs/nodes/element/Element.d.ts.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs +8 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.cjs.map +1 -1
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts +6 -0
- package/cjs/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/cjs/nodes/html-area-element/HTMLAreaElement.cjs +8 -0
- package/cjs/nodes/html-area-element/HTMLAreaElement.cjs.map +1 -1
- package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts +6 -0
- package/cjs/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.cjs +3 -0
- package/cjs/nodes/html-element/HTMLElement.cjs.map +1 -1
- package/cjs/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs +7 -3
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.cjs.map +1 -1
- package/cjs/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs +147 -19
- package/cjs/nodes/html-link-element/HTMLLinkElement.cjs.map +1 -1
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts +8 -2
- package/cjs/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/cjs/nodes/html-media-element/HTMLMediaElement.cjs +8 -0
- package/cjs/nodes/html-media-element/HTMLMediaElement.cjs.map +1 -1
- package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts +6 -0
- package/cjs/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs +380 -46
- package/cjs/nodes/html-script-element/HTMLScriptElement.cjs.map +1 -1
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts +80 -0
- package/cjs/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.cjs +0 -1
- package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.cjs.map +1 -1
- package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.d.ts +0 -3
- package/cjs/nodes/html-table-cell-element/HTMLTableCellElement.d.ts.map +1 -1
- package/cjs/utilities/AttributeUtility.cjs +36 -0
- package/cjs/utilities/AttributeUtility.cjs.map +1 -0
- package/cjs/utilities/AttributeUtility.d.ts +18 -0
- package/cjs/utilities/AttributeUtility.d.ts.map +1 -0
- package/cjs/window/BrowserWindow.cjs +73 -6
- package/cjs/window/BrowserWindow.cjs.map +1 -1
- package/cjs/window/BrowserWindow.d.ts +14 -0
- package/cjs/window/BrowserWindow.d.ts.map +1 -1
- package/lib/PropertySymbol.d.ts +12 -0
- package/lib/PropertySymbol.d.ts.map +1 -1
- package/lib/PropertySymbol.js +12 -0
- package/lib/PropertySymbol.js.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.d.ts +5 -0
- package/lib/async-task-manager/AsyncTaskManager.d.ts.map +1 -1
- package/lib/async-task-manager/AsyncTaskManager.js +67 -18
- package/lib/async-task-manager/AsyncTaskManager.js.map +1 -1
- package/lib/browser/BrowserSettingsFactory.d.ts.map +1 -1
- package/lib/browser/BrowserSettingsFactory.js +4 -0
- package/lib/browser/BrowserSettingsFactory.js.map +1 -1
- package/lib/browser/DefaultBrowserSettings.d.ts.map +1 -1
- package/lib/browser/DefaultBrowserSettings.js +3 -0
- package/lib/browser/DefaultBrowserSettings.js.map +1 -1
- package/lib/browser/types/IBrowserSettings.d.ts +6 -0
- package/lib/browser/types/IBrowserSettings.d.ts.map +1 -1
- package/lib/browser/types/IOptionalBrowserSettings.d.ts +6 -0
- package/lib/browser/types/IOptionalBrowserSettings.d.ts.map +1 -1
- package/lib/browser/utilities/BrowserFrameNavigator.d.ts.map +1 -1
- package/lib/browser/utilities/BrowserFrameNavigator.js.map +1 -1
- package/lib/dom/DOMTokenList.d.ts +5 -3
- package/lib/dom/DOMTokenList.d.ts.map +1 -1
- package/lib/dom/DOMTokenList.js +7 -4
- package/lib/dom/DOMTokenList.js.map +1 -1
- package/lib/event/EventTarget.d.ts.map +1 -1
- package/lib/event/EventTarget.js +31 -5
- package/lib/event/EventTarget.js.map +1 -1
- package/lib/fetch/Fetch.d.ts +3 -0
- package/lib/fetch/Fetch.d.ts.map +1 -1
- package/lib/fetch/Fetch.js +64 -10
- package/lib/fetch/Fetch.js.map +1 -1
- package/lib/fetch/Request.d.ts +65 -9
- package/lib/fetch/Request.d.ts.map +1 -1
- package/lib/fetch/Request.js +116 -24
- package/lib/fetch/Request.js.map +1 -1
- package/lib/fetch/ResourceFetch.d.ts +21 -11
- package/lib/fetch/ResourceFetch.d.ts.map +1 -1
- package/lib/fetch/ResourceFetch.js +68 -13
- package/lib/fetch/ResourceFetch.js.map +1 -1
- package/lib/fetch/SyncFetch.d.ts.map +1 -1
- package/lib/fetch/SyncFetch.js +36 -7
- package/lib/fetch/SyncFetch.js.map +1 -1
- package/lib/fetch/preload/PreloadEntry.d.ts +26 -0
- package/lib/fetch/preload/PreloadEntry.d.ts.map +1 -0
- package/lib/fetch/preload/PreloadEntry.js +41 -0
- package/lib/fetch/preload/PreloadEntry.js.map +1 -0
- package/lib/fetch/preload/PreloadUtility.d.ts +26 -0
- package/lib/fetch/preload/PreloadUtility.d.ts.map +1 -0
- package/lib/fetch/preload/PreloadUtility.js +26 -0
- package/lib/fetch/preload/PreloadUtility.js.map +1 -0
- package/lib/fetch/types/IRequestInit.d.ts +2 -0
- package/lib/fetch/types/IRequestInit.d.ts.map +1 -1
- package/lib/fetch/types/IRequestMode.d.ts +3 -0
- package/lib/fetch/types/IRequestMode.d.ts.map +1 -0
- package/lib/fetch/types/IRequestMode.js +2 -0
- package/lib/fetch/types/IRequestMode.js.map +1 -0
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js +1 -1
- package/lib/fetch/utilities/FetchRequestReferrerUtility.js.map +1 -1
- package/lib/module/CSSModule.d.ts +34 -0
- package/lib/module/CSSModule.d.ts.map +1 -0
- package/lib/module/CSSModule.js +44 -0
- package/lib/module/CSSModule.js.map +1 -0
- package/lib/module/ECMAScriptModule.d.ts +36 -0
- package/lib/module/ECMAScriptModule.d.ts.map +1 -0
- package/lib/module/ECMAScriptModule.js +128 -0
- package/lib/module/ECMAScriptModule.js.map +1 -0
- package/lib/module/ECMAScriptModuleCompiler.d.ts +31 -0
- package/lib/module/ECMAScriptModuleCompiler.d.ts.map +1 -0
- package/lib/module/ECMAScriptModuleCompiler.js +521 -0
- package/lib/module/ECMAScriptModuleCompiler.js.map +1 -0
- package/lib/module/IECMAScriptModuleCompiledResult.d.ts +21 -0
- package/lib/module/IECMAScriptModuleCompiledResult.d.ts.map +1 -0
- package/lib/module/IECMAScriptModuleCompiledResult.js +2 -0
- package/lib/module/IECMAScriptModuleCompiledResult.js.map +1 -0
- package/lib/module/IECMAScriptModuleImport.d.ts +5 -0
- package/lib/module/IECMAScriptModuleImport.d.ts.map +1 -0
- package/lib/module/IECMAScriptModuleImport.js +2 -0
- package/lib/module/IECMAScriptModuleImport.js.map +1 -0
- package/lib/module/IModule.d.ts +21 -0
- package/lib/module/IModule.d.ts.map +1 -0
- package/lib/module/IModule.js +2 -0
- package/lib/module/IModule.js.map +1 -0
- package/lib/module/IModuleImportMap.d.ts +10 -0
- package/lib/module/IModuleImportMap.d.ts.map +1 -0
- package/lib/module/IModuleImportMap.js +2 -0
- package/lib/module/IModuleImportMap.js.map +1 -0
- package/lib/module/IModuleImportMapRule.d.ts +5 -0
- package/lib/module/IModuleImportMapRule.d.ts.map +1 -0
- package/lib/module/IModuleImportMapRule.js +2 -0
- package/lib/module/IModuleImportMapRule.js.map +1 -0
- package/lib/module/IModuleImportMapScope.d.ts +6 -0
- package/lib/module/IModuleImportMapScope.d.ts.map +1 -0
- package/lib/module/IModuleImportMapScope.js +2 -0
- package/lib/module/IModuleImportMapScope.js.map +1 -0
- package/lib/module/JSONModule.d.ts +33 -0
- package/lib/module/JSONModule.d.ts.map +1 -0
- package/lib/module/JSONModule.js +49 -0
- package/lib/module/JSONModule.js.map +1 -0
- package/lib/module/ModuleFactory.d.ts +33 -0
- package/lib/module/ModuleFactory.d.ts.map +1 -0
- package/lib/module/ModuleFactory.js +107 -0
- package/lib/module/ModuleFactory.js.map +1 -0
- package/lib/module/ModuleURLUtility.d.ts +17 -0
- package/lib/module/ModuleURLUtility.d.ts.map +1 -0
- package/lib/module/ModuleURLUtility.js +41 -0
- package/lib/module/ModuleURLUtility.js.map +1 -0
- package/lib/module/UnresolvedModule.d.ts +43 -0
- package/lib/module/UnresolvedModule.d.ts.map +1 -0
- package/lib/module/UnresolvedModule.js +67 -0
- package/lib/module/UnresolvedModule.js.map +1 -0
- package/lib/nodes/document/Document.d.ts +2 -0
- package/lib/nodes/document/Document.d.ts.map +1 -1
- package/lib/nodes/document/Document.js +1 -0
- package/lib/nodes/document/Document.js.map +1 -1
- package/lib/nodes/element/Element.d.ts +6 -0
- package/lib/nodes/element/Element.d.ts.map +1 -1
- package/lib/nodes/element/Element.js +21 -5
- package/lib/nodes/element/Element.js.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts +6 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.d.ts.map +1 -1
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js +8 -0
- package/lib/nodes/html-anchor-element/HTMLAnchorElement.js.map +1 -1
- package/lib/nodes/html-area-element/HTMLAreaElement.d.ts +6 -0
- package/lib/nodes/html-area-element/HTMLAreaElement.d.ts.map +1 -1
- package/lib/nodes/html-area-element/HTMLAreaElement.js +8 -0
- package/lib/nodes/html-area-element/HTMLAreaElement.js.map +1 -1
- package/lib/nodes/html-element/HTMLElement.d.ts.map +1 -1
- package/lib/nodes/html-element/HTMLElement.js +3 -0
- package/lib/nodes/html-element/HTMLElement.js.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.d.ts.map +1 -1
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js +7 -3
- package/lib/nodes/html-iframe-element/HTMLIFrameElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts +8 -2
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +147 -19
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.d.ts +6 -0
- package/lib/nodes/html-media-element/HTMLMediaElement.d.ts.map +1 -1
- package/lib/nodes/html-media-element/HTMLMediaElement.js +8 -0
- package/lib/nodes/html-media-element/HTMLMediaElement.js.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts +80 -0
- package/lib/nodes/html-script-element/HTMLScriptElement.d.ts.map +1 -1
- package/lib/nodes/html-script-element/HTMLScriptElement.js +380 -46
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-table-cell-element/HTMLTableCellElement.d.ts +0 -3
- package/lib/nodes/html-table-cell-element/HTMLTableCellElement.d.ts.map +1 -1
- package/lib/nodes/html-table-cell-element/HTMLTableCellElement.js +0 -1
- package/lib/nodes/html-table-cell-element/HTMLTableCellElement.js.map +1 -1
- package/lib/utilities/AttributeUtility.d.ts +18 -0
- package/lib/utilities/AttributeUtility.d.ts.map +1 -0
- package/lib/utilities/AttributeUtility.js +29 -0
- package/lib/utilities/AttributeUtility.js.map +1 -0
- package/lib/window/BrowserWindow.d.ts +14 -0
- package/lib/window/BrowserWindow.d.ts.map +1 -1
- package/lib/window/BrowserWindow.js +73 -6
- package/lib/window/BrowserWindow.js.map +1 -1
- package/package.json +1 -1
- package/src/PropertySymbol.ts +12 -0
- package/src/async-task-manager/AsyncTaskManager.ts +81 -19
- package/src/browser/BrowserSettingsFactory.ts +4 -0
- package/src/browser/DefaultBrowserSettings.ts +3 -0
- package/src/browser/types/IBrowserSettings.ts +7 -0
- package/src/browser/types/IOptionalBrowserSettings.ts +7 -0
- package/src/browser/utilities/BrowserFrameNavigator.ts +2 -7
- package/src/dom/DOMTokenList.ts +12 -4
- package/src/event/EventTarget.ts +31 -11
- package/src/fetch/Fetch.ts +82 -16
- package/src/fetch/Request.ts +132 -24
- package/src/fetch/ResourceFetch.ts +99 -14
- package/src/fetch/SyncFetch.ts +41 -9
- package/src/fetch/preload/PreloadEntry.ts +46 -0
- package/src/fetch/preload/PreloadUtility.ts +33 -0
- package/src/fetch/types/IRequestInit.ts +2 -0
- package/src/fetch/types/IRequestMode.ts +2 -0
- package/src/fetch/utilities/FetchRequestReferrerUtility.ts +1 -1
- package/src/module/CSSModule.ts +54 -0
- package/src/module/ECMAScriptModule.ts +171 -0
- package/src/module/ECMAScriptModuleCompiler.ts +567 -0
- package/src/module/IECMAScriptModuleCompiledResult.ts +14 -0
- package/src/module/IECMAScriptModuleImport.ts +4 -0
- package/src/module/IModule.ts +20 -0
- package/src/module/IModuleImportMap.ts +10 -0
- package/src/module/IModuleImportMapRule.ts +4 -0
- package/src/module/IModuleImportMapScope.ts +6 -0
- package/src/module/JSONModule.ts +59 -0
- package/src/module/ModuleFactory.ts +134 -0
- package/src/module/ModuleURLUtility.ts +51 -0
- package/src/module/UnresolvedModule.ts +77 -0
- package/src/nodes/document/Document.ts +2 -0
- package/src/nodes/element/Element.ts +25 -7
- package/src/nodes/html-anchor-element/HTMLAnchorElement.ts +9 -0
- package/src/nodes/html-area-element/HTMLAreaElement.ts +9 -0
- package/src/nodes/html-element/HTMLElement.ts +3 -0
- package/src/nodes/html-iframe-element/HTMLIFrameElement.ts +9 -8
- package/src/nodes/html-link-element/HTMLLinkElement.ts +181 -28
- package/src/nodes/html-media-element/HTMLMediaElement.ts +9 -0
- package/src/nodes/html-script-element/HTMLScriptElement.ts +441 -69
- package/src/nodes/html-table-cell-element/HTMLTableCellElement.ts +0 -3
- package/src/utilities/AttributeUtility.ts +43 -0
- package/src/window/BrowserWindow.ts +77 -10
- package/cjs/window/WindowErrorUtility.cjs +0 -85
- package/cjs/window/WindowErrorUtility.cjs.map +0 -1
- package/cjs/window/WindowErrorUtility.d.ts +0 -27
- package/cjs/window/WindowErrorUtility.d.ts.map +0 -1
- package/lib/window/WindowErrorUtility.d.ts +0 -27
- package/lib/window/WindowErrorUtility.d.ts.map +0 -1
- package/lib/window/WindowErrorUtility.js +0 -56
- package/lib/window/WindowErrorUtility.js.map +0 -1
- package/src/window/WindowErrorUtility.ts +0 -68
@@ -2,13 +2,16 @@ import HTMLElement from '../html-element/HTMLElement.js';
|
|
2
2
|
import * as PropertySymbol from '../../PropertySymbol.js';
|
3
3
|
import Event from '../../event/Event.js';
|
4
4
|
import ErrorEvent from '../../event/events/ErrorEvent.js';
|
5
|
-
import WindowErrorUtility from '../../window/WindowErrorUtility.js';
|
6
5
|
import WindowBrowserContext from '../../window/WindowBrowserContext.js';
|
7
6
|
import BrowserErrorCaptureEnum from '../../browser/enums/BrowserErrorCaptureEnum.js';
|
8
7
|
import Attr from '../attr/Attr.js';
|
9
8
|
import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum.js';
|
10
9
|
import ResourceFetch from '../../fetch/ResourceFetch.js';
|
11
|
-
import
|
10
|
+
import ECMAScriptModule from '../../module/ECMAScriptModule.js';
|
11
|
+
import ModuleFactory from '../../module/ModuleFactory.js';
|
12
|
+
import DOMTokenList from '../../dom/DOMTokenList.js';
|
13
|
+
import IModuleImportMap from '../../module/IModuleImportMap.js';
|
14
|
+
import IRequestReferrerPolicy from '../../fetch/types/IRequestReferrerPolicy.js';
|
12
15
|
|
13
16
|
/**
|
14
17
|
* HTML Script Element.
|
@@ -26,9 +29,11 @@ export default class HTMLScriptElement extends HTMLElement {
|
|
26
29
|
|
27
30
|
// Internal properties
|
28
31
|
public [PropertySymbol.evaluateScript] = true;
|
32
|
+
public [PropertySymbol.blocking]: DOMTokenList | null = null;
|
29
33
|
|
30
34
|
// Private properties
|
31
35
|
#loadedScriptURL: string | null = null;
|
36
|
+
|
32
37
|
/**
|
33
38
|
* Returns type.
|
34
39
|
*
|
@@ -47,6 +52,144 @@ export default class HTMLScriptElement extends HTMLElement {
|
|
47
52
|
this.setAttribute('type', type);
|
48
53
|
}
|
49
54
|
|
55
|
+
/**
|
56
|
+
* Returns blocking.
|
57
|
+
*/
|
58
|
+
public get blocking(): DOMTokenList {
|
59
|
+
if (!this[PropertySymbol.blocking]) {
|
60
|
+
this[PropertySymbol.blocking] = new DOMTokenList(
|
61
|
+
PropertySymbol.illegalConstructor,
|
62
|
+
this,
|
63
|
+
'blocking'
|
64
|
+
);
|
65
|
+
}
|
66
|
+
return this[PropertySymbol.blocking];
|
67
|
+
}
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Sets blocking.
|
71
|
+
*
|
72
|
+
* @param value Value.
|
73
|
+
*/
|
74
|
+
public set blocking(value: string) {
|
75
|
+
this.setAttribute('blocking', value);
|
76
|
+
}
|
77
|
+
|
78
|
+
/**
|
79
|
+
* Returns crossOrigin.
|
80
|
+
*
|
81
|
+
* @returns CrossOrigin.
|
82
|
+
*/
|
83
|
+
public get crossOrigin(): string {
|
84
|
+
return this.getAttribute('crossorigin') || '';
|
85
|
+
}
|
86
|
+
|
87
|
+
/**
|
88
|
+
* Sets crossOrigin.
|
89
|
+
*
|
90
|
+
* @param crossOrigin CrossOrigin.
|
91
|
+
*/
|
92
|
+
public set crossOrigin(crossOrigin: string) {
|
93
|
+
this.setAttribute('crossorigin', crossOrigin);
|
94
|
+
}
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Returns fetch priority.
|
98
|
+
*
|
99
|
+
* @returns Fetch priority.
|
100
|
+
*/
|
101
|
+
public get fetchPriority(): 'auto' | 'high' | 'low' | 'normal' {
|
102
|
+
const fetchPriority = this.getAttribute('fetchpriority');
|
103
|
+
switch (fetchPriority) {
|
104
|
+
case 'high':
|
105
|
+
case 'low':
|
106
|
+
case 'normal':
|
107
|
+
return fetchPriority;
|
108
|
+
default:
|
109
|
+
return 'auto';
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Sets fetch priority.
|
115
|
+
*
|
116
|
+
* @param fetchPriority Fetch priority.
|
117
|
+
*/
|
118
|
+
public set fetchPriority(fetchPriority: 'auto' | 'high' | 'low' | 'normal') {
|
119
|
+
this.setAttribute('fetchpriority', fetchPriority);
|
120
|
+
}
|
121
|
+
|
122
|
+
/**
|
123
|
+
* Returns noModule.
|
124
|
+
*
|
125
|
+
* @returns NoModule.
|
126
|
+
*/
|
127
|
+
public get noModule(): boolean {
|
128
|
+
return this.getAttribute('nomodule') !== null;
|
129
|
+
}
|
130
|
+
|
131
|
+
/**
|
132
|
+
* Sets noModule.
|
133
|
+
*
|
134
|
+
* @param noModule NoModule.
|
135
|
+
*/
|
136
|
+
public set noModule(noModule: boolean) {
|
137
|
+
if (noModule) {
|
138
|
+
this.setAttribute('nomodule', '');
|
139
|
+
} else {
|
140
|
+
this.removeAttribute('nomodule');
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
/**
|
145
|
+
* Returns integrity.
|
146
|
+
*
|
147
|
+
* @returns Integrity.
|
148
|
+
*/
|
149
|
+
public get integrity(): string {
|
150
|
+
return this.getAttribute('integrity') || '';
|
151
|
+
}
|
152
|
+
|
153
|
+
/**
|
154
|
+
* Sets integrity.
|
155
|
+
*
|
156
|
+
* @param integrity Integrity.
|
157
|
+
*/
|
158
|
+
public set integrity(integrity: string) {
|
159
|
+
this.setAttribute('integrity', integrity);
|
160
|
+
}
|
161
|
+
|
162
|
+
/**
|
163
|
+
* Returns referrerPolicy.
|
164
|
+
*
|
165
|
+
* @returns ReferrerPolicy.
|
166
|
+
*/
|
167
|
+
public get referrerPolicy(): IRequestReferrerPolicy {
|
168
|
+
const referrerPolicy = this.getAttribute('referrerpolicy');
|
169
|
+
switch (referrerPolicy) {
|
170
|
+
case 'no-referrer':
|
171
|
+
case 'no-referrer-when-downgrade':
|
172
|
+
case 'same-origin':
|
173
|
+
case 'origin':
|
174
|
+
case 'strict-origin':
|
175
|
+
case 'origin-when-cross-origin':
|
176
|
+
case 'strict-origin-when-cross-origin':
|
177
|
+
case 'unsafe-url':
|
178
|
+
return referrerPolicy;
|
179
|
+
default:
|
180
|
+
return '';
|
181
|
+
}
|
182
|
+
}
|
183
|
+
|
184
|
+
/**
|
185
|
+
* Sets referrerPolicy.
|
186
|
+
*
|
187
|
+
* @param referrerPolicy ReferrerPolicy.
|
188
|
+
*/
|
189
|
+
public set referrerPolicy(referrerPolicy: string) {
|
190
|
+
this.setAttribute('referrerpolicy', referrerPolicy);
|
191
|
+
}
|
192
|
+
|
50
193
|
/**
|
51
194
|
* Returns source.
|
52
195
|
*
|
@@ -191,33 +334,28 @@ export default class HTMLScriptElement extends HTMLElement {
|
|
191
334
|
const src = this.getAttribute('src');
|
192
335
|
|
193
336
|
if (src !== null) {
|
194
|
-
this
|
337
|
+
if (this.getAttribute('type') === 'module') {
|
338
|
+
this.#loadModule(src);
|
339
|
+
} else {
|
340
|
+
this.#loadScript(src);
|
341
|
+
}
|
195
342
|
} else if (browserSettings && !browserSettings.disableJavaScriptEvaluation) {
|
196
|
-
const
|
343
|
+
const source = this.textContent;
|
197
344
|
const type = this.getAttribute('type');
|
198
|
-
|
199
|
-
|
200
|
-
(type ===
|
345
|
+
|
346
|
+
if (source) {
|
347
|
+
if (type === 'module') {
|
348
|
+
this.#evaluateModule(source);
|
349
|
+
} else if (type === 'importmap') {
|
350
|
+
this.#evaluateImportMap(source);
|
351
|
+
} else if (
|
352
|
+
type === null ||
|
201
353
|
type === 'application/x-ecmascript' ||
|
202
354
|
type === 'application/x-javascript' ||
|
203
|
-
type.startsWith('text/javascript')
|
204
|
-
) {
|
205
|
-
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = this;
|
206
|
-
|
207
|
-
const code = `//# sourceURL=${this[PropertySymbol.window].location.href}\n` + textContent;
|
208
|
-
|
209
|
-
if (
|
210
|
-
browserSettings.disableErrorCapturing ||
|
211
|
-
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
|
355
|
+
type.startsWith('text/javascript')
|
212
356
|
) {
|
213
|
-
this
|
214
|
-
} else {
|
215
|
-
WindowErrorUtility.captureError(this[PropertySymbol.window], () =>
|
216
|
-
this[PropertySymbol.window].eval(code)
|
217
|
-
);
|
357
|
+
this.#evaluateScript(source);
|
218
358
|
}
|
219
|
-
|
220
|
-
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = null;
|
221
359
|
}
|
222
360
|
}
|
223
361
|
}
|
@@ -237,8 +375,213 @@ export default class HTMLScriptElement extends HTMLElement {
|
|
237
375
|
attribute[PropertySymbol.value] !== null &&
|
238
376
|
this[PropertySymbol.isConnected]
|
239
377
|
) {
|
240
|
-
this
|
378
|
+
if (this.getAttribute('type') === 'module') {
|
379
|
+
this.#loadModule(attribute[PropertySymbol.value]);
|
380
|
+
} else {
|
381
|
+
this.#loadScript(attribute[PropertySymbol.value]);
|
382
|
+
}
|
383
|
+
}
|
384
|
+
}
|
385
|
+
|
386
|
+
/**
|
387
|
+
* Evaluates a module.
|
388
|
+
*
|
389
|
+
* @param source Source.
|
390
|
+
*/
|
391
|
+
async #evaluateModule(source: string): Promise<void> {
|
392
|
+
const url = this[PropertySymbol.ownerDocument].location;
|
393
|
+
const window = this[PropertySymbol.window];
|
394
|
+
const browserSettings = new WindowBrowserContext(window).getSettings();
|
395
|
+
const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
|
396
|
+
|
397
|
+
if (!browserFrame) {
|
398
|
+
return;
|
399
|
+
}
|
400
|
+
|
401
|
+
const module = new ECMAScriptModule(window, url, source);
|
402
|
+
const readyStateManager = window[PropertySymbol.readyStateManager];
|
403
|
+
|
404
|
+
readyStateManager.startTask();
|
405
|
+
|
406
|
+
if (
|
407
|
+
browserSettings.disableErrorCapturing ||
|
408
|
+
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
|
409
|
+
) {
|
410
|
+
await module.evaluate();
|
411
|
+
} else {
|
412
|
+
try {
|
413
|
+
await module.evaluate();
|
414
|
+
} catch (error) {
|
415
|
+
window[PropertySymbol.dispatchError](error);
|
416
|
+
return;
|
417
|
+
}
|
418
|
+
}
|
419
|
+
|
420
|
+
readyStateManager.endTask();
|
421
|
+
|
422
|
+
this.dispatchEvent(new Event('load'));
|
423
|
+
}
|
424
|
+
|
425
|
+
/**
|
426
|
+
* Evaluates an import map.
|
427
|
+
*
|
428
|
+
* @param source Source.
|
429
|
+
*/
|
430
|
+
async #evaluateImportMap(source: string): Promise<void> {
|
431
|
+
const window = this[PropertySymbol.window];
|
432
|
+
const browserSettings = new WindowBrowserContext(window).getSettings();
|
433
|
+
const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
|
434
|
+
|
435
|
+
if (!browserFrame || window[PropertySymbol.moduleImportMap]) {
|
436
|
+
return;
|
437
|
+
}
|
438
|
+
|
439
|
+
let json: any;
|
440
|
+
if (
|
441
|
+
browserSettings.disableErrorCapturing ||
|
442
|
+
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
|
443
|
+
) {
|
444
|
+
json = JSON.parse(source);
|
445
|
+
} else {
|
446
|
+
try {
|
447
|
+
json = JSON.parse(source);
|
448
|
+
} catch (error) {
|
449
|
+
window[PropertySymbol.dispatchError](error);
|
450
|
+
return;
|
451
|
+
}
|
452
|
+
}
|
453
|
+
|
454
|
+
if (json.imports || json.scopes) {
|
455
|
+
const importMap: IModuleImportMap = {
|
456
|
+
imports: [],
|
457
|
+
scopes: []
|
458
|
+
};
|
459
|
+
|
460
|
+
if (json.imports) {
|
461
|
+
for (const key of Object.keys(json.imports)) {
|
462
|
+
importMap.imports.push({
|
463
|
+
from: key,
|
464
|
+
to: json.imports[key]
|
465
|
+
});
|
466
|
+
}
|
467
|
+
}
|
468
|
+
|
469
|
+
if (json.scopes) {
|
470
|
+
for (const scopeKey of Object.keys(json.scopes)) {
|
471
|
+
const scope = {
|
472
|
+
scope: scopeKey,
|
473
|
+
rules: []
|
474
|
+
};
|
475
|
+
for (const importKey of Object.keys(json.scopes[scopeKey])) {
|
476
|
+
const value = json.scopes[scopeKey][importKey];
|
477
|
+
scope.rules.push({
|
478
|
+
from: importKey,
|
479
|
+
to: value
|
480
|
+
});
|
481
|
+
}
|
482
|
+
importMap.scopes.push(scope);
|
483
|
+
}
|
484
|
+
}
|
485
|
+
|
486
|
+
window[PropertySymbol.moduleImportMap] = importMap;
|
487
|
+
}
|
488
|
+
}
|
489
|
+
|
490
|
+
/**
|
491
|
+
* Evaluates a script.
|
492
|
+
*
|
493
|
+
* @param source Source.
|
494
|
+
*/
|
495
|
+
#evaluateScript(source: string): Promise<void> {
|
496
|
+
const window = this[PropertySymbol.window];
|
497
|
+
const browserSettings = new WindowBrowserContext(window).getSettings();
|
498
|
+
|
499
|
+
if (!browserSettings) {
|
500
|
+
return;
|
501
|
+
}
|
502
|
+
|
503
|
+
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = this;
|
504
|
+
|
505
|
+
const code = `//# sourceURL=${this[PropertySymbol.ownerDocument].location.href}\n` + source;
|
506
|
+
|
507
|
+
if (
|
508
|
+
browserSettings.disableErrorCapturing ||
|
509
|
+
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
|
510
|
+
) {
|
511
|
+
window.eval(code);
|
512
|
+
} else {
|
513
|
+
try {
|
514
|
+
window.eval(code);
|
515
|
+
} catch (error) {
|
516
|
+
window[PropertySymbol.dispatchError](error);
|
517
|
+
}
|
518
|
+
}
|
519
|
+
|
520
|
+
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = null;
|
521
|
+
}
|
522
|
+
|
523
|
+
/**
|
524
|
+
* Loads a module.
|
525
|
+
*
|
526
|
+
* @param url URL.
|
527
|
+
*/
|
528
|
+
async #loadModule(url: string): Promise<void> {
|
529
|
+
const window = this[PropertySymbol.window];
|
530
|
+
const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
|
531
|
+
const browserSettings = new WindowBrowserContext(window).getSettings();
|
532
|
+
|
533
|
+
if (!browserSettings) {
|
534
|
+
return;
|
535
|
+
}
|
536
|
+
|
537
|
+
if (!url || !this[PropertySymbol.isConnected] || this.getAttribute('type') !== 'module') {
|
538
|
+
return;
|
539
|
+
}
|
540
|
+
|
541
|
+
if (
|
542
|
+
browserSettings &&
|
543
|
+
(browserSettings.disableJavaScriptFileLoading || browserSettings.disableJavaScriptEvaluation)
|
544
|
+
) {
|
545
|
+
if (browserSettings.handleDisabledFileLoadingAsSuccess) {
|
546
|
+
this.dispatchEvent(new Event('load'));
|
547
|
+
} else {
|
548
|
+
const error = new window.DOMException(
|
549
|
+
`Failed to load module "${url}". JavaScript file loading is disabled.`,
|
550
|
+
DOMExceptionNameEnum.notSupportedError
|
551
|
+
);
|
552
|
+
browserFrame.page?.console.error(error);
|
553
|
+
this.dispatchEvent(new Event('error'));
|
554
|
+
}
|
555
|
+
return;
|
241
556
|
}
|
557
|
+
|
558
|
+
const readyStateManager = window[PropertySymbol.readyStateManager];
|
559
|
+
|
560
|
+
readyStateManager.startTask();
|
561
|
+
|
562
|
+
// TODO: What to do with "referrerPolicy" and "crossOrigin" for modules?
|
563
|
+
// @see https://github.com/w3c/webappsec-referrer-policy/issues/111
|
564
|
+
|
565
|
+
if (
|
566
|
+
browserSettings.disableErrorCapturing ||
|
567
|
+
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
|
568
|
+
) {
|
569
|
+
const module = await ModuleFactory.getModule(window, window.location, url);
|
570
|
+
await module.evaluate();
|
571
|
+
} else {
|
572
|
+
try {
|
573
|
+
const module = await ModuleFactory.getModule(window, window.location, url);
|
574
|
+
await module.evaluate();
|
575
|
+
} catch (error) {
|
576
|
+
browserFrame.page?.console.error(error);
|
577
|
+
this.dispatchEvent(new Event('error'));
|
578
|
+
readyStateManager.endTask();
|
579
|
+
return;
|
580
|
+
}
|
581
|
+
}
|
582
|
+
|
583
|
+
readyStateManager.endTask();
|
584
|
+
this.dispatchEvent(new Event('load'));
|
242
585
|
}
|
243
586
|
|
244
587
|
/**
|
@@ -249,29 +592,34 @@ export default class HTMLScriptElement extends HTMLElement {
|
|
249
592
|
async #loadScript(url: string): Promise<void> {
|
250
593
|
const window = this[PropertySymbol.window];
|
251
594
|
const browserFrame = new WindowBrowserContext(window).getBrowserFrame();
|
252
|
-
const async =
|
253
|
-
this.getAttribute('async') !== null ||
|
254
|
-
this.getAttribute('defer') !== null ||
|
255
|
-
this.getAttribute('type') === 'module';
|
256
595
|
|
257
596
|
if (!browserFrame) {
|
258
597
|
return;
|
259
598
|
}
|
260
599
|
|
261
600
|
const browserSettings = browserFrame.page?.context?.browser?.settings;
|
601
|
+
const type = this.getAttribute('type');
|
262
602
|
|
263
|
-
if (
|
603
|
+
if (
|
604
|
+
!url ||
|
605
|
+
!this[PropertySymbol.isConnected] ||
|
606
|
+
(type !== null &&
|
607
|
+
type !== 'application/x-ecmascript' &&
|
608
|
+
type !== 'application/x-javascript' &&
|
609
|
+
!type.startsWith('text/javascript'))
|
610
|
+
) {
|
264
611
|
return;
|
265
612
|
}
|
266
613
|
|
267
|
-
let absoluteURL:
|
614
|
+
let absoluteURL: URL;
|
268
615
|
try {
|
269
|
-
absoluteURL = new URL(url,
|
616
|
+
absoluteURL = new URL(url, window.location.href);
|
270
617
|
} catch (error) {
|
271
618
|
return;
|
272
619
|
}
|
273
620
|
|
274
|
-
|
621
|
+
const absoluteURLString = absoluteURL.toString();
|
622
|
+
if (this.#loadedScriptURL === absoluteURLString) {
|
275
623
|
return;
|
276
624
|
}
|
277
625
|
|
@@ -282,66 +630,90 @@ export default class HTMLScriptElement extends HTMLElement {
|
|
282
630
|
if (browserSettings.handleDisabledFileLoadingAsSuccess) {
|
283
631
|
this.dispatchEvent(new Event('load'));
|
284
632
|
} else {
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
`Failed to load external script "${absoluteURL}". JavaScript file loading is disabled.`,
|
289
|
-
DOMExceptionNameEnum.notSupportedError
|
290
|
-
)
|
633
|
+
const error = new window.DOMException(
|
634
|
+
`Failed to load script "${absoluteURL}". JavaScript file loading is disabled.`,
|
635
|
+
DOMExceptionNameEnum.notSupportedError
|
291
636
|
);
|
637
|
+
browserFrame.page?.console.error(error);
|
638
|
+
this.dispatchEvent(new Event('error'));
|
292
639
|
}
|
293
640
|
return;
|
294
641
|
}
|
295
642
|
|
296
|
-
|
297
|
-
browserFrame,
|
298
|
-
window: this[PropertySymbol.window]
|
299
|
-
});
|
300
|
-
let code: string | null = null;
|
301
|
-
let error: Error | null = null;
|
643
|
+
this.#loadedScriptURL = absoluteURLString;
|
302
644
|
|
303
|
-
|
645
|
+
const resourceFetch = new ResourceFetch(window);
|
646
|
+
const async = this.getAttribute('async') !== null || this.getAttribute('defer') !== null;
|
647
|
+
let code: string | null = null;
|
304
648
|
|
305
649
|
if (async) {
|
306
|
-
const readyStateManager =
|
307
|
-
{ [PropertySymbol.readyStateManager]: DocumentReadyStateManager }
|
308
|
-
>(<unknown>this[PropertySymbol.window]))[PropertySymbol.readyStateManager];
|
650
|
+
const readyStateManager = window[PropertySymbol.readyStateManager];
|
309
651
|
|
310
652
|
readyStateManager.startTask();
|
311
653
|
|
312
654
|
try {
|
313
|
-
code = await resourceFetch.fetch(
|
314
|
-
|
315
|
-
|
655
|
+
code = await resourceFetch.fetch(absoluteURLString, 'script', {
|
656
|
+
credentials: this.crossOrigin === 'use-credentials' ? 'include' : 'same-origin',
|
657
|
+
referrerPolicy: this.referrerPolicy
|
658
|
+
});
|
659
|
+
} catch (error) {
|
660
|
+
browserFrame.page?.console.error(error);
|
661
|
+
this.dispatchEvent(new Event('error'));
|
662
|
+
return;
|
316
663
|
}
|
317
664
|
|
318
665
|
readyStateManager.endTask();
|
319
666
|
} else {
|
320
667
|
try {
|
321
|
-
code = resourceFetch.fetchSync(
|
322
|
-
|
323
|
-
|
668
|
+
code = resourceFetch.fetchSync(absoluteURLString, 'script', {
|
669
|
+
credentials: this.crossOrigin === 'use-credentials' ? 'include' : 'same-origin',
|
670
|
+
referrerPolicy: this.referrerPolicy
|
671
|
+
});
|
672
|
+
} catch (error) {
|
673
|
+
browserFrame.page?.console.error(error);
|
674
|
+
this.dispatchEvent(new Event('error'));
|
675
|
+
return;
|
324
676
|
}
|
325
677
|
}
|
326
678
|
|
327
|
-
|
328
|
-
WindowErrorUtility.dispatchError(this, error);
|
329
|
-
} else {
|
330
|
-
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = this;
|
331
|
-
code = '//# sourceURL=' + absoluteURL + '\n' + code;
|
679
|
+
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = this;
|
332
680
|
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
681
|
+
code = '//# sourceURL=' + absoluteURL + '\n' + code;
|
682
|
+
|
683
|
+
if (
|
684
|
+
browserSettings.disableErrorCapturing ||
|
685
|
+
browserSettings.errorCapture !== BrowserErrorCaptureEnum.tryAndCatch
|
686
|
+
) {
|
687
|
+
this[PropertySymbol.window].eval(code);
|
688
|
+
} else {
|
689
|
+
try {
|
337
690
|
this[PropertySymbol.window].eval(code);
|
338
|
-
}
|
339
|
-
|
340
|
-
|
341
|
-
|
691
|
+
} catch (error) {
|
692
|
+
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = null;
|
693
|
+
window[PropertySymbol.dispatchError](error);
|
694
|
+
return;
|
342
695
|
}
|
343
|
-
|
344
|
-
|
696
|
+
}
|
697
|
+
|
698
|
+
this[PropertySymbol.ownerDocument][PropertySymbol.currentScript] = null;
|
699
|
+
this.dispatchEvent(new Event('load'));
|
700
|
+
}
|
701
|
+
|
702
|
+
/**
|
703
|
+
* Returns true if the given type is supported.
|
704
|
+
*
|
705
|
+
* @param type Type.
|
706
|
+
* @returns True if the given type is supported.
|
707
|
+
*/
|
708
|
+
public static supports(type: string): boolean {
|
709
|
+
switch (type) {
|
710
|
+
case 'classic':
|
711
|
+
case 'module':
|
712
|
+
case 'importmap':
|
713
|
+
return true;
|
714
|
+
case 'speculationrules':
|
715
|
+
default:
|
716
|
+
return false;
|
345
717
|
}
|
346
718
|
}
|
347
719
|
}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import QuerySelector from '../../query-selector/QuerySelector.js';
|
2
2
|
import HTMLElement from '../html-element/HTMLElement.js';
|
3
3
|
import * as PropertySymbol from '../../PropertySymbol.js';
|
4
|
-
import DOMTokenList from '../../dom/DOMTokenList.js';
|
5
4
|
|
6
5
|
/**
|
7
6
|
* HTMLTableCellElement
|
@@ -9,8 +8,6 @@ import DOMTokenList from '../../dom/DOMTokenList.js';
|
|
9
8
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement
|
10
9
|
*/
|
11
10
|
export default class HTMLTableCellElement extends HTMLElement {
|
12
|
-
public [PropertySymbol.headers]: DOMTokenList | null = null;
|
13
|
-
|
14
11
|
/**
|
15
12
|
* Returns abbr.
|
16
13
|
*
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import DOMException from '../exception/DOMException.js';
|
2
|
+
import DOMExceptionNameEnum from '../exception/DOMExceptionNameEnum.js';
|
3
|
+
|
4
|
+
const HTML_INVALID_ATTRIBUTE_NAME_CHARACTER_REGEX =
|
5
|
+
/[\x00-\x1F\x7F\x80-\x9F "\'><=\/\uFDD0-\uFDEF\uFFFE\uFFFF\u1FFFE\u1FFFF\u2FFFE\u2FFFF\u3FFFE\u3FFFF\u4FFFE\u4FFFF\u5FFFE\u5FFFF\u6FFFE\u6FFFF\u7FFFE\u7FFFF\u8FFFE\u8FFFF\u9FFFE\u9FFFF\uAFFFE\uAFFFF\uBFFFE\uBFFFF\uCFFFE\uCFFFF\uDFFFE\uDFFFF\uEFFFE\uEFFFF\uFFFFE\uFFFFF\u10FFFE\u10FFFF]/;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Attribute utility
|
9
|
+
*/
|
10
|
+
export class AttributeUtility {
|
11
|
+
/**
|
12
|
+
*
|
13
|
+
* @param name the attribute name
|
14
|
+
* @param contentType the attribute has to be valid in
|
15
|
+
* @param context the context in which the error occurred in
|
16
|
+
* @param context.method
|
17
|
+
* @param context.instance
|
18
|
+
*/
|
19
|
+
public static validateAttributeName(
|
20
|
+
name: unknown,
|
21
|
+
contentType: string,
|
22
|
+
context: {
|
23
|
+
method: string;
|
24
|
+
instance: string;
|
25
|
+
}
|
26
|
+
): void {
|
27
|
+
const { method, instance } = context;
|
28
|
+
if (contentType === 'text/html') {
|
29
|
+
const normalizedName = String(name).toLowerCase();
|
30
|
+
if (
|
31
|
+
HTML_INVALID_ATTRIBUTE_NAME_CHARACTER_REGEX.test(normalizedName) ||
|
32
|
+
normalizedName.length === 0 ||
|
33
|
+
normalizedName[0] === '-'
|
34
|
+
) {
|
35
|
+
throw new DOMException(
|
36
|
+
`Uncaught InvalidCharacterError: Failed to execute '${method}' on '${instance}': '${name}' is not a valid attribute name.`,
|
37
|
+
DOMExceptionNameEnum.invalidCharacterError
|
38
|
+
);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
// TODO: implement XML and other content types
|
42
|
+
}
|
43
|
+
}
|