Selaa lähdekoodia

add "disable compression" option

Gildas 2 päivää sitten
vanhempi
sitoutus
e02eee8704

+ 4 - 0
_locales/az/messages.json

@@ -351,6 +351,10 @@
 		"message": "kök qovluğu yarat",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "sıxışdırmanı deaktiv edin",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "ZIP məzmunundan sonra məlumat əlavə etməyin",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/de/messages.json

@@ -351,6 +351,10 @@
 		"message": "Stammverzeichnis erstellen",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "Komprimierung deaktivieren",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "Keine Daten nach den ZIP-Daten anhängen",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/en/messages.json

@@ -351,6 +351,10 @@
 		"message": "create a root directory",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "disable compression",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "do not append data after the ZIP data",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/es/messages.json

@@ -351,6 +351,10 @@
 		"message": "crear un directorio raíz",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "deshabilitar compresión",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "no añadir datos después de los datos ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/fr/messages.json

@@ -351,6 +351,10 @@
 		"message": "créer un répertoire racine",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "désactiver la compression",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "ne pas ajouter de données après les données ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/it/messages.json

@@ -351,6 +351,10 @@
 		"message": "crea una cartella principale",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "disabilita la compressione",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "non aggiungere dati dopo i dati ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/ja/messages.json

@@ -351,6 +351,10 @@
 		"message": "ルートディレクトリを作成する",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "圧縮を無効にする",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "ZIPデータの後にデータを追加しない",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/nl_NL/messages.json

@@ -351,6 +351,10 @@
 		"message": "maak een hoofdmap",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "compressie uitschakelen",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "voeg geen gegevens toe na de ZIP-gegevens",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/pl/messages.json

@@ -347,6 +347,10 @@
 		"message": "utwórz katalog główny",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "disable compression",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "nie dołączaj danych po danych ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/pt_PT/messages.json

@@ -351,6 +351,10 @@
 		"message": "criar um diretório raiz",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "desabilitar compactação",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "não anexar dados após os dados ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/pt_br/messages.json

@@ -351,6 +351,10 @@
 		"message": "criar um diretório raiz",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "desabilitar compactação",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "não anexe dados após os dados ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 5 - 1
_locales/ru/messages.json

@@ -351,6 +351,10 @@
 		"message": "создать корневую папку",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "disable compression",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "не добавлять данные после данных ZIP",
 		"description": "Options page label: 'do not append data after the ZIP data'"
@@ -1127,4 +1131,4 @@
 		"message": "Неправильный JSON",
 		"description": "Options editor error message: 'Invalid JSON'"
 	}
-}
+}

+ 4 - 0
_locales/sv/messages.json

@@ -351,6 +351,10 @@
 		"message": "skapa en rotkatalog",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "inaktivera komprimering",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "lägg inte till data efter ZIP-data",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/tr/messages.json

@@ -351,6 +351,10 @@
 		"message": "kök dizin oluştur",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "sıkıştırmayı devre dışı bırak",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "ZIP verilerinden sonra veri eklemeyin",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/uk/messages.json

@@ -351,6 +351,10 @@
 		"message": "створити кореневий каталог",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "відключити сжаття",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "не додавайте дані після ZIP-архіву",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/zh_CN/messages.json

@@ -351,6 +351,10 @@
 		"message": "创建根目录",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "禁用压缩",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "不要在 ZIP 数据后添加数据",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 4 - 0
_locales/zh_TW/messages.json

@@ -351,6 +351,10 @@
 		"message": "創建根目錄",
 		"description": "Options page label: 'create a root directory'"
 	},
