|
|
@@ -90,19 +90,19 @@ this.SingleFile = this.SingleFile || (() => {
|
|
|
}
|
|
|
if (options && options.asDataURI) {
|
|
|
try {
|
|
|
- const buffer = await resourceContent.arrayBuffer();
|
|
|
if (DEBUG) {
|
|
|
log(" // ENDED download url =", resourceURL, "delay =", Date.now() - startTime);
|
|
|
}
|
|
|
- const reader = new FileReader();
|
|
|
- reader.readAsDataURL(new Blob([buffer], { type: contentType }));
|
|
|
- const dataURI = await new Promise((resolve, reject) => {
|
|
|
- reader.addEventListener("load", () => resolve(reader.result), false);
|
|
|
- reader.addEventListener("error", reject, false);
|
|
|
- });
|
|
|
+ const buffer = await resourceContent.arrayBuffer();
|
|
|
if (options.maxResourceSizeEnabled && buffer.byteLength > options.maxResourceSize * ONE_MB) {
|
|
|
return "data:base64,";
|
|
|
} else {
|
|
|
+ const reader = new FileReader();
|
|
|
+ reader.readAsDataURL(new Blob([buffer], { type: contentType }));
|
|
|
+ const dataURI = await new Promise((resolve, reject) => {
|
|
|
+ reader.addEventListener("load", () => resolve(reader.result), false);
|
|
|
+ reader.addEventListener("error", reject, false);
|
|
|
+ });
|
|
|
return dataURI;
|
|
|
}
|
|
|
} catch (error) {
|
|
|
@@ -121,37 +121,32 @@ this.SingleFile = this.SingleFile || (() => {
|
|
|
if (!charSet) {
|
|
|
charSet = "utf-8";
|
|
|
}
|
|
|
- let arrayBuffer;
|
|
|
+ let buffer;
|
|
|
try {
|
|
|
- arrayBuffer = await resourceContent.arrayBuffer();
|
|
|
+ buffer = await resourceContent.arrayBuffer();
|
|
|
} catch (error) {
|
|
|
return "";
|
|
|
}
|
|
|
if (DEBUG) {
|
|
|
log(" // ENDED download url =", resourceURL, "delay =", Date.now() - startTime);
|
|
|
}
|
|
|
- try {
|
|
|
- return getTextContent(charSet, arrayBuffer, options);
|
|
|
- } catch (error) {
|
|
|
+ if (options.maxResourceSizeEnabled && buffer.byteLength > options.maxResourceSize * ONE_MB) {
|
|
|
+ return "";
|
|
|
+ } else {
|
|
|
try {
|
|
|
- return getTextContent("utf-8", arrayBuffer, options);
|
|
|
+ return new TextDecoder(charSet).decode(buffer);
|
|
|
} catch (error) {
|
|
|
- return "";
|
|
|
+ try {
|
|
|
+ return new TextDecoder("utf-8").decode(buffer);
|
|
|
+ } catch (error) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- function getTextContent(charSet, arrayBuffer, options) {
|
|
|
- const textContent = (new TextDecoder(charSet)).decode(arrayBuffer);
|
|
|
- if (options.maxResourceSizeEnabled && textContent.length > options.maxResourceSize * ONE_MB) {
|
|
|
- return "";
|
|
|
- } else {
|
|
|
- return textContent;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
|
|
|
function hex(buffer) {
|
|
|
var hexCodes = [];
|