ソースを参照

added optional parameter "asDataURI"

Gildas 7 年 前
コミット
ec7c6fcf49
1 ファイル変更9 行追加7 行削除
  1. 9 7
      lib/single-file/single-file-core.js

+ 9 - 7
lib/single-file/single-file-core.js

@@ -194,13 +194,14 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 			this.requests = new Map();
 		}
 
-		async addURL(resourceURL) {
+		async addURL(resourceURL, asDataURI = true) {
 			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) {
 					resourceRequests.push({ resolve, reject });
 				} 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) {
 			const resourceURLs = Array.from(this.requests.keys());
 			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 {
-					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;
 					onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
 					resourceRequests.forEach(resourceRequest => resourceRequest.resolve(dataURI));
@@ -224,7 +226,7 @@ this.SingleFileCore = this.SingleFileCore || (() => {
 					onloadListener({ index: indexResource, max: resourceURLs.length, url: resourceURL });
 					resourceRequests.forEach(resourceRequest => resourceRequest.reject(error));
 				}
-				this.requests.delete(resourceURL);
+				this.requests.delete(requestKey);
 			}));
 		}
 	}