+	"optionDisableCompression": {
+		"message": "禁用壓縮",
+		"description": "Options page label: 'disable compression'"
+	},
 	"optionPreventAppendedData": {
 		"message": "不要在 ZIP 數據後添加數據",
 		"description": "Options page label: 'do not append data after the ZIP data'"

+ 1 - 1
package.json

@@ -10,7 +10,7 @@
 	},
 	"type": "module",
 	"dependencies": {
-		"single-file-core": "1.5.82"
+		"single-file-core": "1.5.83"
 	},
 	"devDependencies": {
 		"eslint": "^9.39.2",

+ 1 - 0
src/core/bg/config.js

@@ -146,6 +146,7 @@ const DEFAULT_CONFIG = {
 	compressContent: false,
 	createRootDirectory: false,
 	selfExtractingArchive: true,
+	disableCompression: false,
 	extractDataFromPage: true,
 	preventAppendedData: false,
 	insertEmbeddedImage: false,

+ 2 - 0
src/core/bg/downloads.js

@@ -306,6 +306,7 @@ async function downloadCompressedContent(message, tab) {
 				createRootDirectory: message.createRootDirectory,
 				tabId,
 				selfExtractingArchive: message.selfExtractingArchive,
+				disableCompression: message.disableCompression,
 				extractDataFromPage: message.extractDataFromPage,
 				preventAppendedData: message.preventAppendedData,
 				insertCanonicalLink: message.insertCanonicalLink,
@@ -323,6 +324,7 @@ async function downloadCompressedContent(message, tab) {
 					content: Array.from(new Uint8Array(await blob.arrayBuffer())),
 					compressContent: message.compressContent,
 					selfExtractingArchive: message.selfExtractingArchive,
+					disableCompression: message.disableCompression,
 					extractDataFromPage: message.extractDataFromPage,
 					insertTextBody: message.insertTextBody,
 					insertMetaCSP: message.insertMetaCSP,

+ 3 - 1
src/core/bg/editor.js

@@ -39,7 +39,7 @@ export {
 	EDITOR_URL
 };
 
-async function open({ tabIndex, content, filename, compressContent, selfExtractingArchive, extractDataFromPage, insertTextBody, insertMetaCSP, embeddedImage, url }) {
+async function open({ tabIndex, content, filename, compressContent, selfExtractingArchive, disableCompression, extractDataFromPage, insertTextBody, insertMetaCSP, embeddedImage, url }) {
 	const createTabProperties = { active: true, url: EDITOR_PAGE_URL };
 	if (tabIndex != null) {
 		createTabProperties.index = tabIndex;
@@ -51,6 +51,7 @@ async function open({ tabIndex, content, filename, compressContent, selfExtracti
 		filename,
 		compressContent,
 		selfExtractingArchive,
+		disableCompression,
 		extractDataFromPage,
 		insertTextBody,
 		insertMetaCSP,
@@ -121,6 +122,7 @@ async function onMessage(message, sender) {
 				filename: message.filename,
 				compressContent: message.compressContent,
 				selfExtractingArchive: message.selfExtractingArchive,
+				disableCompression: message.disableCompression,
 				extractDataFromPageTags: message.extractDataFromPageTags,
 				insertTextBody: message.insertTextBody,
 				insertMetaCSP: message.insertMetaCSP,

+ 1 - 0
src/core/common/download.js

@@ -99,6 +99,7 @@ async function downloadPage(pageData, options) {
 		warnUnsavedPage: options.warnUnsavedPage,
 		createRootDirectory: options.createRootDirectory,
 		selfExtractingArchive: options.selfExtractingArchive,
+		disableCompression: options.disableCompression,
 		embeddedImage: embeddedImage ? Array.from(embeddedImage) : null,
 		preventAppendedData: options.preventAppendedData,
 		extractDataFromPage: options.extractDataFromPage,

+ 3 - 0
src/ui/bg/ui-editor.js

@@ -306,6 +306,9 @@ addEventListener("message", async event => {
 			if (tabData.selfExtractingArchive !== undefined) {
 				tabData.options.selfExtractingArchive = tabData.selfExtractingArchive;
 			}
+			if (tabData.disableCompression !== undefined) {
+				tabData.options.disableCompression = tabData.disableCompression;
+			}
 			if (tabData.extractDataFromPageTags !== undefined) {
 				tabData.options.extractDataFromPage = tabData.extractDataFromPageTags;
 			}

+ 6 - 0
src/ui/bg/ui-options.js

@@ -159,6 +159,7 @@ const replaceBookmarkURLLabel = document.getElementById("replaceBookmarkURLLabel
 const allowedBookmarkFoldersLabel = document.getElementById("allowedBookmarkFoldersLabel");
 const ignoredBookmarkFoldersLabel = document.getElementById("ignoredBookmarkFoldersLabel");
 const createRootDirectoryLabel = document.getElementById("createRootDirectoryLabel");
+const disableCompressionLabel = document.getElementById("disableCompressionLabel");
 const preventAppendedDataLabel = document.getElementById("preventAppendedDataLabel");
 const passwordLabel = document.getElementById("passwordLabel");
 const titleLabel = document.getElementById("titleLabel");
@@ -320,6 +321,7 @@ const allowedBookmarkFoldersInput = document.getElementById("allowedBookmarkFold
 const ignoredBookmarkFoldersInput = document.getElementById("ignoredBookmarkFoldersInput");
 const fileFormatSelectInput = document.getElementById("fileFormatSelectInput");
 const createRootDirectoryInput = document.getElementById("createRootDirectoryInput");
+const disableCompressionInput = document.getElementById("disableCompressionInput");
 const preventAppendedDataInput = document.getElementById("preventAppendedDataInput");
 const passwordInput = document.getElementById("passwordInput");
 const groupDuplicateImagesInput = document.getElementById("groupDuplicateImagesInput");
@@ -783,6 +785,7 @@ replaceBookmarkURLLabel.textContent = browser.i18n.getMessage("optionReplaceBook
 allowedBookmarkFoldersLabel.textContent = browser.i18n.getMessage("optionAllowedBookmarkFolders");
 ignoredBookmarkFoldersLabel.textContent = browser.i18n.getMessage("optionIgnoredBookmarkFolders");
 createRootDirectoryLabel.textContent = browser.i18n.getMessage("optionCreateRootDirectory");
+disableCompressionLabel.textContent = browser.i18n.getMessage("optionDisableCompression");
 preventAppendedDataLabel.textContent = browser.i18n.getMessage("optionPreventAppendedData");
 passwordLabel.textContent = browser.i18n.getMessage("optionPassword");
 groupDuplicateImagesLabel.textContent = browser.i18n.getMessage("optionGroupDuplicateImages");
@@ -1153,6 +1156,8 @@ async function refresh(profileName) {
 		"self-extracting-zip-universal" : "self-extracting-zip" : "zip" : "html";
 	createRootDirectoryInput.checked = profileOptions.createRootDirectory;
 	createRootDirectoryInput.disabled = !profileOptions.compressContent;
+	disableCompressionInput.checked = profileOptions.disableCompression;
+	disableCompressionInput.disabled = !profileOptions.compressContent;
 	preventAppendedDataInput.checked = profileOptions.preventAppendedData;
 	preventAppendedDataInput.disabled = !profileOptions.compressContent && !profileOptions.selfExtractingArchive;
 	passwordInput.value = profileOptions.password;
@@ -1307,6 +1312,7 @@ async function update() {
 			ignoredBookmarkFolders: ignoredBookmarkFoldersInput.value.replace(/([^\\]),/g, "$1 ,").split(/[^\\],/).map(folder => folder.replace(/\\,/g, ",")),
 			compressContent: fileFormatSelectInput.value.includes("zip"),
 			createRootDirectory: createRootDirectoryInput.checked,
+			disableCompression: disableCompressionInput.checked,
 			preventAppendedData: preventAppendedDataInput.checked,
 			selfExtractingArchive: fileFormatSelectInput.value.includes("self-extracting"),
 			extractDataFromPage: fileFormatSelectInput.value == "self-extracting-zip-universal",

+ 6 - 0
src/ui/pages/help.html

@@ -244,6 +244,12 @@
 							a timestamp and the identifier of the tab where the saved page is displayed.
 						</p>
 					</li>
+					<li data-options-label="disableCompressionLabel">
+						<span class="option">Option: disable compression</span>
+						<p>Check this option to disable the compression of the ZIP file. This can help to reduce the
+							CPU consumption and the time needed to save a page but it will increase the size of the
+							resulting file.</p>
+					</li>
 					<li data-options-label="preventAppendedDataLabel">
 						<span class="option">Option: do not append data after the ZIP data</span>
 						<p>Check this option to remove the data appended after the ZIP data. The resulting file may be

+ 4 - 0
src/ui/pages/options.html

@@ -139,6 +139,10 @@
 				<label for="createRootDirectoryInput" id="createRootDirectoryLabel"></label>
 				<input type="checkbox" id="createRootDirectoryInput">
 			</div>
+			<div class="option">
+				<label for="disableCompressionInput" id="disableCompressionLabel"></label>
+				<input type="checkbox" id="disableCompressionInput">
+			</div>
 			<div class="option">
 				<label for="preventAppendedDataInput" id="preventAppendedDataLabel"></label>
 				<input type="checkbox" id="preventAppendedDataInput">