Kaynağa Gözat

update dependencies

Gildas 2 yıl önce
ebeveyn
işleme
4939b502ac
4 değiştirilmiş dosya ile 58 ekleme ve 52 silme
  1. 44 38
      lib/single-file-extension-editor.js
  2. 0 0
      lib/single-file.js
  3. 12 12
      package-lock.json
  4. 2 2
      package.json

+ 44 - 38
lib/single-file-extension-editor.js

@@ -5059,93 +5059,99 @@
 			"wav": "audio/wav",
 			"weba": "audio/webm"
 		};
+		const REGEXP_MATCH_STYLESHEET = /stylesheet_[0-9]+\.css/;
+		const REGEXP_MATCH_SCRIPT = /scripts\/[0-9]+\.js/;
+		const REGEXP_MATCH_ROOT_INDEX = /^([0-9_]+\/)?index\.html$/;
+		const REGEXP_MATCH_INDEX = /index\.html$/;
+		const REGEXP_ESCAPE = /([{}()^$&.*?/+|[\\\\]|\]|-)/g;
+		const CHARSET_UTF8 = ";charset=utf-8";
 		if (Array.isArray(content)) {
 			content = new Blob([new Uint8Array(content)]);
 		}
 		zip.configure(zipOptions);
 		const blobReader = new zip.BlobReader(content);
-		let resources = [];
 		const zipReader = new zip.ZipReader(blobReader);
 		const entries = await zipReader.getEntries();
 		const options = { password };
