فهرست منبع

update dependencies

Gildas 2 سال پیش
والد
کامیت
94f7835d4d

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
lib/single-file-extension-background.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
lib/single-file-extension-editor-helper.js


+ 29 - 22
lib/single-file-extension-editor.js

@@ -5074,12 +5074,26 @@
 				options.password = prompt("Please enter the password to view the page");
 			}
 			name = entry.filename.match(/^([0-9_]+\/)?(.*)$/)[2];
+			let mimeType;
 			if (entry.filename.match(/index\.html$/) || entry.filename.match(/stylesheet_[0-9]+\.css/) || entry.filename.match(/scripts\/[0-9]+\.js/)) {
 				dataWriter = new zip.TextWriter();
 				textContent = await entry.getData(dataWriter, options);
+				if (entry.filename.match(/index\.html$/)) {
+					mimeType = "text/html";
+				} else {
+					if (entry.filename.match(/stylesheet_[0-9]+\.css/)) {
+						mimeType = "text/css";
+					} else if (entry.filename.match(/scripts\/[0-9]+\.js/)) {
+						mimeType = "text/javascript";
+					}
+					if (textContent !== undefined) {
+						content = noBlobURL ? await getDataURI(textContent, mimeType) : URL.createObjectURL(new Blob([textContent], { type: mimeType }));
+					} else {
+						content = "data:text/plain,";
+					}
+				}
 			} else {
 				const extension = entry.filename.match(/\.([^.]+)/);
-				let mimeType;
 				if (extension && extension[1] && KNOWN_MIMETYPES[extension[1]]) {
 					mimeType = KNOWN_MIMETYPES[extension[1]];
 				} else {
@@ -5092,7 +5106,7 @@
 					content = URL.createObjectURL(blob);
 				}
 			}
-			resources.push({ filename: entry.filename, name, url: entry.comment, content, blob, textContent, parentResources: [] });
+			resources.push({ filename: entry.filename, name, url: entry.comment, content, mimeType, blob, textContent, parentResources: [] });
 		}));
 		await zipReader.close();
 		let docContent, origDocContent, url;
@@ -5110,7 +5124,7 @@
 				}
 				const isScript = resource.filename.match(/scripts\/[0-9]+\.js/);
 				if (!isScript) {
-					resources.forEach(innerResource => {
+					await Promise.all(resources.map(async innerResource => {
 						if (innerResource.filename.startsWith(prefixPath) && innerResource.filename != resource.filename) {
 							const filename = innerResource.filename.substring(prefixPath.length);
 							if (!filename.match(/manifest\.json$/)) {
@@ -5122,15 +5136,10 @@
 								}
 							}
 						}
-					});
+					}));
+					resource.content = await getDataURI(resource.textContent, resource.mimeType);
 				}
-				let mimeType;
-				if (resource.filename.match(/stylesheet_[0-9]+\.css/)) {
-					mimeType = "text/css";
-				} else if (isScript) {
-					mimeType = "text/javascript";
-				} else if (resource.filename.match(/index\.html$/)) {
-					mimeType = "text/html";
+				if (resource.filename.match(/index\.html$/)) {
 					if (shadowRootScriptURL) {
 						resource.textContent = resource.textContent.replace(/<script data-template-shadow-root.*<\/script>/g, "<script data-template-shadow-root src=" + shadowRootScriptURL + "></" + "script>");
 					}
@@ -5138,21 +5147,19 @@
 				if (resource.filename.match(/^([0-9_]+\/)?index\.html$/)) {
 					docContent = resource.textContent;
 					url = resource.url;
-				} else {
-					const reader = new FileReader();
-					if (resource.textContent) {
-						reader.readAsDataURL(new Blob([resource.textContent], { type: mimeType + ";charset=utf-8" }));
-						resource.content = await new Promise((resolve, reject) => {
-							reader.addEventListener("load", () => resolve(reader.result), false);
-							reader.addEventListener("error", reject, false);
-						});
-					} else {
-						resource.content = "data:text/plain,";
-					}
 				}
 			}
 		}
 		return { docContent, origDocContent, resources, url };
