mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 04:16:17 +01:00 
			
		
		
		
	erasing unused attachments
This commit is contained in:
		
							
								
								
									
										115
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										115
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -83,24 +83,24 @@
 | 
				
			|||||||
        "electron-builder": "23.6.0",
 | 
					        "electron-builder": "23.6.0",
 | 
				
			||||||
        "electron-packager": "17.1.1",
 | 
					        "electron-packager": "17.1.1",
 | 
				
			||||||
        "electron-rebuild": "3.2.9",
 | 
					        "electron-rebuild": "3.2.9",
 | 
				
			||||||
        "eslint": "^8.38.0",
 | 
					        "eslint": "8.39.0",
 | 
				
			||||||
        "eslint-config-airbnb-base": "^15.0.0",
 | 
					        "eslint-config-airbnb-base": "^15.0.0",
 | 
				
			||||||
        "eslint-config-prettier": "^8.8.0",
 | 
					        "eslint-config-prettier": "^8.8.0",
 | 
				
			||||||
        "eslint-plugin-import": "^2.27.5",
 | 
					        "eslint-plugin-import": "^2.27.5",
 | 
				
			||||||
        "eslint-plugin-jsonc": "^2.7.0",
 | 
					        "eslint-plugin-jsonc": "^2.7.0",
 | 
				
			||||||
        "eslint-plugin-prettier": "^4.2.1",
 | 
					        "eslint-plugin-prettier": "^4.2.1",
 | 
				
			||||||
        "esm": "3.2.25",
 | 
					        "esm": "3.2.25",
 | 
				
			||||||
        "husky": "^8.0.3",
 | 
					        "husky": "8.0.3",
 | 
				
			||||||
        "jasmine": "4.6.0",
 | 
					        "jasmine": "4.6.0",
 | 
				
			||||||
        "jsdoc": "4.0.2",
 | 
					        "jsdoc": "4.0.2",
 | 
				
			||||||
        "jsonc-eslint-parser": "^2.2.0",
 | 
					        "jsonc-eslint-parser": "^2.2.0",
 | 
				
			||||||
        "lint-staged": "^13.2.1",
 | 
					        "lint-staged": "^13.2.1",
 | 
				
			||||||
        "lorem-ipsum": "2.0.8",
 | 
					        "lorem-ipsum": "2.0.8",
 | 
				
			||||||
        "nodemon": "^2.0.22",
 | 
					        "nodemon": "2.0.22",
 | 
				
			||||||
        "prettier": "2.8.7",
 | 
					        "prettier": "2.8.8",
 | 
				
			||||||
        "rcedit": "3.0.1",
 | 
					        "rcedit": "3.0.1",
 | 
				
			||||||
        "webpack": "5.80.0",
 | 
					        "webpack": "5.80.0",
 | 
				
			||||||
        "webpack-cli": "5.0.1"
 | 
					        "webpack-cli": "5.0.2"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "optionalDependencies": {
 | 
					      "optionalDependencies": {
 | 
				
			||||||
        "electron-installer-debian": "3.1.0"
 | 
					        "electron-installer-debian": "3.1.0"
 | 
				
			||||||
@@ -453,9 +453,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@eslint/js": {
 | 
					    "node_modules/@eslint/js": {
 | 
				
			||||||
      "version": "8.38.0",
 | 
					      "version": "8.39.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
 | 
					      "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 | 
					        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 | 
				
			||||||
@@ -1580,9 +1580,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@webpack-cli/serve": {
 | 
					    "node_modules/@webpack-cli/serve": {
 | 
				
			||||||
      "version": "2.0.1",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==",
 | 
					      "integrity": "sha512-S9h3GmOmzUseyeFW3tYNnWS7gNUuwxZ3mmMq0JyW78Vx1SGKPSkt5bT4pB0rUnVfHjP0EL9gW2bOzmtiTfQt0A==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">=14.15.0"
 | 
					        "node": ">=14.15.0"
 | 
				
			||||||
@@ -5173,15 +5173,15 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/eslint": {
 | 
					    "node_modules/eslint": {
 | 
				
			||||||
      "version": "8.38.0",
 | 
					      "version": "8.39.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
 | 
					      "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@eslint-community/eslint-utils": "^4.2.0",
 | 
					        "@eslint-community/eslint-utils": "^4.2.0",
 | 
				
			||||||
        "@eslint-community/regexpp": "^4.4.0",
 | 
					        "@eslint-community/regexpp": "^4.4.0",
 | 
				
			||||||
        "@eslint/eslintrc": "^2.0.2",
 | 
					        "@eslint/eslintrc": "^2.0.2",
 | 
				
			||||||
        "@eslint/js": "8.38.0",
 | 
					        "@eslint/js": "8.39.0",
 | 
				
			||||||
        "@humanwhocodes/config-array": "^0.11.8",
 | 
					        "@humanwhocodes/config-array": "^0.11.8",
 | 
				
			||||||
        "@humanwhocodes/module-importer": "^1.0.1",
 | 
					        "@humanwhocodes/module-importer": "^1.0.1",
 | 
				
			||||||
        "@nodelib/fs.walk": "^1.2.8",
 | 
					        "@nodelib/fs.walk": "^1.2.8",
 | 
				
			||||||
@@ -5191,7 +5191,7 @@
 | 
				
			|||||||
        "debug": "^4.3.2",
 | 
					        "debug": "^4.3.2",
 | 
				
			||||||
        "doctrine": "^3.0.0",
 | 
					        "doctrine": "^3.0.0",
 | 
				
			||||||
        "escape-string-regexp": "^4.0.0",
 | 
					        "escape-string-regexp": "^4.0.0",
 | 
				
			||||||
        "eslint-scope": "^7.1.1",
 | 
					        "eslint-scope": "^7.2.0",
 | 
				
			||||||
        "eslint-visitor-keys": "^3.4.0",
 | 
					        "eslint-visitor-keys": "^3.4.0",
 | 
				
			||||||
        "espree": "^9.5.1",
 | 
					        "espree": "^9.5.1",
 | 
				
			||||||
        "esquery": "^1.4.2",
 | 
					        "esquery": "^1.4.2",
 | 
				
			||||||
@@ -5492,9 +5492,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/eslint/node_modules/eslint-scope": {
 | 
					    "node_modules/eslint/node_modules/eslint-scope": {
 | 
				
			||||||
      "version": "7.1.1",
 | 
					      "version": "7.2.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
 | 
					      "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "esrecurse": "^4.3.0",
 | 
					        "esrecurse": "^4.3.0",
 | 
				
			||||||
@@ -5502,6 +5502,9 @@
 | 
				
			|||||||
      },
 | 
					      },
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 | 
					        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "funding": {
 | 
				
			||||||
 | 
					        "url": "https://opencollective.com/eslint"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/eslint/node_modules/find-up": {
 | 
					    "node_modules/eslint/node_modules/find-up": {
 | 
				
			||||||
@@ -10256,9 +10259,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/prettier": {
 | 
					    "node_modules/prettier": {
 | 
				
			||||||
      "version": "2.8.7",
 | 
					      "version": "2.8.8",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
 | 
				
			||||||
      "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
 | 
					      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
        "prettier": "bin-prettier.js"
 | 
					        "prettier": "bin-prettier.js"
 | 
				
			||||||
@@ -12710,17 +12713,17 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/webpack-cli": {
 | 
					    "node_modules/webpack-cli": {
 | 
				
			||||||
      "version": "5.0.1",
 | 
					      "version": "5.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==",
 | 
					      "integrity": "sha512-4y3W5Dawri5+8dXm3+diW6Mn1Ya+Dei6eEVAdIduAmYNLzv1koKVAqsfgrrc9P2mhrYHQphx5htnGkcNwtubyQ==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@discoveryjs/json-ext": "^0.5.0",
 | 
					        "@discoveryjs/json-ext": "^0.5.0",
 | 
				
			||||||
        "@webpack-cli/configtest": "^2.0.1",
 | 
					        "@webpack-cli/configtest": "^2.0.1",
 | 
				
			||||||
        "@webpack-cli/info": "^2.0.1",
 | 
					        "@webpack-cli/info": "^2.0.1",
 | 
				
			||||||
        "@webpack-cli/serve": "^2.0.1",
 | 
					        "@webpack-cli/serve": "^2.0.2",
 | 
				
			||||||
        "colorette": "^2.0.14",
 | 
					        "colorette": "^2.0.14",
 | 
				
			||||||
        "commander": "^9.4.1",
 | 
					        "commander": "^10.0.1",
 | 
				
			||||||
        "cross-spawn": "^7.0.3",
 | 
					        "cross-spawn": "^7.0.3",
 | 
				
			||||||
        "envinfo": "^7.7.3",
 | 
					        "envinfo": "^7.7.3",
 | 
				
			||||||
        "fastest-levenshtein": "^1.0.12",
 | 
					        "fastest-levenshtein": "^1.0.12",
 | 
				
			||||||
@@ -12755,12 +12758,12 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/webpack-cli/node_modules/commander": {
 | 
					    "node_modules/webpack-cli/node_modules/commander": {
 | 
				
			||||||
      "version": "9.4.1",
 | 
					      "version": "10.0.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
 | 
					      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": "^12.20.0 || >=14"
 | 
					        "node": ">=14"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/webpack-merge": {
 | 
					    "node_modules/webpack-merge": {
 | 
				
			||||||
@@ -13409,9 +13412,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@eslint/js": {
 | 
					    "@eslint/js": {
 | 
				
			||||||
      "version": "8.38.0",
 | 
					      "version": "8.39.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
 | 
					      "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@excalidraw/excalidraw": {
 | 
					    "@excalidraw/excalidraw": {
 | 
				
			||||||
@@ -14329,9 +14332,9 @@
 | 
				
			|||||||
      "requires": {}
 | 
					      "requires": {}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@webpack-cli/serve": {
 | 
					    "@webpack-cli/serve": {
 | 
				
			||||||
      "version": "2.0.1",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==",
 | 
					      "integrity": "sha512-S9h3GmOmzUseyeFW3tYNnWS7gNUuwxZ3mmMq0JyW78Vx1SGKPSkt5bT4pB0rUnVfHjP0EL9gW2bOzmtiTfQt0A==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {}
 | 
					      "requires": {}
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -17123,15 +17126,15 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "eslint": {
 | 
					    "eslint": {
 | 
				
			||||||
      "version": "8.38.0",
 | 
					      "version": "8.39.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
 | 
					      "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@eslint-community/eslint-utils": "^4.2.0",
 | 
					        "@eslint-community/eslint-utils": "^4.2.0",
 | 
				
			||||||
        "@eslint-community/regexpp": "^4.4.0",
 | 
					        "@eslint-community/regexpp": "^4.4.0",
 | 
				
			||||||
        "@eslint/eslintrc": "^2.0.2",
 | 
					        "@eslint/eslintrc": "^2.0.2",
 | 
				
			||||||
        "@eslint/js": "8.38.0",
 | 
					        "@eslint/js": "8.39.0",
 | 
				
			||||||
        "@humanwhocodes/config-array": "^0.11.8",
 | 
					        "@humanwhocodes/config-array": "^0.11.8",
 | 
				
			||||||
        "@humanwhocodes/module-importer": "^1.0.1",
 | 
					        "@humanwhocodes/module-importer": "^1.0.1",
 | 
				
			||||||
        "@nodelib/fs.walk": "^1.2.8",
 | 
					        "@nodelib/fs.walk": "^1.2.8",
 | 
				
			||||||
@@ -17141,7 +17144,7 @@
 | 
				
			|||||||
        "debug": "^4.3.2",
 | 
					        "debug": "^4.3.2",
 | 
				
			||||||
        "doctrine": "^3.0.0",
 | 
					        "doctrine": "^3.0.0",
 | 
				
			||||||
        "escape-string-regexp": "^4.0.0",
 | 
					        "escape-string-regexp": "^4.0.0",
 | 
				
			||||||
        "eslint-scope": "^7.1.1",
 | 
					        "eslint-scope": "^7.2.0",
 | 
				
			||||||
        "eslint-visitor-keys": "^3.4.0",
 | 
					        "eslint-visitor-keys": "^3.4.0",
 | 
				
			||||||
        "espree": "^9.5.1",
 | 
					        "espree": "^9.5.1",
 | 
				
			||||||
        "esquery": "^1.4.2",
 | 
					        "esquery": "^1.4.2",
 | 
				
			||||||
@@ -17177,9 +17180,9 @@
 | 
				
			|||||||
          "dev": true
 | 
					          "dev": true
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "eslint-scope": {
 | 
					        "eslint-scope": {
 | 
				
			||||||
          "version": "7.1.1",
 | 
					          "version": "7.2.0",
 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
 | 
				
			||||||
          "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
 | 
					          "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
 | 
				
			||||||
          "dev": true,
 | 
					          "dev": true,
 | 
				
			||||||
          "requires": {
 | 
					          "requires": {
 | 
				
			||||||
            "esrecurse": "^4.3.0",
 | 
					            "esrecurse": "^4.3.0",
 | 
				
			||||||
@@ -20911,9 +20914,9 @@
 | 
				
			|||||||
      "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA=="
 | 
					      "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "prettier": {
 | 
					    "prettier": {
 | 
				
			||||||
      "version": "2.8.7",
 | 
					      "version": "2.8.8",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
 | 
				
			||||||
      "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
 | 
					      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "prettier-linter-helpers": {
 | 
					    "prettier-linter-helpers": {
 | 
				
			||||||
@@ -22786,17 +22789,17 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "webpack-cli": {
 | 
					    "webpack-cli": {
 | 
				
			||||||
      "version": "5.0.1",
 | 
					      "version": "5.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==",
 | 
					      "integrity": "sha512-4y3W5Dawri5+8dXm3+diW6Mn1Ya+Dei6eEVAdIduAmYNLzv1koKVAqsfgrrc9P2mhrYHQphx5htnGkcNwtubyQ==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@discoveryjs/json-ext": "^0.5.0",
 | 
					        "@discoveryjs/json-ext": "^0.5.0",
 | 
				
			||||||
        "@webpack-cli/configtest": "^2.0.1",
 | 
					        "@webpack-cli/configtest": "^2.0.1",
 | 
				
			||||||
        "@webpack-cli/info": "^2.0.1",
 | 
					        "@webpack-cli/info": "^2.0.1",
 | 
				
			||||||
        "@webpack-cli/serve": "^2.0.1",
 | 
					        "@webpack-cli/serve": "^2.0.2",
 | 
				
			||||||
        "colorette": "^2.0.14",
 | 
					        "colorette": "^2.0.14",
 | 
				
			||||||
        "commander": "^9.4.1",
 | 
					        "commander": "^10.0.1",
 | 
				
			||||||
        "cross-spawn": "^7.0.3",
 | 
					        "cross-spawn": "^7.0.3",
 | 
				
			||||||
        "envinfo": "^7.7.3",
 | 
					        "envinfo": "^7.7.3",
 | 
				
			||||||
        "fastest-levenshtein": "^1.0.12",
 | 
					        "fastest-levenshtein": "^1.0.12",
 | 
				
			||||||
@@ -22807,9 +22810,9 @@
 | 
				
			|||||||
      },
 | 
					      },
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "commander": {
 | 
					        "commander": {
 | 
				
			||||||
          "version": "9.4.1",
 | 
					          "version": "10.0.1",
 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
 | 
				
			||||||
          "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==",
 | 
					          "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
 | 
				
			||||||
          "dev": true
 | 
					          "dev": true
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							@@ -101,24 +101,24 @@
 | 
				
			|||||||
    "electron-builder": "23.6.0",
 | 
					    "electron-builder": "23.6.0",
 | 
				
			||||||
    "electron-packager": "17.1.1",
 | 
					    "electron-packager": "17.1.1",
 | 
				
			||||||
    "electron-rebuild": "3.2.9",
 | 
					    "electron-rebuild": "3.2.9",
 | 
				
			||||||
    "eslint": "^8.38.0",
 | 
					    "eslint": "8.39.0",
 | 
				
			||||||
    "eslint-config-airbnb-base": "^15.0.0",
 | 
					    "eslint-config-airbnb-base": "^15.0.0",
 | 
				
			||||||
    "eslint-config-prettier": "^8.8.0",
 | 
					    "eslint-config-prettier": "^8.8.0",
 | 
				
			||||||
    "eslint-plugin-import": "^2.27.5",
 | 
					    "eslint-plugin-import": "^2.27.5",
 | 
				
			||||||
    "eslint-plugin-jsonc": "^2.7.0",
 | 
					    "eslint-plugin-jsonc": "^2.7.0",
 | 
				
			||||||
    "eslint-plugin-prettier": "^4.2.1",
 | 
					    "eslint-plugin-prettier": "^4.2.1",
 | 
				
			||||||
    "esm": "3.2.25",
 | 
					    "esm": "3.2.25",
 | 
				
			||||||
    "husky": "^8.0.3",
 | 
					    "husky": "8.0.3",
 | 
				
			||||||
    "jsonc-eslint-parser": "^2.2.0",
 | 
					    "jsonc-eslint-parser": "^2.2.0",
 | 
				
			||||||
    "lint-staged": "^13.2.1",
 | 
					    "lint-staged": "^13.2.1",
 | 
				
			||||||
    "jasmine": "4.6.0",
 | 
					    "jasmine": "4.6.0",
 | 
				
			||||||
    "jsdoc": "4.0.2",
 | 
					    "jsdoc": "4.0.2",
 | 
				
			||||||
    "lorem-ipsum": "2.0.8",
 | 
					    "lorem-ipsum": "2.0.8",
 | 
				
			||||||
    "prettier": "2.8.7",
 | 
					    "prettier": "2.8.8",
 | 
				
			||||||
    "nodemon": "^2.0.22",
 | 
					    "nodemon": "2.0.22",
 | 
				
			||||||
    "rcedit": "3.0.1",
 | 
					    "rcedit": "3.0.1",
 | 
				
			||||||
    "webpack": "5.80.0",
 | 
					    "webpack": "5.80.0",
 | 
				
			||||||
    "webpack-cli": "5.0.1"
 | 
					    "webpack-cli": "5.0.2"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "optionalDependencies": {
 | 
					  "optionalDependencies": {
 | 
				
			||||||
    "electron-installer-debian": "3.1.0"
 | 
					    "electron-installer-debian": "3.1.0"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ import ConsistencyChecksOptions from "./options/advanced/consistency_checks.js";
 | 
				
			|||||||
import VacuumDatabaseOptions from "./options/advanced/vacuum_database.js";
 | 
					import VacuumDatabaseOptions from "./options/advanced/vacuum_database.js";
 | 
				
			||||||
import DatabaseAnonymizationOptions from "./options/advanced/database_anonymization.js";
 | 
					import DatabaseAnonymizationOptions from "./options/advanced/database_anonymization.js";
 | 
				
			||||||
import BackendLogWidget from "./content/backend_log.js";
 | 
					import BackendLogWidget from "./content/backend_log.js";
 | 
				
			||||||
 | 
					import AttachmentErasureTimeoutOptions from "./options/other/attachment_erasure_timeout.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const TPL = `<div class="note-detail-content-widget note-detail-printable">
 | 
					const TPL = `<div class="note-detail-content-widget note-detail-printable">
 | 
				
			||||||
    <style>
 | 
					    <style>
 | 
				
			||||||
@@ -77,6 +78,7 @@ const CONTENT_WIDGETS = {
 | 
				
			|||||||
    _optionsOther: [
 | 
					    _optionsOther: [
 | 
				
			||||||
        TrayOptions,
 | 
					        TrayOptions,
 | 
				
			||||||
        NoteErasureTimeoutOptions,
 | 
					        NoteErasureTimeoutOptions,
 | 
				
			||||||
 | 
					        AttachmentErasureTimeoutOptions,
 | 
				
			||||||
        NoteRevisionsSnapshotIntervalOptions,
 | 
					        NoteRevisionsSnapshotIntervalOptions,
 | 
				
			||||||
        NetworkConnectionsOptions
 | 
					        NetworkConnectionsOptions
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					import OptionsWidget from "../options_widget.js";
 | 
				
			||||||
 | 
					import server from "../../../../services/server.js";
 | 
				
			||||||
 | 
					import toastService from "../../../../services/toast.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const TPL = `
 | 
				
			||||||
 | 
					<div class="options-section">
 | 
				
			||||||
 | 
					    <h4>Attachment erasure timeout</h4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p>Attachment images get automatically deleted (and erased) if they are not referenced by their note anymore after a defined time out.</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div class="form-group">
 | 
				
			||||||
 | 
					        <label>Erase image attachments after X seconds of not being used in its note</label>
 | 
				
			||||||
 | 
					        <input class="erase-unused-attachments-after-time-in-seconds form-control" type="number" min="0">
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <p>You can also trigger erasing manually (without considering the timeout defined above):</p>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <button class="erase-unused-attachments-now-button btn">Erase unused attachment notes now</button>
 | 
				
			||||||
 | 
					</div>`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class AttachmentErasureTimeoutOptions extends OptionsWidget {
 | 
				
			||||||
 | 
					    doRender() {
 | 
				
			||||||
 | 
					        this.$widget = $(TPL);
 | 
				
			||||||
 | 
					        this.$eraseUnusedAttachmentsAfterTimeInSeconds = this.$widget.find(".erase-unused-attachments-after-time-in-seconds");
 | 
				
			||||||
 | 
					        this.$eraseUnusedAttachmentsAfterTimeInSeconds.on('change', () => this.updateOption('eraseUnusedImageAttachmentsAfterSeconds', this.$eraseUnusedAttachmentsAfterTimeInSeconds.val()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.$eraseDeletedNotesButton = this.$widget.find(".erase-unused-attachments-now-button");
 | 
				
			||||||
 | 
					        this.$eraseDeletedNotesButton.on('click', () => {
 | 
				
			||||||
 | 
					            server.post('notes/erase-unused-attachments-now').then(() => {
 | 
				
			||||||
 | 
					                toastService.showMessage("Unused image attachments have been erased.");
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async optionsLoaded(options) {
 | 
				
			||||||
 | 
					        this.$eraseUnusedAttachmentsAfterTimeInSeconds.val(options.eraseUnusedImageAttachmentsAfterSeconds);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -16,7 +16,7 @@ const TPL = `
 | 
				
			|||||||
        <input class="erase-entities-after-time-in-seconds form-control" type="number" min="0">
 | 
					        <input class="erase-entities-after-time-in-seconds form-control" type="number" min="0">
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    <p>You can also trigger erasing manually:</p>
 | 
					    <p>You can also trigger erasing manually (without considering the timeout defined above):</p>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    <button class="erase-deleted-notes-now-button btn">Erase deleted notes now</button>
 | 
					    <button class="erase-deleted-notes-now-button btn">Erase deleted notes now</button>
 | 
				
			||||||
</div>`;
 | 
					</div>`;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -982,7 +982,7 @@ button.close:hover {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.options-section h4 {
 | 
					.options-section h4 {
 | 
				
			||||||
    margin-top: 15px;
 | 
					    margin-top: 25px;
 | 
				
			||||||
    margin-bottom: 15px;
 | 
					    margin-bottom: 15px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -168,6 +168,10 @@ function eraseDeletedNotesNow() {
 | 
				
			|||||||
    noteService.eraseDeletedNotesNow();
 | 
					    noteService.eraseDeletedNotesNow();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function eraseUnusedAttachmentsNow() {
 | 
				
			||||||
 | 
					    noteService.eraseUnusedAttachmentsNow();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getDeleteNotesPreview(req) {
 | 
					function getDeleteNotesPreview(req) {
 | 
				
			||||||
    const {branchIdsToDelete, deleteAllClones} = req.body;
 | 
					    const {branchIdsToDelete, deleteAllClones} = req.body;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -275,6 +279,7 @@ module.exports = {
 | 
				
			|||||||
    changeTitle,
 | 
					    changeTitle,
 | 
				
			||||||
    duplicateSubtree,
 | 
					    duplicateSubtree,
 | 
				
			||||||
    eraseDeletedNotesNow,
 | 
					    eraseDeletedNotesNow,
 | 
				
			||||||
 | 
					    eraseUnusedAttachmentsNow,
 | 
				
			||||||
    getDeleteNotesPreview,
 | 
					    getDeleteNotesPreview,
 | 
				
			||||||
    uploadModifiedFile,
 | 
					    uploadModifiedFile,
 | 
				
			||||||
    forceSaveNoteRevision
 | 
					    forceSaveNoteRevision
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -293,6 +293,7 @@ function register(app) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    apiRoute(PST, '/api/relation-map', relationMapApiRoute.getRelationMap);
 | 
					    apiRoute(PST, '/api/relation-map', relationMapApiRoute.getRelationMap);
 | 
				
			||||||
    apiRoute(PST, '/api/notes/erase-deleted-notes-now', notesApiRoute.eraseDeletedNotesNow);
 | 
					    apiRoute(PST, '/api/notes/erase-deleted-notes-now', notesApiRoute.eraseDeletedNotesNow);
 | 
				
			||||||
 | 
					    apiRoute(PST, '/api/notes/erase-unused-attachments-now', notesApiRoute.eraseUnusedAttachmentsNow);
 | 
				
			||||||
    apiRoute(GET, '/api/similar-notes/:noteId', similarNotesRoute.getSimilarNotes);
 | 
					    apiRoute(GET, '/api/similar-notes/:noteId', similarNotesRoute.getSimilarNotes);
 | 
				
			||||||
    apiRoute(GET, '/api/backend-log', backendLogRoute.getBackendLog);
 | 
					    apiRoute(GET, '/api/backend-log', backendLogRoute.getBackendLog);
 | 
				
			||||||
    apiRoute(GET, '/api/stats/note-size/:noteId', statsRoute.getNoteSize);
 | 
					    apiRoute(GET, '/api/stats/note-size/:noteId', statsRoute.getNoteSize);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -899,23 +899,33 @@ function eraseDeletedEntities(eraseEntitiesAfterTimeInSeconds = null) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function eraseNotesWithDeleteId(deleteId) {
 | 
					function eraseNotesWithDeleteId(deleteId) {
 | 
				
			||||||
    const noteIdsToErase = sql.getColumn("SELECT noteId FROM notes WHERE deleteId = ?", [deleteId]);
 | 
					    const noteIdsToErase = sql.getColumn("SELECT noteId FROM notes WHERE isDeleted = 1 AND deleteId = ?", [deleteId]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eraseNotes(noteIdsToErase);
 | 
					    eraseNotes(noteIdsToErase);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const branchIdsToErase = sql.getColumn("SELECT branchId FROM branches WHERE deleteId = ?", [deleteId]);
 | 
					    const branchIdsToErase = sql.getColumn("SELECT branchId FROM branches WHERE isDeleted = 1 AND deleteId = ?", [deleteId]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eraseBranches(branchIdsToErase);
 | 
					    eraseBranches(branchIdsToErase);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const attributeIdsToErase = sql.getColumn("SELECT attributeId FROM attributes WHERE  deleteId = ?", [deleteId]);
 | 
					    const attributeIdsToErase = sql.getColumn("SELECT attributeId FROM attributes WHERE isDeleted = 1 AND deleteId = ?", [deleteId]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eraseAttributes(attributeIdsToErase);
 | 
					    eraseAttributes(attributeIdsToErase);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const attachmentIdsToErase = sql.getColumn("SELECT attachmentId FROM attachments WHERE isDeleted = 1 AND deleteId = ?", [deleteId]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    eraseAttachments(attachmentIdsToErase);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    eraseUnusedBlobs();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function eraseDeletedNotesNow() {
 | 
					function eraseDeletedNotesNow() {
 | 
				
			||||||
    eraseDeletedEntities(0);
 | 
					    eraseDeletedEntities(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function eraseUnusedAttachmentsNow() {
 | 
				
			||||||
 | 
					    eraseScheduledAttachments(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// do a replace in str - all keys should be replaced by the corresponding values
 | 
					// do a replace in str - all keys should be replaced by the corresponding values
 | 
				
			||||||
function replaceByMap(str, mapObj) {
 | 
					function replaceByMap(str, mapObj) {
 | 
				
			||||||
    const re = new RegExp(Object.keys(mapObj).join("|"),"g");
 | 
					    const re = new RegExp(Object.keys(mapObj).join("|"),"g");
 | 
				
			||||||
@@ -962,7 +972,7 @@ function duplicateSubtreeWithoutRoot(origNoteId, newNoteId) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function duplicateSubtreeInner(origNote, origBranch, newParentNoteId, noteIdMapping) {
 | 
					function duplicateSubtreeInner(origNote, origBranch, newParentNoteId, noteIdMapping) {
 | 
				
			||||||
    if (origNote.isProtected && !protectedSessionService.isProtectedSessionAvailable()) {
 | 
					    if (origNote.isProtected && !protectedSessionService.isProtectedSessionAvailable()) {
 | 
				
			||||||
        throw new Error(`Cannot duplicate note=${origNote.noteId} because it is protected and protected session is not available. Enter protected session and try again.`);
 | 
					        throw new Error(`Cannot duplicate note '${origNote.noteId}' because it is protected and protected session is not available. Enter protected session and try again.`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const newNoteId = noteIdMapping[origNote.noteId];
 | 
					    const newNoteId = noteIdMapping[origNote.noteId];
 | 
				
			||||||
@@ -1047,9 +1057,12 @@ function getNoteIdMapping(origNote) {
 | 
				
			|||||||
    return noteIdMapping;
 | 
					    return noteIdMapping;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function eraseScheduledAttachments() {
 | 
					function eraseScheduledAttachments(eraseUnusedImageAttachmentsAfterSeconds = null) {
 | 
				
			||||||
    const eraseIntervalSeconds = optionService.getOptionInt('eraseUnusedImageAttachmentsAfterSeconds');
 | 
					    if (eraseUnusedImageAttachmentsAfterSeconds === null) {
 | 
				
			||||||
    const cutOffDate = dateUtils.utcDateTimeStr(new Date(Date.now() - (eraseIntervalSeconds * 1000)));
 | 
					        eraseUnusedImageAttachmentsAfterSeconds = optionService.getOptionInt('eraseUnusedImageAttachmentsAfterSeconds');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cutOffDate = dateUtils.utcDateTimeStr(new Date(Date.now() - (eraseUnusedImageAttachmentsAfterSeconds * 1000)));
 | 
				
			||||||
    const attachmentIdsToErase = sql.getColumn('SELECT attachmentId FROM attachments WHERE utcDateScheduledForErasureSince < ?', [cutOffDate]);
 | 
					    const attachmentIdsToErase = sql.getColumn('SELECT attachmentId FROM attachments WHERE utcDateScheduledForErasureSince < ?', [cutOffDate]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    eraseAttachments(attachmentIdsToErase);
 | 
					    eraseAttachments(attachmentIdsToErase);
 | 
				
			||||||
@@ -1075,6 +1088,7 @@ module.exports = {
 | 
				
			|||||||
    getUndeletedParentBranchIds,
 | 
					    getUndeletedParentBranchIds,
 | 
				
			||||||
    triggerNoteTitleChanged,
 | 
					    triggerNoteTitleChanged,
 | 
				
			||||||
    eraseDeletedNotesNow,
 | 
					    eraseDeletedNotesNow,
 | 
				
			||||||
 | 
					    eraseUnusedAttachmentsNow,
 | 
				
			||||||
    eraseNotesWithDeleteId,
 | 
					    eraseNotesWithDeleteId,
 | 
				
			||||||
    saveNoteRevisionIfNeeded,
 | 
					    saveNoteRevisionIfNeeded,
 | 
				
			||||||
    downloadImages,
 | 
					    downloadImages,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user