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.

@@ -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;AAEpD,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD,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;AAE/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;IAoDzD;;OAEG;IACa,mBAAmB,CAAC,SAAS,EAAE,KAAK,GAAG,KAAK;IAU5D;;OAEG;IACa,cAAc,CAAC,UAAU,GAAE,KAAY,GAAG,IAAI;CAiD9D"}
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 ((attribute.name === 'rel' || attribute.name === 'href') &&
177
- href !== null &&
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
- isConnected !== isParentConnected &&
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":"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"}
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 ScriptUtility_1 = __importDefault(require("./ScriptUtility"));
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
- ScriptUtility_1.default.loadExternalScript(this);
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
- ScriptUtility_1.default.loadExternalScript(this);
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":"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"}
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 ScriptUtility {
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=ScriptUtility.d.ts.map
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 ScriptUtility {
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
- element.dispatchEvent(new ErrorEvent_1.default('error', {
35
- message: error.message,
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
- element.dispatchEvent(new ErrorEvent_1.default('error', {
60
- message: error.message,
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 = ScriptUtility;
80
- //# sourceMappingURL=ScriptUtility.js.map
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,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-dom",
3
- "version": "9.17.0",
3
+ "version": "9.18.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://github.com/capricorn86/happy-dom",
6
6
  "repository": "https://github.com/capricorn86/happy-dom",
@@ -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
- (attribute.name === 'rel' || attribute.name === 'href') &&
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
- isParentConnected &&
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 ScriptUtility from './ScriptUtility';
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
- ScriptUtility.loadExternalScript(this);
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
- ScriptUtility.loadExternalScript(this);
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
- }