+
+		async function getDataURI(textContent, mimeType) {
+			const reader = new FileReader();
+			reader.readAsDataURL(new Blob([textContent], { type: mimeType }));
+			return new Promise((resolve, reject) => {
+				reader.addEventListener("load", () => resolve(reader.result), false);
+				reader.addEventListener("error", reject, false);
+			});
+		}
 	}
 
 	/*

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
lib/single-file.js


+ 22 - 13
package-lock.json

@@ -9,8 +9,8 @@
 			"version": "1.1.4",
 			"license": "AGPL-3.0-or-later",
 			"dependencies": {
-				"single-file-cli": "1.1.5",
-				"single-file-core": "1.2.5"
+				"single-file-cli": "1.1.7",
+				"single-file-core": "1.2.7"
 			},
 			"bin": {
 				"single-file": "cli/single-file"
@@ -219,10 +219,13 @@
 			"dev": true
 		},
 		"node_modules/@types/node": {
-			"version": "20.8.3",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.3.tgz",
-			"integrity": "sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==",
-			"devOptional": true
+			"version": "20.8.4",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz",
+			"integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==",
+			"devOptional": true,
+			"dependencies": {
+				"undici-types": "~5.25.1"
+			}
 		},
 		"node_modules/@types/resolve": {
 			"version": "1.20.2",
@@ -1635,16 +1638,16 @@
 			"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
 		},
 		"node_modules/single-file-cli": {
-			"version": "1.1.5",
-			"resolved": "https://registry.npmjs.org/single-file-cli/-/single-file-cli-1.1.5.tgz",
-			"integrity": "sha512-652rkGAyHqSIjSg/kjTZ6Fl95HMCY+8TeVtC1I7713s9PZbzPncZ1hE6ovkwByYqWSICrwjYjBDL5vUZz18Bag==",
+			"version": "1.1.7",
+			"resolved": "https://registry.npmjs.org/single-file-cli/-/single-file-cli-1.1.7.tgz",
+			"integrity": "sha512-oV1lYfqzE2ApxkAwuN43ovUUokUo7iRhkSfIaZI0Uw/dvYZkR9Vr3TlT73DafDqv3xsmF38UBoMUzac/JGVhww==",
 			"dependencies": {
 				"file-url": "3.0.0",
 				"iconv-lite": "0.6.3",
 				"jsdom": "22.1.0",
 				"puppeteer-core": "21.2.1",
 				"selenium-webdriver": "4.12.0",
-				"single-file-core": "1.2.5",
+				"single-file-core": "1.2.7",
 				"strong-data-uri": "1.0.6",
 				"yargs": "17.7.2"
 			},
@@ -1653,9 +1656,9 @@
 			}
 		},
 		"node_modules/single-file-core": {
-			"version": "1.2.5",
-			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.2.5.tgz",
-			"integrity": "sha512-VoNstp8vePTS79TCcZTnLJjtmvefI8kQFSiOibc19aE2Y5c2Nx6kpBFAtFqExoXEPMY3HyiPU8LI7sN02xPzNw=="
+			"version": "1.2.7",
+			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.2.7.tgz",
+			"integrity": "sha512-XAWzKrArEUHWaI6K5onRL4Cw50j8Pb5eS2RGd7xzoyx1bQgrHJC+g218gjYlXLFGw+6rW0Lkmcmrj/Zw1LYQug=="
 		},
 		"node_modules/smart-buffer": {
 			"version": "4.2.0",
@@ -1922,6 +1925,12 @@
 				"through": "^2.3.8"
 			}
 		},
+		"node_modules/undici-types": {
+			"version": "5.25.3",
+			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz",
+			"integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==",
+			"devOptional": true
+		},
 		"node_modules/universalify": {
 			"version": "0.1.2",
 			"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",

+ 2 - 2
package.json

@@ -12,8 +12,8 @@
 		"single-file": "./cli/single-file"
 	},
 	"dependencies": {
-		"single-file-core": "1.2.5",
-		"single-file-cli": "1.1.5"
+		"single-file-core": "1.2.7",
+		"single-file-cli": "1.1.7"
 	},
 	"devDependencies": {
 		"@rollup/plugin-node-resolve": "15.0.1",

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است