happy-dom 9.17.0 → 9.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of happy-dom might be problematic. Click here for more details.
- package/lib/nodes/html-link-element/HTMLLinkElement.d.ts.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElement.js +5 -68
- package/lib/nodes/html-link-element/HTMLLinkElement.js.map +1 -1
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.d.ts +22 -0
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.d.ts.map +1 -0
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.js +70 -0
- package/lib/nodes/html-link-element/HTMLLinkElementUtility.js.map +1 -0
- package/lib/nodes/html-script-element/HTMLScriptElement.js +3 -3
- package/lib/nodes/html-script-element/HTMLScriptElement.js.map +1 -1
- package/lib/nodes/html-script-element/{ScriptUtility.d.ts → HTMLScriptElementUtility.d.ts} +9 -2
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.d.ts.map +1 -0
- package/lib/nodes/html-script-element/{ScriptUtility.js → HTMLScriptElementUtility.js} +35 -36
- package/lib/nodes/html-script-element/HTMLScriptElementUtility.js.map +1 -0
- package/package.json +1 -1
- package/src/nodes/html-link-element/HTMLLinkElement.ts +5 -83
- package/src/nodes/html-link-element/HTMLLinkElementUtility.ts +82 -0
- package/src/nodes/html-script-element/HTMLScriptElement.ts +3 -3
- package/src/nodes/html-script-element/HTMLScriptElementUtility.ts +94 -0
- package/lib/nodes/html-script-element/ScriptUtility.d.ts.map +0 -1
- package/lib/nodes/html-script-element/ScriptUtility.js.map +0 -1
- package/src/nodes/html-script-element/ScriptUtility.ts +0 -89
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"HTMLLinkElement.d.ts","sourceRoot":"","sources":["../../../src/nodes/html-link-element/HTMLLinkElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,aAAa,MAAM,yBAAyB,CAAC;
|
1
|
+
{"version":3,"file":"HTMLLinkElement.d.ts","sourceRoot":"","sources":["../../../src/nodes/html-link-element/HTMLLinkElement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,UAAU,MAAM,+BAA+B,CAAC;AACvD,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAE3C,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAG/D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,WAAY,YAAW,gBAAgB;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAQ;IAC5C,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAQ;IAC7C,SAAgB,KAAK,EAAE,aAAa,CAAQ;IACrC,YAAY,UAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAsB;IAEtC;;;;OAIG;IACH,IAAW,OAAO,IAAI,aAAa,CAKlC;IAED;;;;OAIG;IACH,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED;;;;OAIG;IACH,IAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAEvB;IAED;;;;OAIG;IACH,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;;;OAIG;IACH,IAAW,WAAW,CAAC,WAAW,EAAE,MAAM,EAEzC;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IAED;;;;OAIG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAEnC;IAED;;;;OAIG;IACH,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED;;;;OAIG;IACH,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED;;;;OAIG;IACH,IAAW,cAAc,IAAI,MAAM,CAElC;IAED;;;;OAIG;IACH,IAAW,cAAc,CAAC,cAAc,EAAE,MAAM,EAE/C;IAED;;;;OAIG;IACH,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACH,IAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAEzB;IAED;;;;OAIG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IAED;;OAEG;IACa,gBAAgB,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK;IAczD;;OAEG;IACa,mBAAmB,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK;IAU5D;;OAEG;IACa,cAAc,CAAC,UAAU,GAAE,KAAY,GAAG,IAAI;CAU9D"}
|
@@ -3,12 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const CSSStyleSheet_1 = __importDefault(require("../../css/CSSStyleSheet"));
|
7
|
-
const ResourceFetch_1 = __importDefault(require("../../fetch/ResourceFetch"));
|
8
6
|
const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
|
9
|
-
const Event_1 = __importDefault(require("../../event/Event"));
|
10
|
-
const ErrorEvent_1 = __importDefault(require("../../event/events/ErrorEvent"));
|
11
7
|
const DOMTokenList_1 = __importDefault(require("../../dom-token-list/DOMTokenList"));
|
8
|
+
const HTMLLinkElementUtility_1 = __importDefault(require("./HTMLLinkElementUtility"));
|
12
9
|
/**
|
13
10
|
* HTML Link Element.
|
14
11
|
*
|
@@ -168,41 +165,11 @@ class HTMLLinkElement extends HTMLElement_1.default {
|
|
168
165
|
*/
|
169
166
|
setAttributeNode(attribute) {
|
170
167
|
const replacedAttribute = super.setAttributeNode(attribute);
|
171
|
-
const rel = this.getAttribute('rel');
|
172
|
-
const href = this.getAttribute('href');
|
173
168
|
if (attribute.name === 'rel' && this._relList) {
|
174
169
|
this._relList._updateIndices();
|
175
170
|
}
|
176
|
-
if (
|
177
|
-
|
178
|
-
rel &&
|
179
|
-
rel.toLowerCase() === 'stylesheet' &&
|
180
|
-
this.isConnected &&
|
181
|
-
!this.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading) {
|
182
|
-
this.ownerDocument._readyStateManager.startTask();
|
183
|
-
ResourceFetch_1.default.fetch(this.ownerDocument, href)
|
184
|
-
.then((code) => {
|
185
|
-
const styleSheet = new CSSStyleSheet_1.default();
|
186
|
-
styleSheet.replaceSync(code);
|
187
|
-
this.sheet = styleSheet;
|
188
|
-
this.dispatchEvent(new Event_1.default('load'));
|
189
|
-
this.ownerDocument._readyStateManager.endTask();
|
190
|
-
})
|
191
|
-
.catch((error) => {
|
192
|
-
this.dispatchEvent(new ErrorEvent_1.default('error', {
|
193
|
-
message: error.message,
|
194
|
-
error
|
195
|
-
}));
|
196
|
-
this.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
|
197
|
-
message: error.message,
|
198
|
-
error
|
199
|
-
}));
|
200
|
-
this.ownerDocument._readyStateManager.endTask();
|
201
|
-
if (!this['_listeners']['error'] &&
|
202
|
-
!this.ownerDocument.defaultView['_listeners']['error']) {
|
203
|
-
this.ownerDocument.defaultView.console.error(error);
|
204
|
-
}
|
205
|
-
});
|
171
|
+
if (attribute.name === 'rel' || attribute.name === 'href') {
|
172
|
+
HTMLLinkElementUtility_1.default.loadExternalStylesheet(this);
|
206
173
|
}
|
207
174
|
return replacedAttribute;
|
208
175
|
}
|
@@ -223,38 +190,8 @@ class HTMLLinkElement extends HTMLElement_1.default {
|
|
223
190
|
const isConnected = this.isConnected;
|
224
191
|
const isParentConnected = parentNode ? parentNode.isConnected : false;
|
225
192
|
super._connectToNode(parentNode);
|
226
|
-
if (isParentConnected &&
|
227
|
-
|
228
|
-
this._evaluateCSS &&
|
229
|
-
!this.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading) {
|
230
|
-
const href = this.getAttribute('href');
|
231
|
-
const rel = this.getAttribute('rel');
|
232
|
-
if (href !== null && rel && rel.toLowerCase() === 'stylesheet') {
|
233
|
-
this.ownerDocument._readyStateManager.startTask();
|
234
|
-
ResourceFetch_1.default.fetch(this.ownerDocument, href)
|
235
|
-
.then((code) => {
|
236
|
-
const styleSheet = new CSSStyleSheet_1.default();
|
237
|
-
styleSheet.replaceSync(code);
|
238
|
-
this.sheet = styleSheet;
|
239
|
-
this.dispatchEvent(new Event_1.default('load'));
|
240
|
-
this.ownerDocument._readyStateManager.endTask();
|
241
|
-
})
|
242
|
-
.catch((error) => {
|
243
|
-
this.dispatchEvent(new ErrorEvent_1.default('error', {
|
244
|
-
message: error.message,
|
245
|
-
error
|
246
|
-
}));
|
247
|
-
this.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
|
248
|
-
message: error.message,
|
249
|
-
error
|
250
|
-
}));
|
251
|
-
this.ownerDocument._readyStateManager.endTask();
|
252
|
-
if (!this['_listeners']['error'] &&
|
253
|
-
!this.ownerDocument.defaultView['_listeners']['error']) {
|
254
|
-
this.ownerDocument.defaultView.console.error(error);
|
255
|
-
}
|
256
|
-
});
|
257
|
-
}
|
193
|
+
if (isParentConnected && isConnected !== isParentConnected && this._evaluateCSS) {
|
194
|
+
HTMLLinkElementUtility_1.default.loadExternalStylesheet(this);
|
258
195
|
}
|
259
196
|
}
|
260
197
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"HTMLLinkElement.js","sourceRoot":"","sources":["../../../src/nodes/html-link-element/HTMLLinkElement.ts"],"names":[],"mappings":";;;;;
|
1
|
+
{"version":3,"file":"HTMLLinkElement.js","sourceRoot":"","sources":["../../../src/nodes/html-link-element/HTMLLinkElement.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import HTMLLinkElement from './HTMLLinkElement';
|
2
|
+
/**
|
3
|
+
* Helper class for getting the URL relative to a Location object.
|
4
|
+
*/
|
5
|
+
export default class HTMLLinkElementUtility {
|
6
|
+
/**
|
7
|
+
* Returns a URL relative to the given Location object.
|
8
|
+
*
|
9
|
+
* @param options Options.
|
10
|
+
* @param options.element Element.
|
11
|
+
* @param element
|
12
|
+
*/
|
13
|
+
static loadExternalStylesheet(element: HTMLLinkElement): Promise<void>;
|
14
|
+
/**
|
15
|
+
* Triggered when an error occurs.
|
16
|
+
*
|
17
|
+
* @param element Element.
|
18
|
+
* @param error Error.
|
19
|
+
*/
|
20
|
+
private static onError;
|
21
|
+
}
|
22
|
+
//# sourceMappingURL=HTMLLinkElementUtility.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HTMLLinkElementUtility.d.ts","sourceRoot":"","sources":["../../../src/nodes/html-link-element/HTMLLinkElementUtility.ts"],"names":[],"mappings":"AAIA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAKhD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAC1C;;;;;;OAMG;WACiB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCnF;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;CAqBtB"}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const Event_1 = __importDefault(require("../../event/Event"));
|
7
|
+
const ErrorEvent_1 = __importDefault(require("../../event/events/ErrorEvent"));
|
8
|
+
const ResourceFetch_1 = __importDefault(require("../../fetch/ResourceFetch"));
|
9
|
+
const CSSStyleSheet_1 = __importDefault(require("../../css/CSSStyleSheet"));
|
10
|
+
const DOMException_1 = __importDefault(require("../../exception/DOMException"));
|
11
|
+
const DOMExceptionNameEnum_1 = __importDefault(require("../../exception/DOMExceptionNameEnum"));
|
12
|
+
/**
|
13
|
+
* Helper class for getting the URL relative to a Location object.
|
14
|
+
*/
|
15
|
+
class HTMLLinkElementUtility {
|
16
|
+
/**
|
17
|
+
* Returns a URL relative to the given Location object.
|
18
|
+
*
|
19
|
+
* @param options Options.
|
20
|
+
* @param options.element Element.
|
21
|
+
* @param element
|
22
|
+
*/
|
23
|
+
static async loadExternalStylesheet(element) {
|
24
|
+
const href = element.getAttribute('href');
|
25
|
+
const rel = element.getAttribute('rel');
|
26
|
+
if (href !== null && rel && rel.toLowerCase() === 'stylesheet' && element.isConnected) {
|
27
|
+
if (element.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading) {
|
28
|
+
this.onError(element, new DOMException_1.default(`Failed to load external stylesheet "${href}". CSS file loading is disabled.`, DOMExceptionNameEnum_1.default.notSupportedError));
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
element.ownerDocument._readyStateManager.startTask();
|
32
|
+
let code;
|
33
|
+
try {
|
34
|
+
code = await ResourceFetch_1.default.fetch(element.ownerDocument, href);
|
35
|
+
}
|
36
|
+
catch (error) {
|
37
|
+
this.onError(element, error);
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
const styleSheet = new CSSStyleSheet_1.default();
|
41
|
+
styleSheet.replaceSync(code);
|
42
|
+
element.sheet = styleSheet;
|
43
|
+
element.dispatchEvent(new Event_1.default('load'));
|
44
|
+
element.ownerDocument._readyStateManager.endTask();
|
45
|
+
}
|
46
|
+
}
|
47
|
+
/**
|
48
|
+
* Triggered when an error occurs.
|
49
|
+
*
|
50
|
+
* @param element Element.
|
51
|
+
* @param error Error.
|
52
|
+
*/
|
53
|
+
static onError(element, error) {
|
54
|
+
element.dispatchEvent(new ErrorEvent_1.default('error', {
|
55
|
+
message: error.message,
|
56
|
+
error
|
57
|
+
}));
|
58
|
+
element.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
|
59
|
+
message: error.message,
|
60
|
+
error
|
61
|
+
}));
|
62
|
+
element.ownerDocument._readyStateManager.endTask();
|
63
|
+
if (!element['_listeners']['error'] &&
|
64
|
+
!element.ownerDocument.defaultView['_listeners']['error']) {
|
65
|
+
element.ownerDocument.defaultView.console.error(error);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
exports.default = HTMLLinkElementUtility;
|
70
|
+
//# sourceMappingURL=HTMLLinkElementUtility.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HTMLLinkElementUtility.js","sourceRoot":"","sources":["../../../src/nodes/html-link-element/HTMLLinkElementUtility.ts"],"names":[],"mappings":";;;;;AACA,8DAAsC;AACtC,+EAAuD;AACvD,8EAAsD;AAEtD,4EAAoD;AACpD,gFAAwD;AACxD,gGAAwE;AAExE;;GAEG;AACH,MAAqB,sBAAsB;IAC1C;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAwB;QAClE,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE;YACtF,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE;gBAC9E,IAAI,CAAC,OAAO,CACX,OAAO,EACP,IAAI,sBAAY,CACf,uCAAuC,IAAI,kCAAkC,EAC7E,8BAAoB,CAAC,iBAAiB,CACtC,CACD,CAAC;gBACF,OAAO;aACP;YAEU,OAAO,CAAC,aAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAEjE,IAAI,IAAY,CAAC;YACjB,IAAI;gBACH,IAAI,GAAG,MAAM,uBAAa,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO;aACP;YAED,MAAM,UAAU,GAAG,IAAI,uBAAa,EAAE,CAAC;YACvC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACb,OAAO,CAAC,KAAM,GAAG,UAAU,CAAC;YAC5C,OAAO,CAAC,aAAa,CAAC,IAAI,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,aAAc,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;SAC/D;IACF,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,OAAO,CAAC,OAAwB,EAAE,KAAY;QAC5D,OAAO,CAAC,aAAa,CACpB,IAAI,oBAAU,CAAC,OAAO,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK;SACL,CAAC,CACF,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAC9C,IAAI,oBAAU,CAAC,OAAO,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK;SACL,CAAC,CACF,CAAC;QACS,OAAO,CAAC,aAAc,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC/D,IACC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC/B,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EACxD;YACD,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvD;IACF,CAAC;CACD;AArED,yCAqEC"}
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const HTMLElement_1 = __importDefault(require("../html-element/HTMLElement"));
|
7
|
-
const
|
7
|
+
const HTMLScriptElementUtility_1 = __importDefault(require("./HTMLScriptElementUtility"));
|
8
8
|
/**
|
9
9
|
* HTML Script Element.
|
10
10
|
*
|
@@ -150,7 +150,7 @@ class HTMLScriptElement extends HTMLElement_1.default {
|
|
150
150
|
setAttributeNode(attribute) {
|
151
151
|
const replacedAttribute = super.setAttributeNode(attribute);
|
152
152
|
if (attribute.name === 'src' && attribute.value !== null && this.isConnected) {
|
153
|
-
|
153
|
+
HTMLScriptElementUtility_1.default.loadExternalScript(this);
|
154
154
|
}
|
155
155
|
return replacedAttribute;
|
156
156
|
}
|
@@ -174,7 +174,7 @@ class HTMLScriptElement extends HTMLElement_1.default {
|
|
174
174
|
if (isParentConnected && isConnected !== isParentConnected && this._evaluateScript) {
|
175
175
|
const src = this.getAttribute('src');
|
176
176
|
if (src !== null) {
|
177
|
-
|
177
|
+
HTMLScriptElementUtility_1.default.loadExternalScript(this);
|
178
178
|
}
|
179
179
|
else if (!this.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptEvaluation) {
|
180
180
|
const textContent = this.textContent;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"HTMLScriptElement.js","sourceRoot":"","sources":["../../../src/nodes/html-script-element/HTMLScriptElement.ts"],"names":[],"mappings":";;;;;AACA,8EAAsD;AAEtD,
|
1
|
+
{"version":3,"file":"HTMLScriptElement.js","sourceRoot":"","sources":["../../../src/nodes/html-script-element/HTMLScriptElement.ts"],"names":[],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import HTMLScriptElement from './HTMLScriptElement';
|
|
2
2
|
/**
|
3
3
|
* Helper class for getting the URL relative to a Location object.
|
4
4
|
*/
|
5
|
-
export default class
|
5
|
+
export default class HTMLScriptElementUtility {
|
6
6
|
/**
|
7
7
|
* Returns a URL relative to the given Location object.
|
8
8
|
*
|
@@ -11,5 +11,12 @@ export default class ScriptUtility {
|
|
11
11
|
* @param element
|
12
12
|
*/
|
13
13
|
static loadExternalScript(element: HTMLScriptElement): Promise<void>;
|
14
|
+
/**
|
15
|
+
* Triggered when an error occurs.
|
16
|
+
*
|
17
|
+
* @param element Element.
|
18
|
+
* @param error Error.
|
19
|
+
*/
|
20
|
+
private static onError;
|
14
21
|
}
|
15
|
-
//# sourceMappingURL=
|
22
|
+
//# sourceMappingURL=HTMLScriptElementUtility.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HTMLScriptElementUtility.d.ts","sourceRoot":"","sources":["../../../src/nodes/html-script-element/HTMLScriptElementUtility.ts"],"names":[],"mappings":"AAMA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAC5C;;;;;;OAMG;WACiB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDjF;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;CAoBtB"}
|
@@ -5,11 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const Event_1 = __importDefault(require("../../event/Event"));
|
7
7
|
const ErrorEvent_1 = __importDefault(require("../../event/events/ErrorEvent"));
|
8
|
+
const DOMException_1 = __importDefault(require("../../exception/DOMException"));
|
9
|
+
const DOMExceptionNameEnum_1 = __importDefault(require("../../exception/DOMExceptionNameEnum"));
|
8
10
|
const ResourceFetch_1 = __importDefault(require("../../fetch/ResourceFetch"));
|
9
11
|
/**
|
10
12
|
* Helper class for getting the URL relative to a Location object.
|
11
13
|
*/
|
12
|
-
class
|
14
|
+
class HTMLScriptElementUtility {
|
13
15
|
/**
|
14
16
|
* Returns a URL relative to the given Location object.
|
15
17
|
*
|
@@ -22,32 +24,21 @@ class ScriptUtility {
|
|
22
24
|
const async = element.getAttribute('async') !== null;
|
23
25
|
if (element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptFileLoading ||
|
24
26
|
element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptEvaluation) {
|
27
|
+
this.onError(element, new DOMException_1.default(`Failed to load external script "${src}". JavaScript file loading is disabled.`, DOMExceptionNameEnum_1.default.notSupportedError));
|
25
28
|
return;
|
26
29
|
}
|
27
30
|
if (async) {
|
28
|
-
let code = null;
|
29
31
|
element.ownerDocument._readyStateManager.startTask();
|
32
|
+
let code = null;
|
30
33
|
try {
|
31
34
|
code = await ResourceFetch_1.default.fetch(element.ownerDocument, src);
|
32
35
|
}
|
33
36
|
catch (error) {
|
34
|
-
|
35
|
-
|
36
|
-
error
|
37
|
-
}));
|
38
|
-
element.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
|
39
|
-
message: error.message,
|
40
|
-
error
|
41
|
-
}));
|
42
|
-
if (!element['_listeners']['error'] &&
|
43
|
-
!element.ownerDocument.defaultView['_listeners']['error']) {
|
44
|
-
element.ownerDocument.defaultView.console.error(error);
|
45
|
-
}
|
46
|
-
}
|
47
|
-
if (code) {
|
48
|
-
element.ownerDocument.defaultView.eval(code);
|
49
|
-
element.dispatchEvent(new Event_1.default('load'));
|
37
|
+
this.onError(element, error);
|
38
|
+
return;
|
50
39
|
}
|
40
|
+
element.ownerDocument.defaultView.eval(code);
|
41
|
+
element.dispatchEvent(new Event_1.default('load'));
|
51
42
|
element.ownerDocument._readyStateManager.endTask();
|
52
43
|
}
|
53
44
|
else {
|
@@ -56,25 +47,33 @@ class ScriptUtility {
|
|
56
47
|
code = ResourceFetch_1.default.fetchSync(element.ownerDocument, src);
|
57
48
|
}
|
58
49
|
catch (error) {
|
59
|
-
|
60
|
-
|
61
|
-
error
|
62
|
-
}));
|
63
|
-
element.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
|
64
|
-
message: error.message,
|
65
|
-
error
|
66
|
-
}));
|
67
|
-
if (!element['_listeners']['error'] &&
|
68
|
-
!element.ownerDocument.defaultView['_listeners']['error']) {
|
69
|
-
element.ownerDocument.defaultView.console.error(error);
|
70
|
-
}
|
71
|
-
}
|
72
|
-
if (code) {
|
73
|
-
element.ownerDocument.defaultView.eval(code);
|
74
|
-
element.dispatchEvent(new Event_1.default('load'));
|
50
|
+
this.onError(element, error);
|
51
|
+
return;
|
75
52
|
}
|
53
|
+
element.ownerDocument.defaultView.eval(code);
|
54
|
+
element.dispatchEvent(new Event_1.default('load'));
|
55
|
+
}
|
56
|
+
}
|
57
|
+
/**
|
58
|
+
* Triggered when an error occurs.
|
59
|
+
*
|
60
|
+
* @param element Element.
|
61
|
+
* @param error Error.
|
62
|
+
*/
|
63
|
+
static onError(element, error) {
|
64
|
+
element.dispatchEvent(new ErrorEvent_1.default('error', {
|
65
|
+
message: error.message,
|
66
|
+
error
|
67
|
+
}));
|
68
|
+
element.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
|
69
|
+
message: error.message,
|
70
|
+
error
|
71
|
+
}));
|
72
|
+
if (!element['_listeners']['error'] &&
|
73
|
+
!element.ownerDocument.defaultView['_listeners']['error']) {
|
74
|
+
element.ownerDocument.defaultView.console.error(error);
|
76
75
|
}
|
77
76
|
}
|
78
77
|
}
|
79
|
-
exports.default =
|
80
|
-
//# sourceMappingURL=
|
78
|
+
exports.default = HTMLScriptElementUtility;
|
79
|
+
//# sourceMappingURL=HTMLScriptElementUtility.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HTMLScriptElementUtility.js","sourceRoot":"","sources":["../../../src/nodes/html-script-element/HTMLScriptElementUtility.ts"],"names":[],"mappings":";;;;;AACA,8DAAsC;AACtC,+EAAuD;AACvD,gFAAwD;AACxD,gGAAwE;AACxE,8EAAsD;AAGtD;;GAEG;AACH,MAAqB,wBAAwB;IAC5C;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAA0B;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;QAErD,IACC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,4BAA4B;YAChF,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,EAC9E;YACD,IAAI,CAAC,OAAO,CACX,OAAO,EACP,IAAI,sBAAY,CACf,mCAAmC,GAAG,yCAAyC,EAC/E,8BAAoB,CAAC,iBAAiB,CACtC,CACD,CAAC;YACF,OAAO;SACP;QAED,IAAI,KAAK,EAAE;YACC,OAAO,CAAC,aAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;YAEjE,IAAI,IAAI,GAAG,IAAI,CAAC;YAEhB,IAAI;gBACH,IAAI,GAAG,MAAM,uBAAa,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;aAC7D;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO;aACP;YAED,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,aAAa,CAAC,IAAI,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,aAAc,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;SAC/D;aAAM;YACN,IAAI,IAAI,GAAG,IAAI,CAAC;YAEhB,IAAI;gBACH,IAAI,GAAG,uBAAa,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;aAC3D;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO;aACP;YAED,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,aAAa,CAAC,IAAI,eAAK,CAAC,MAAM,CAAC,CAAC,CAAC;SACzC;IACF,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,OAAO,CAAC,OAA0B,EAAE,KAAY;QAC9D,OAAO,CAAC,aAAa,CACpB,IAAI,oBAAU,CAAC,OAAO,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK;SACL,CAAC,CACF,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAC9C,IAAI,oBAAU,CAAC,OAAO,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK;SACL,CAAC,CACF,CAAC;QACF,IACC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC/B,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EACxD;YACD,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvD;IACF,CAAC;CACD;AAlFD,2CAkFC"}
|
package/package.json
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
import IAttr from '../attr/IAttr';
|
2
2
|
import CSSStyleSheet from '../../css/CSSStyleSheet';
|
3
|
-
import ResourceFetch from '../../fetch/ResourceFetch';
|
4
3
|
import HTMLElement from '../html-element/HTMLElement';
|
5
|
-
import Document from '../document/Document';
|
6
4
|
import IHTMLLinkElement from './IHTMLLinkElement';
|
7
5
|
import Event from '../../event/Event';
|
8
6
|
import ErrorEvent from '../../event/events/ErrorEvent';
|
9
7
|
import INode from '../../nodes/node/INode';
|
10
8
|
import DOMTokenList from '../../dom-token-list/DOMTokenList';
|
11
9
|
import IDOMTokenList from '../../dom-token-list/IDOMTokenList';
|
10
|
+
import HTMLLinkElementUtility from './HTMLLinkElementUtility';
|
12
11
|
|
13
12
|
/**
|
14
13
|
* HTML Link Element.
|
@@ -184,51 +183,13 @@ export default class HTMLLinkElement extends HTMLElement implements IHTMLLinkEle
|
|
184
183
|
*/
|
185
184
|
public override setAttributeNode(attribute: IAttr): IAttr {
|
186
185
|
const replacedAttribute = super.setAttributeNode(attribute);
|
187
|
-
const rel = this.getAttribute('rel');
|
188
|
-
const href = this.getAttribute('href');
|
189
186
|
|
190
187
|
if (attribute.name === 'rel' && this._relList) {
|
191
188
|
this._relList._updateIndices();
|
192
189
|
}
|
193
190
|
|
194
|
-
if (
|
195
|
-
(
|
196
|
-
href !== null &&
|
197
|
-
rel &&
|
198
|
-
rel.toLowerCase() === 'stylesheet' &&
|
199
|
-
this.isConnected &&
|
200
|
-
!this.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading
|
201
|
-
) {
|
202
|
-
(<Document>this.ownerDocument)._readyStateManager.startTask();
|
203
|
-
ResourceFetch.fetch(this.ownerDocument, href)
|
204
|
-
.then((code) => {
|
205
|
-
const styleSheet = new CSSStyleSheet();
|
206
|
-
styleSheet.replaceSync(code);
|
207
|
-
(<CSSStyleSheet>this.sheet) = styleSheet;
|
208
|
-
this.dispatchEvent(new Event('load'));
|
209
|
-
(<Document>this.ownerDocument)._readyStateManager.endTask();
|
210
|
-
})
|
211
|
-
.catch((error) => {
|
212
|
-
this.dispatchEvent(
|
213
|
-
new ErrorEvent('error', {
|
214
|
-
message: error.message,
|
215
|
-
error
|
216
|
-
})
|
217
|
-
);
|
218
|
-
this.ownerDocument.defaultView.dispatchEvent(
|
219
|
-
new ErrorEvent('error', {
|
220
|
-
message: error.message,
|
221
|
-
error
|
222
|
-
})
|
223
|
-
);
|
224
|
-
(<Document>this.ownerDocument)._readyStateManager.endTask();
|
225
|
-
if (
|
226
|
-
!this['_listeners']['error'] &&
|
227
|
-
!this.ownerDocument.defaultView['_listeners']['error']
|
228
|
-
) {
|
229
|
-
this.ownerDocument.defaultView.console.error(error);
|
230
|
-
}
|
231
|
-
});
|
191
|
+
if (attribute.name === 'rel' || attribute.name === 'href') {
|
192
|
+
HTMLLinkElementUtility.loadExternalStylesheet(this);
|
232
193
|
}
|
233
194
|
|
234
195
|
return replacedAttribute;
|
@@ -256,47 +217,8 @@ export default class HTMLLinkElement extends HTMLElement implements IHTMLLinkEle
|
|
256
217
|
|
257
218
|
super._connectToNode(parentNode);
|
258
219
|
|
259
|
-
if (
|
260
|
-
|
261
|
-
isConnected !== isParentConnected &&
|
262
|
-
this._evaluateCSS &&
|
263
|
-
!this.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading
|
264
|
-
) {
|
265
|
-
const href = this.getAttribute('href');
|
266
|
-
const rel = this.getAttribute('rel');
|
267
|
-
|
268
|
-
if (href !== null && rel && rel.toLowerCase() === 'stylesheet') {
|
269
|
-
(<Document>this.ownerDocument)._readyStateManager.startTask();
|
270
|
-
ResourceFetch.fetch(this.ownerDocument, href)
|
271
|
-
.then((code) => {
|
272
|
-
const styleSheet = new CSSStyleSheet();
|
273
|
-
styleSheet.replaceSync(code);
|
274
|
-
(<CSSStyleSheet>this.sheet) = styleSheet;
|
275
|
-
this.dispatchEvent(new Event('load'));
|
276
|
-
(<Document>this.ownerDocument)._readyStateManager.endTask();
|
277
|
-
})
|
278
|
-
.catch((error) => {
|
279
|
-
this.dispatchEvent(
|
280
|
-
new ErrorEvent('error', {
|
281
|
-
message: error.message,
|
282
|
-
error
|
283
|
-
})
|
284
|
-
);
|
285
|
-
this.ownerDocument.defaultView.dispatchEvent(
|
286
|
-
new ErrorEvent('error', {
|
287
|
-
message: error.message,
|
288
|
-
error
|
289
|
-
})
|
290
|
-
);
|
291
|
-
(<Document>this.ownerDocument)._readyStateManager.endTask();
|
292
|
-
if (
|
293
|
-
!this['_listeners']['error'] &&
|
294
|
-
!this.ownerDocument.defaultView['_listeners']['error']
|
295
|
-
) {
|
296
|
-
this.ownerDocument.defaultView.console.error(error);
|
297
|
-
}
|
298
|
-
});
|
299
|
-
}
|
220
|
+
if (isParentConnected && isConnected !== isParentConnected && this._evaluateCSS) {
|
221
|
+
HTMLLinkElementUtility.loadExternalStylesheet(this);
|
300
222
|
}
|
301
223
|
}
|
302
224
|
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
import Document from '../document/Document';
|
2
|
+
import Event from '../../event/Event';
|
3
|
+
import ErrorEvent from '../../event/events/ErrorEvent';
|
4
|
+
import ResourceFetch from '../../fetch/ResourceFetch';
|
5
|
+
import HTMLLinkElement from './HTMLLinkElement';
|
6
|
+
import CSSStyleSheet from '../../css/CSSStyleSheet';
|
7
|
+
import DOMException from '../../exception/DOMException';
|
8
|
+
import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum';
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Helper class for getting the URL relative to a Location object.
|
12
|
+
*/
|
13
|
+
export default class HTMLLinkElementUtility {
|
14
|
+
/**
|
15
|
+
* Returns a URL relative to the given Location object.
|
16
|
+
*
|
17
|
+
* @param options Options.
|
18
|
+
* @param options.element Element.
|
19
|
+
* @param element
|
20
|
+
*/
|
21
|
+
public static async loadExternalStylesheet(element: HTMLLinkElement): Promise<void> {
|
22
|
+
const href = element.getAttribute('href');
|
23
|
+
const rel = element.getAttribute('rel');
|
24
|
+
|
25
|
+
if (href !== null && rel && rel.toLowerCase() === 'stylesheet' && element.isConnected) {
|
26
|
+
if (element.ownerDocument.defaultView.happyDOM.settings.disableCSSFileLoading) {
|
27
|
+
this.onError(
|
28
|
+
element,
|
29
|
+
new DOMException(
|
30
|
+
`Failed to load external stylesheet "${href}". CSS file loading is disabled.`,
|
31
|
+
DOMExceptionNameEnum.notSupportedError
|
32
|
+
)
|
33
|
+
);
|
34
|
+
return;
|
35
|
+
}
|
36
|
+
|
37
|
+
(<Document>element.ownerDocument)._readyStateManager.startTask();
|
38
|
+
|
39
|
+
let code: string;
|
40
|
+
try {
|
41
|
+
code = await ResourceFetch.fetch(element.ownerDocument, href);
|
42
|
+
} catch (error) {
|
43
|
+
this.onError(element, error);
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
|
47
|
+
const styleSheet = new CSSStyleSheet();
|
48
|
+
styleSheet.replaceSync(code);
|
49
|
+
(<CSSStyleSheet>element.sheet) = styleSheet;
|
50
|
+
element.dispatchEvent(new Event('load'));
|
51
|
+
(<Document>element.ownerDocument)._readyStateManager.endTask();
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* Triggered when an error occurs.
|
57
|
+
*
|
58
|
+
* @param element Element.
|
59
|
+
* @param error Error.
|
60
|
+
*/
|
61
|
+
private static onError(element: HTMLLinkElement, error: Error): void {
|
62
|
+
element.dispatchEvent(
|
63
|
+
new ErrorEvent('error', {
|
64
|
+
message: error.message,
|
65
|
+
error
|
66
|
+
})
|
67
|
+
);
|
68
|
+
element.ownerDocument.defaultView.dispatchEvent(
|
69
|
+
new ErrorEvent('error', {
|
70
|
+
message: error.message,
|
71
|
+
error
|
72
|
+
})
|
73
|
+
);
|
74
|
+
(<Document>element.ownerDocument)._readyStateManager.endTask();
|
75
|
+
if (
|
76
|
+
!element['_listeners']['error'] &&
|
77
|
+
!element.ownerDocument.defaultView['_listeners']['error']
|
78
|
+
) {
|
79
|
+
element.ownerDocument.defaultView.console.error(error);
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import IAttr from '../attr/IAttr';
|
2
2
|
import HTMLElement from '../html-element/HTMLElement';
|
3
3
|
import IHTMLScriptElement from './IHTMLScriptElement';
|
4
|
-
import
|
4
|
+
import HTMLScriptElementUtility from './HTMLScriptElementUtility';
|
5
5
|
import Event from '../../event/Event';
|
6
6
|
import ErrorEvent from '../../event/events/ErrorEvent';
|
7
7
|
import INode from '../../nodes/node/INode';
|
@@ -162,7 +162,7 @@ export default class HTMLScriptElement extends HTMLElement implements IHTMLScrip
|
|
162
162
|
const replacedAttribute = super.setAttributeNode(attribute);
|
163
163
|
|
164
164
|
if (attribute.name === 'src' && attribute.value !== null && this.isConnected) {
|
165
|
-
|
165
|
+
HTMLScriptElementUtility.loadExternalScript(this);
|
166
166
|
}
|
167
167
|
|
168
168
|
return replacedAttribute;
|
@@ -192,7 +192,7 @@ export default class HTMLScriptElement extends HTMLElement implements IHTMLScrip
|
|
192
192
|
const src = this.getAttribute('src');
|
193
193
|
|
194
194
|
if (src !== null) {
|
195
|
-
|
195
|
+
HTMLScriptElementUtility.loadExternalScript(this);
|
196
196
|
} else if (!this.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptEvaluation) {
|
197
197
|
const textContent = this.textContent;
|
198
198
|
const type = this.getAttribute('type');
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import Document from '../document/Document';
|
2
|
+
import Event from '../../event/Event';
|
3
|
+
import ErrorEvent from '../../event/events/ErrorEvent';
|
4
|
+
import DOMException from '../../exception/DOMException';
|
5
|
+
import DOMExceptionNameEnum from '../../exception/DOMExceptionNameEnum';
|
6
|
+
import ResourceFetch from '../../fetch/ResourceFetch';
|
7
|
+
import HTMLScriptElement from './HTMLScriptElement';
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Helper class for getting the URL relative to a Location object.
|
11
|
+
*/
|
12
|
+
export default class HTMLScriptElementUtility {
|
13
|
+
/**
|
14
|
+
* Returns a URL relative to the given Location object.
|
15
|
+
*
|
16
|
+
* @param options Options.
|
17
|
+
* @param options.element Element.
|
18
|
+
* @param element
|
19
|
+
*/
|
20
|
+
public static async loadExternalScript(element: HTMLScriptElement): Promise<void> {
|
21
|
+
const src = element.getAttribute('src');
|
22
|
+
const async = element.getAttribute('async') !== null;
|
23
|
+
|
24
|
+
if (
|
25
|
+
element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptFileLoading ||
|
26
|
+
element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptEvaluation
|
27
|
+
) {
|
28
|
+
this.onError(
|
29
|
+
element,
|
30
|
+
new DOMException(
|
31
|
+
`Failed to load external script "${src}". JavaScript file loading is disabled.`,
|
32
|
+
DOMExceptionNameEnum.notSupportedError
|
33
|
+
)
|
34
|
+
);
|
35
|
+
return;
|
36
|
+
}
|
37
|
+
|
38
|
+
if (async) {
|
39
|
+
(<Document>element.ownerDocument)._readyStateManager.startTask();
|
40
|
+
|
41
|
+
let code = null;
|
42
|
+
|
43
|
+
try {
|
44
|
+
code = await ResourceFetch.fetch(element.ownerDocument, src);
|
45
|
+
} catch (error) {
|
46
|
+
this.onError(element, error);
|
47
|
+
return;
|
48
|
+
}
|
49
|
+
|
50
|
+
element.ownerDocument.defaultView.eval(code);
|
51
|
+
element.dispatchEvent(new Event('load'));
|
52
|
+
(<Document>element.ownerDocument)._readyStateManager.endTask();
|
53
|
+
} else {
|
54
|
+
let code = null;
|
55
|
+
|
56
|
+
try {
|
57
|
+
code = ResourceFetch.fetchSync(element.ownerDocument, src);
|
58
|
+
} catch (error) {
|
59
|
+
this.onError(element, error);
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
|
63
|
+
element.ownerDocument.defaultView.eval(code);
|
64
|
+
element.dispatchEvent(new Event('load'));
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
/**
|
69
|
+
* Triggered when an error occurs.
|
70
|
+
*
|
71
|
+
* @param element Element.
|
72
|
+
* @param error Error.
|
73
|
+
*/
|
74
|
+
private static onError(element: HTMLScriptElement, error: Error): void {
|
75
|
+
element.dispatchEvent(
|
76
|
+
new ErrorEvent('error', {
|
77
|
+
message: error.message,
|
78
|
+
error
|
79
|
+
})
|
80
|
+
);
|
81
|
+
element.ownerDocument.defaultView.dispatchEvent(
|
82
|
+
new ErrorEvent('error', {
|
83
|
+
message: error.message,
|
84
|
+
error
|
85
|
+
})
|
86
|
+
);
|
87
|
+
if (
|
88
|
+
!element['_listeners']['error'] &&
|
89
|
+
!element.ownerDocument.defaultView['_listeners']['error']
|
90
|
+
) {
|
91
|
+
element.ownerDocument.defaultView.console.error(error);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ScriptUtility.d.ts","sourceRoot":"","sources":["../../../src/nodes/html-script-element/ScriptUtility.ts"],"names":[],"mappings":"AAIA,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa;IACjC;;;;;;OAMG;WACiB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAuEjF"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ScriptUtility.js","sourceRoot":"","sources":["../../../src/nodes/html-script-element/ScriptUtility.ts"],"names":[],"mappings":"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"}
|
@@ -1,89 +0,0 @@
|
|
1
|
-
import { Document } from '../..';
|
2
|
-
import Event from '../../event/Event';
|
3
|
-
import ErrorEvent from '../../event/events/ErrorEvent';
|
4
|
-
import ResourceFetch from '../../fetch/ResourceFetch';
|
5
|
-
import HTMLScriptElement from './HTMLScriptElement';
|
6
|
-
|
7
|
-
/**
|
8
|
-
* Helper class for getting the URL relative to a Location object.
|
9
|
-
*/
|
10
|
-
export default class ScriptUtility {
|
11
|
-
/**
|
12
|
-
* Returns a URL relative to the given Location object.
|
13
|
-
*
|
14
|
-
* @param options Options.
|
15
|
-
* @param options.element Element.
|
16
|
-
* @param element
|
17
|
-
*/
|
18
|
-
public static async loadExternalScript(element: HTMLScriptElement): Promise<void> {
|
19
|
-
const src = element.getAttribute('src');
|
20
|
-
const async = element.getAttribute('async') !== null;
|
21
|
-
|
22
|
-
if (
|
23
|
-
element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptFileLoading ||
|
24
|
-
element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptEvaluation
|
25
|
-
) {
|
26
|
-
return;
|
27
|
-
}
|
28
|
-
|
29
|
-
if (async) {
|
30
|
-
let code = null;
|
31
|
-
(<Document>element.ownerDocument)._readyStateManager.startTask();
|
32
|
-
try {
|
33
|
-
code = await ResourceFetch.fetch(element.ownerDocument, src);
|
34
|
-
} catch (error) {
|
35
|
-
element.dispatchEvent(
|
36
|
-
new ErrorEvent('error', {
|
37
|
-
message: error.message,
|
38
|
-
error
|
39
|
-
})
|
40
|
-
);
|
41
|
-
element.ownerDocument.defaultView.dispatchEvent(
|
42
|
-
new ErrorEvent('error', {
|
43
|
-
message: error.message,
|
44
|
-
error
|
45
|
-
})
|
46
|
-
);
|
47
|
-
if (
|
48
|
-
!element['_listeners']['error'] &&
|
49
|
-
!element.ownerDocument.defaultView['_listeners']['error']
|
50
|
-
) {
|
51
|
-
element.ownerDocument.defaultView.console.error(error);
|
52
|
-
}
|
53
|
-
}
|
54
|
-
if (code) {
|
55
|
-
element.ownerDocument.defaultView.eval(code);
|
56
|
-
element.dispatchEvent(new Event('load'));
|
57
|
-
}
|
58
|
-
(<Document>element.ownerDocument)._readyStateManager.endTask();
|
59
|
-
} else {
|
60
|
-
let code = null;
|
61
|
-
try {
|
62
|
-
code = ResourceFetch.fetchSync(element.ownerDocument, src);
|
63
|
-
} catch (error) {
|
64
|
-
element.dispatchEvent(
|
65
|
-
new ErrorEvent('error', {
|
66
|
-
message: error.message,
|
67
|
-
error
|
68
|
-
})
|
69
|
-
);
|
70
|
-
element.ownerDocument.defaultView.dispatchEvent(
|
71
|
-
new ErrorEvent('error', {
|
72
|
-
message: error.message,
|
73
|
-
error
|
74
|
-
})
|
75
|
-
);
|
76
|
-
if (
|
77
|
-
!element['_listeners']['error'] &&
|
78
|
-
!element.ownerDocument.defaultView['_listeners']['error']
|
79
|
-
) {
|
80
|
-
element.ownerDocument.defaultView.console.error(error);
|
81
|
-
}
|
82
|
-
}
|
83
|
-
if (code) {
|
84
|
-
element.ownerDocument.defaultView.eval(code);
|
85
|
-
element.dispatchEvent(new Event('load'));
|
86
|
-
}
|
87
|
-
}
|
88
|
-
}
|
89
|
-
}
|