single-file-core 1.0.38 → 1.0.40

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "single-file-core",
3
- "version": "1.0.38",
3
+ "version": "1.0.40",
4
4
  "description": "SingleFile Core",
5
5
  "author": "Gildas Lormeau",
6
6
  "license": "AGPL-3.0-or-later",
@@ -502,7 +502,7 @@ class Processor {
502
502
  if (this.options.insertMetaCSP) {
503
503
  const metaTag = this.doc.createElement("meta");
504
504
  metaTag.httpEquiv = "content-security-policy";
505
- metaTag.content = "default-src 'none'; font-src 'self' data:; img-src 'self' data:; style-src 'unsafe-inline'; media-src 'self' data:; script-src 'unsafe-inline' data:; object-src 'self' data:;";
505
+ metaTag.content = "default-src 'none'; font-src 'self' data:; img-src 'self' data:; style-src 'unsafe-inline'; media-src 'self' data:; script-src 'unsafe-inline' data:; object-src 'self' data:; frame-src 'self' data:;";
506
506
  this.doc.head.appendChild(metaTag);
507
507
  }
508
508
  if (this.options.insertMetaNoIndex) {
@@ -764,7 +764,7 @@ class Processor {
764
764
  placeholderElement.replaceWith(noscriptElement);
765
765
  });
766
766
  this.doc.querySelectorAll("meta[http-equiv=\"content-security-policy\"]").forEach(element => element.remove());
767
- const objectElements = this.doc.querySelectorAll("applet, object[data]:not([type=\"image/svg+xml\"]):not([type=\"image/svg-xml\"]):not([type=\"text/html\"]), embed[src]:not([src*=\".svg\"]):not([src*=\".pdf\"])");
767
+ const objectElements = this.doc.querySelectorAll("applet, object[data]:not([type=\"image/svg+xml\"]):not([type=\"image/svg-xml\"]):not([type=\"text/html\"]):not([data*=\".svg\"]):not([data*=\".pdf\"]), embed[src]:not([src*=\".svg\"]):not([src*=\".pdf\"])");
768
768
  this.stats.set("discarded", "objects", objectElements.length);
769
769
  this.stats.set("processed", "objects", objectElements.length);
770
770
  objectElements.forEach(element => element.remove());
@@ -791,14 +791,16 @@ class Processor {
791
791
  replaceInvalidElements() {
792
792
  this.doc.querySelectorAll("template[" + util.INVALID_ELEMENT_ATTRIBUTE_NAME + "]").forEach(templateElement => {
793
793
  const placeHolderElement = this.doc.createElement("span");
794
- const originalElement = templateElement.content.firstChild;
795
- if (originalElement) {
796
- if (originalElement.hasAttributes()) {
797
- Array.from(originalElement.attributes).forEach(attribute => placeHolderElement.setAttribute(attribute.name, attribute.value));
794
+ if (templateElement.content) {
795
+ const originalElement = templateElement.content.firstChild;
796
+ if (originalElement) {
797
+ if (originalElement.hasAttributes()) {
798
+ Array.from(originalElement.attributes).forEach(attribute => placeHolderElement.setAttribute(attribute.name, attribute.value));
799
+ }
800
+ originalElement.childNodes.forEach(childNode => placeHolderElement.appendChild(childNode.cloneNode(true)));
798
801
  }
799
- originalElement.childNodes.forEach(childNode => placeHolderElement.appendChild(childNode.cloneNode(true)));
802
+ templateElement.replaceWith(placeHolderElement);
800
803
  }
801
- templateElement.replaceWith(placeHolderElement);
802
804
  });
803
805
  }
804
806
 
@@ -1222,7 +1224,7 @@ class Processor {
1222
1224
  async processPageResources() {
1223
1225
  const processAttributeArgs = [
1224
1226
  ["link[href][rel*=\"icon\"]", "href", false, true],
1225
- ["object[type=\"image/svg+xml\"], object[type=\"image/svg-xml\"]", "data"],
1227
+ ["object[type=\"image/svg+xml\"], object[type=\"image/svg-xml\"], object[data*=\".svg\"], object[data*=\".pdf\"]", "data"],
1226
1228
  ["img[src], input[src][type=image]", "src", true],
1227
1229
  ["embed[src*=\".svg\"], embed[src*=\".pdf\"]", "src"],
1228
1230
  ["video[poster]", "poster"],