+		let docContent, origDocContent, url, resources = [];
 		await Promise.all(entries.map(async entry => {
-			let dataWriter, content, textContent, name, blob;
+			const { filename } = entry;
+			let dataWriter, content, textContent, mimeType;
 			if (!options.password && entry.encrypted) {
 				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/)) {
+			if (filename.match(REGEXP_MATCH_INDEX) || filename.match(REGEXP_MATCH_STYLESHEET) || filename.match(REGEXP_MATCH_SCRIPT)) {
 				dataWriter = new zip.TextWriter();
 				textContent = await entry.getData(dataWriter, options);
-				if (entry.filename.match(/index\.html$/)) {
-					mimeType = "text/html;charset=utf-8";
+				if (filename.match(REGEXP_MATCH_INDEX)) {
+					mimeType = "text/html" + CHARSET_UTF8;
 				} else {
-					if (entry.filename.match(/stylesheet_[0-9]+\.css/)) {
-						mimeType = "text/css;charset=utf-8";
-					} else if (entry.filename.match(/scripts\/[0-9]+\.js/)) {
-						mimeType = "text/javascript;charset=utf-8";
+					if (filename.match(REGEXP_MATCH_STYLESHEET)) {
+						mimeType = "text/css" + CHARSET_UTF8;
+					} else if (filename.match(REGEXP_MATCH_SCRIPT)) {
+						mimeType = "text/javascript" + CHARSET_UTF8;
 					}
 					if (textContent !== undefined) {
-						content = noBlobURL ? await getDataURI(textContent, mimeType) : URL.createObjectURL(new Blob([textContent], { type: mimeType }));
+						content = await getDataURI(textContent, mimeType);
 					} else {
 						content = "data:text/plain,";
 					}
 				}
 			} else {
-				const extension = entry.filename.match(/\.([^.]+)/);
+				const extension = filename.match(/\.([^.]+)/);
 				if (extension && extension[1] && KNOWN_MIMETYPES[extension[1]]) {
 					mimeType = KNOWN_MIMETYPES[extension[1]];
 				} else {
 					mimeType = "application/octet-stream";
 				}
-				if (entry.filename.match(/frames\//) || noBlobURL) {
+				if (filename.match(/frames\//) || noBlobURL) {
 					content = await entry.getData(new zip.Data64URIWriter(mimeType), options);
 				} else {
-					blob = await entry.getData(new zip.BlobWriter(mimeType), options);
+					const blob = await entry.getData(new zip.BlobWriter(mimeType), options);
 					content = URL.createObjectURL(blob);
 				}
 			}
-			resources.push({ filename: entry.filename, name, url: entry.comment, content, mimeType, blob, textContent, parentResources: [] });
+			resources.push({ filename: entry.filename, url: entry.comment, content, mimeType, textContent, parentResources: [] });
 		}));
 		await zipReader.close();
-		let docContent, origDocContent, url;
 		resources = resources.sort((resourceLeft, resourceRight) => resourceRight.filename.length - resourceLeft.filename.length);
-		const REGEXP_ESCAPE = /([{}()^$&.*?/+|[\\\\]|\]|-)/g;
 		for (const resource of resources) {
-			if (resource.textContent !== undefined) {
+			let { textContent, mimeType, filename } = resource;
+			if (textContent !== undefined) {
 				let prefixPath = "";
-				const prefixPathMatch = resource.filename.match(/(.*\/)[^/]+$/);
+				const prefixPathMatch = filename.match(/(.*\/)[^/]+$/);
 				if (prefixPathMatch && prefixPathMatch[1]) {
 					prefixPath = prefixPathMatch[1];
 				}
-				if (resource.filename.match(/^([0-9_]+\/)?index\.html$/)) {
-					origDocContent = resource.textContent;
+				if (filename.match(REGEXP_MATCH_ROOT_INDEX)) {
+					origDocContent = textContent;
 				}
-				const isScript = resource.filename.match(/scripts\/[0-9]+\.js/);
-				if (!isScript) {
+				if (!filename.match(REGEXP_MATCH_SCRIPT)) {
+					const resourceFilename = filename;
 					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$/)) {
-								const searchRegExp = new RegExp(filename.replace(REGEXP_ESCAPE, "\\$1"), "g");
-								const position = resource.textContent.search(searchRegExp);
+						const { filename, parentResources, content } = innerResource;
+						if (filename.startsWith(prefixPath) && filename != resourceFilename) {
+							const relativeFilename = filename.substring(prefixPath.length);
+							if (!relativeFilename.match(/manifest\.json$/)) {
+								const searchRegExp = new RegExp(relativeFilename.replace(REGEXP_ESCAPE, "\\$1"), "g");
+								const position = textContent.search(searchRegExp);
 								if (position != -1) {
-									innerResource.parentResources.push(resource.filename);
-									resource.textContent = resource.textContent.replace(searchRegExp, innerResource.content);
+									parentResources.push(resourceFilename);
+									textContent = textContent.replace(searchRegExp, content);
 								}
 							}
 						}
 					}));
-					resource.content = await getDataURI(resource.textContent, resource.mimeType);
+					resource.content = await getDataURI(textContent, mimeType);
+					resource.textContent = textContent;
 				}
-				if (resource.filename.match(/index\.html$/)) {
+				if (filename.match(REGEXP_MATCH_INDEX)) {
 					if (shadowRootScriptURL) {
-						resource.textContent = resource.textContent.replace(/<script data-template-shadow-root.*<\/script>/g, "<script data-template-shadow-root src=" + shadowRootScriptURL + "></" + "script>");
+						resource.textContent = textContent.replace(/<script data-template-shadow-root.*<\/script>/g, "<script data-template-shadow-root src=" + shadowRootScriptURL + "></" + "script>");
 					}
 				}
-				if (resource.filename.match(/^([0-9_]+\/)?index\.html$/)) {
-					docContent = resource.textContent;
+				if (filename.match(REGEXP_MATCH_ROOT_INDEX)) {
+					docContent = textContent;
 					url = resource.url;
 				}
 			}
@@ -5156,8 +5162,8 @@
 			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);
+				reader.onload = () => resolve(reader.result);
+				reader.onerror = reject;
 			});
 		}
 	}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
lib/single-file.js


+ 12 - 12
package-lock.json

@@ -9,8 +9,8 @@
 			"version": "1.1.6",
 			"license": "AGPL-3.0-or-later",
 			"dependencies": {
-				"single-file-cli": "1.1.8",
-				"single-file-core": "1.2.8"
+				"single-file-cli": "1.1.9",
+				"single-file-core": "1.2.9"
 			},
 			"bin": {
 				"single-file": "cli/single-file"
@@ -1508,9 +1508,9 @@
 			"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
 		},
 		"node_modules/resolve": {
-			"version": "1.22.6",
-			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
-			"integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
+			"version": "1.22.8",
+			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+			"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
 			"dev": true,
 			"dependencies": {
 				"is-core-module": "^2.13.0",
@@ -1638,16 +1638,16 @@
 			"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
 		},
 		"node_modules/single-file-cli": {
-			"version": "1.1.8",
-			"resolved": "https://registry.npmjs.org/single-file-cli/-/single-file-cli-1.1.8.tgz",
-			"integrity": "sha512-8BXJxI9XKnH+CiQ5XxeO7h/4cts5qys+ARJhSNWpbnKKDx19plsU2CPMUejk7ef6OA6kDOjHhTUBdkJzXDZn5Q==",
+			"version": "1.1.9",
+			"resolved": "https://registry.npmjs.org/single-file-cli/-/single-file-cli-1.1.9.tgz",
+			"integrity": "sha512-xbqqX44UDxpW1W30gaTuD3EH/ZXYodIa6sQ0gPf0IvH8ZeEwebq+kx5kzCfdPSSs4Ic+z5vagRRkD9iVz+Tn6w==",
 			"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.8",
+				"single-file-core": "1.2.9",
 				"strong-data-uri": "1.0.6",
 				"yargs": "17.7.2"
 			},
@@ -1656,9 +1656,9 @@
 			}
 		},
 		"node_modules/single-file-core": {
-			"version": "1.2.8",
-			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.2.8.tgz",
-			"integrity": "sha512-NLBmppGUvFsUR8wDdlB7RQw2Y7SJ2l9UaZ8uId0uG3iv2Z8l96wuXxOreYu/1gTPyqQgXxiLW1BNXQ+YCqbzSg=="
+			"version": "1.2.9",
+			"resolved": "https://registry.npmjs.org/single-file-core/-/single-file-core-1.2.9.tgz",
+			"integrity": "sha512-F1UgTwXd7H9K4nyXFHrAfGRc3BZMtYJ6I3cshBBGh3t/u6O58M64aZDy0OjqpdHbFE2+wRdMygVy20QS9GHMbA=="
 		},
 		"node_modules/smart-buffer": {
 			"version": "4.2.0",

+ 2 - 2
package.json

@@ -12,8 +12,8 @@
 		"single-file": "./cli/single-file"
 	},
 	"dependencies": {
-		"single-file-core": "1.2.8",
-		"single-file-cli": "1.1.8"
+		"single-file-core": "1.2.9",
+		"single-file-cli": "1.1.9"
 	},
 	"devDependencies": {
 		"@rollup/plugin-node-resolve": "15.0.1",

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor