|
@@ -194,13 +194,14 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
this.requests = new Map();
|
|
this.requests = new Map();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- async addURL(resourceURL) {
|
|
|
|
|
|
|
+ async addURL(resourceURL, asDataURI = true) {
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
- const resourceRequests = this.requests.get(resourceURL);
|
|
|
|
|
|
|
+ const requestKey = JSON.stringify([resourceURL, asDataURI]);
|
|
|
|
|
+ const resourceRequests = this.requests.get(requestKey);
|
|
|
if (resourceRequests) {
|
|
if (resourceRequests) {
|
|
|
resourceRequests.push({ resolve, reject });
|
|
resourceRequests.push({ resolve, reject });
|
|
|
} else {
|
|
} else {
|
|
|
- this.requests.set(resourceURL, [{ resolve, reject }]);
|
|
|
|
|
|
|
+ this.requests.set(requestKey, [{ resolve, reject }]);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -212,10 +213,11 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
async run(onloadListener, options) {
|
|
async run(onloadListener, options) {
|
|
|
const resourceURLs = Array.from(this.requests.keys());
|
|
const resourceURLs = Array.from(this.requests.keys());
|
|
|
let indexResource = 0;
|
|
let indexResource = 0;
|
|
|
- return Promise.all(resourceURLs.map(async resourceURL => {
|
|
|
|
|
- const resourceRequests = this.requests.get(resourceURL);
|
|
|
|
|
|
|
+ return Promise.all(resourceURLs.map(async requestKey => {
|
|
|
|
|
+ const [resourceURL, asDataURI] = JSON.parse(requestKey);
|
|
|
|
|
+ const resourceRequests = this.requests.get(requestKey);
|
|
|
try {
|
|
try {
|
|
|
- const dataURI = await Download.getContent(resourceURL, { asDataURI: true, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
|
|
|
|
+ const dataURI = await Download.getContent(resourceURL, { asDataURI, maxResourceSize: options.maxResourceSize, maxResourceSizeEnabled: options.maxResourceSizeEnabled });
|
|
|
indexResource = indexResource + 1;
|
|
indexResource = indexResource + 1;
|
|
|
onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
|
|
onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
|
|
|
resourceRequests.forEach(resourceRequest => resourceRequest.resolve(dataURI));
|
|
resourceRequests.forEach(resourceRequest => resourceRequest.resolve(dataURI));
|
|
@@ -224,7 +226,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
|
|
|
onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
|
|
onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
|
|
|
resourceRequests.forEach(resourceRequest => resourceRequest.reject(error));
|
|
resourceRequests.forEach(resourceRequest => resourceRequest.reject(error));
|
|
|
}
|
|
}
|
|
|
- this.requests.delete(resourceURL);
|
|
|
|
|
|
|
+ this.requests.delete(requestKey);
|
|
|
}));
|
|
}));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|