From 3fff58353c76cf867daf99618e5cd7469a82a1b1 Mon Sep 17 00:00:00 2001 From: Anuj Koli Date: Sun, 5 Dec 2021 11:13:01 -0500 Subject: [PATCH 01/30] Fixed issue with Csv parser parse (#1904) --- app/scripts/util/data/csv-parser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scripts/util/data/csv-parser.js b/app/scripts/util/data/csv-parser.js index df870ea5..e553bc05 100644 --- a/app/scripts/util/data/csv-parser.js +++ b/app/scripts/util/data/csv-parser.js @@ -12,7 +12,7 @@ class CsvParser { this.result = []; this.next = this.handleBeforeValue; this.index = 0; - while (this.next && this.index < this.csv.length) { + while (this.next && this.index <= this.csv.length) { this.next = this.next(this); } if (this.lines.length <= 1) { From e6df216291b9b5322049a11fe1301a2089679483 Mon Sep 17 00:00:00 2001 From: Dimitri Witkowski Date: Thu, 9 Jun 2022 20:16:26 +0200 Subject: [PATCH 02/30] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 93e055f1..5821cdb6 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,8 @@ Donate: [OpenCollective](https://opencollective.com/keeweb#support), [GitHub](ht ## Status -The app is quite stable now. Basic stuff, as well as more advanced operations, should be rather reliable. +The app is quite stable now. Basic stuff, as well as more advanced operations, should be rather reliable. +Looking for a new maintainer, see [#2022](https://github.com/keeweb/keeweb/issues/2022) ## Self-hosting From 62b3458187a063c872c184d3842d7298b93f026c Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Tue, 20 Sep 2022 21:41:08 -0400 Subject: [PATCH 03/30] Bump electron to 13 --- package-lock.json | 699 ++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 342 insertions(+), 359 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed0d4e4b..d0cb735b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "requires": true, "packages": { "": { - "version": "1.18.5", + "version": "1.18.7", "license": "MIT", "dependencies": { "@babel/core": "^7.14.0", @@ -30,7 +30,7 @@ "cross-env": "^7.0.3", "css-loader": "^5.2.4", "dompurify": "^2.2.8", - "electron": "^12.0.7", + "electron": "^13.6.9", "electron-builder": "^22.11.1", "electron-evil-feature-patcher": "^1.2.1", "electron-notarize": "^1.0.0", @@ -1347,23 +1347,23 @@ } }, "node_modules/@electron/get": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", - "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "got": "^9.6.0", "progress": "^2.0.3", - "sanitize-filename": "^1.6.2", + "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "engines": { "node": ">=8.6" }, "optionalDependencies": { - "global-agent": "^2.0.2", + "global-agent": "^3.0.0", "global-tunnel-ng": "^2.7.1" } }, @@ -1380,6 +1380,14 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@electron/universal": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.4.tgz", @@ -1750,9 +1758,9 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "node_modules/@types/node": { - "version": "14.14.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", - "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==" + "version": "16.11.59", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", + "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -3523,9 +3531,9 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "node_modules/boolean": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz", - "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "optional": true }, "node_modules/bourbon": { @@ -5903,9 +5911,9 @@ } }, "node_modules/electron": { - "version": "12.0.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-12.0.7.tgz", - "integrity": "sha512-722TZNKDuLpEmj96AzTYFKHaJEH98xgOBH0aldStaPXI1xDFfb9SJQQuirvwFlkwG5OqQdz6Ne3OwwJ7Dbs5nQ==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.6.9.tgz", + "integrity": "sha512-Es/sBy85NIuqsO9MW41PUCpwIkeinlTQ7g0ainfnmRAM2rmog3GBxVCaoV5dzEjwTF7TKG1Yr/E7Z3qHmlfWAg==", "hasInstallScript": true, "dependencies": { "@electron/get": "^1.0.1", @@ -6207,25 +6215,6 @@ "ms": "2.0.0" } }, - "node_modules/electron-packager/node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/electron-packager/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -6240,17 +6229,6 @@ "node": ">=10" } }, - "node_modules/electron-packager/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/electron-packager/node_modules/isbinaryfile": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", @@ -6413,6 +6391,38 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.723.tgz", "integrity": "sha512-L+WXyXI7c7+G1V8ANzRsPI5giiimLAUDC6Zs1ojHHPhYXb3k/iTABFmWjivEtsWrRQymjnO66/rO2ZTABGdmWg==" }, + "node_modules/electron/node_modules/@types/node": { + "version": "14.18.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.29.tgz", + "integrity": "sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==" + }, + "node_modules/electron/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/electron/node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/electron/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, "node_modules/emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -7525,32 +7535,38 @@ } }, "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "bin": { "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { - "ms": "2.0.0" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/extsprintf": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", @@ -8145,30 +8161,30 @@ }, "node_modules/fsevents/node_modules/abbrev": { "version": "1.1.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/ansi-regex": { "version": "2.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/aproba": { "version": "1.2.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/are-we-there-yet": { "version": "1.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -8176,15 +8192,15 @@ }, "node_modules/fsevents/node_modules/balanced-match": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8192,66 +8208,66 @@ }, "node_modules/fsevents/node_modules/chownr": { "version": "1.1.3", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/code-point-at": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/concat-map": { "version": "0.0.1", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/console-control-strings": { "version": "1.1.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/core-util-is": { "version": "1.0.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/debug": { "version": "3.2.6", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/fsevents/node_modules/deep-extend": { "version": "0.6.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=4.0.0" } }, "node_modules/fsevents/node_modules/delegates": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/detect-libc": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", + "optional": true, "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -8261,24 +8277,24 @@ }, "node_modules/fsevents/node_modules/fs-minipass": { "version": "1.2.7", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "minipass": "^2.6.0" } }, "node_modules/fsevents/node_modules/fs.realpath": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/gauge": { "version": "2.7.4", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -8292,9 +8308,9 @@ }, "node_modules/fsevents/node_modules/glob": { "version": "7.1.6", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8312,15 +8328,15 @@ }, "node_modules/fsevents/node_modules/has-unicode": { "version": "2.0.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/iconv-lite": { "version": "0.4.24", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8330,18 +8346,18 @@ }, "node_modules/fsevents/node_modules/ignore-walk": { "version": "3.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "minimatch": "^3.0.4" } }, "node_modules/fsevents/node_modules/inflight": { "version": "1.0.6", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8349,24 +8365,24 @@ }, "node_modules/fsevents/node_modules/inherits": { "version": "2.0.4", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/ini": { "version": "1.3.5", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "engines": { "node": "*" } }, "node_modules/fsevents/node_modules/is-fullwidth-code-point": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "number-is-nan": "^1.0.0" }, @@ -8376,15 +8392,15 @@ }, "node_modules/fsevents/node_modules/isarray": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/minimatch": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8394,15 +8410,15 @@ }, "node_modules/fsevents/node_modules/minimist": { "version": "0.0.8", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/minipass": { "version": "2.9.0", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -8410,18 +8426,18 @@ }, "node_modules/fsevents/node_modules/minizlib": { "version": "1.3.3", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "minipass": "^2.9.0" } }, "node_modules/fsevents/node_modules/mkdirp": { "version": "0.5.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "minimist": "0.0.8" }, @@ -8431,15 +8447,15 @@ }, "node_modules/fsevents/node_modules/ms": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/needle": { "version": "2.4.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -8454,9 +8470,9 @@ }, "node_modules/fsevents/node_modules/node-pre-gyp": { "version": "0.14.0", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", + "optional": true, "dependencies": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -8475,9 +8491,9 @@ }, "node_modules/fsevents/node_modules/nopt": { "version": "4.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "abbrev": "1", "osenv": "^0.1.4" @@ -8488,24 +8504,24 @@ }, "node_modules/fsevents/node_modules/npm-bundled": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/fsevents/node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/npm-packlist": { "version": "1.4.7", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -8513,9 +8529,9 @@ }, "node_modules/fsevents/node_modules/npmlog": { "version": "4.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -8525,54 +8541,54 @@ }, "node_modules/fsevents/node_modules/number-is-nan": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/object-assign": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/once": { "version": "1.4.0", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "wrappy": "1" } }, "node_modules/fsevents/node_modules/os-homedir": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/os-tmpdir": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/osenv": { "version": "0.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -8580,24 +8596,24 @@ }, "node_modules/fsevents/node_modules/path-is-absolute": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/process-nextick-args": { "version": "2.0.1", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/rc": { "version": "1.2.8", - "extraneous": true, "inBundle": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8610,15 +8626,15 @@ }, "node_modules/fsevents/node_modules/rc/node_modules/minimist": { "version": "1.2.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/readable-stream": { "version": "2.3.6", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8631,9 +8647,9 @@ }, "node_modules/fsevents/node_modules/rimraf": { "version": "2.7.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "glob": "^7.1.3" }, @@ -8643,57 +8659,57 @@ }, "node_modules/fsevents/node_modules/safe-buffer": { "version": "5.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/safer-buffer": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/sax": { "version": "1.2.4", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/semver": { "version": "5.7.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "bin": { "semver": "bin/semver" } }, "node_modules/fsevents/node_modules/set-blocking": { "version": "2.0.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/signal-exit": { "version": "3.0.2", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/string_decoder": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/fsevents/node_modules/string-width": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -8705,9 +8721,9 @@ }, "node_modules/fsevents/node_modules/strip-ansi": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "ansi-regex": "^2.0.0" }, @@ -8717,18 +8733,18 @@ }, "node_modules/fsevents/node_modules/strip-json-comments": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/tar": { "version": "4.4.13", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -8744,30 +8760,30 @@ }, "node_modules/fsevents/node_modules/util-deprecate": { "version": "1.0.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/wide-align": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "string-width": "^1.0.2 || 2" } }, "node_modules/fsevents/node_modules/wrappy": { "version": "1.0.2", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/yallist": { "version": "3.1.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/function-bind": { "version": "1.1.1", @@ -9102,13 +9118,12 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global-agent": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", - "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", "optional": true, "dependencies": { "boolean": "^3.0.1", - "core-js": "^3.6.5", "es6-error": "^4.1.1", "matcher": "^3.0.0", "roarr": "^2.15.3", @@ -9119,17 +9134,14 @@ "node": ">=10.0" } }, - "node_modules/global-agent/node_modules/core-js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", - "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==", - "optional": true - }, "node_modules/global-agent/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -9222,15 +9234,18 @@ } }, "node_modules/globalthis": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", - "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "optional": true, "dependencies": { "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/globby": { @@ -11636,7 +11651,7 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "optional": true }, "node_modules/json3": { @@ -12306,6 +12321,9 @@ "optional": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/math-random": { @@ -15654,25 +15672,6 @@ "node": ">=10.18.1" } }, - "node_modules/puppeteer/node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/puppeteer/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -15685,17 +15684,6 @@ "node": ">=8" } }, - "node_modules/puppeteer/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/puppeteer/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -17055,7 +17043,7 @@ "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "optional": true }, "node_modules/semver-diff": { @@ -17139,6 +17127,9 @@ }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/serialize-error/node_modules/type-fest": { @@ -17148,6 +17139,9 @@ "optional": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/serialize-javascript": { @@ -18773,7 +18767,7 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", @@ -21713,18 +21707,18 @@ } }, "@electron/get": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", - "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", "requires": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", - "global-agent": "^2.0.2", + "global-agent": "^3.0.0", "global-tunnel-ng": "^2.7.1", "got": "^9.6.0", "progress": "^2.0.3", - "sanitize-filename": "^1.6.2", + "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "dependencies": { @@ -21737,6 +21731,11 @@ "jsonfile": "^4.0.0", "universalify": "^0.1.0" } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -22036,9 +22035,9 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "14.14.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", - "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==" + "version": "16.11.59", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz", + "integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw==" }, "@types/parse-json": { "version": "4.0.0", @@ -23503,9 +23502,9 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "boolean": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz", - "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "optional": true }, "bourbon": { @@ -25374,13 +25373,44 @@ } }, "electron": { - "version": "12.0.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-12.0.7.tgz", - "integrity": "sha512-722TZNKDuLpEmj96AzTYFKHaJEH98xgOBH0aldStaPXI1xDFfb9SJQQuirvwFlkwG5OqQdz6Ne3OwwJ7Dbs5nQ==", + "version": "13.6.9", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.6.9.tgz", + "integrity": "sha512-Es/sBy85NIuqsO9MW41PUCpwIkeinlTQ7g0ainfnmRAM2rmog3GBxVCaoV5dzEjwTF7TKG1Yr/E7Z3qHmlfWAg==", "requires": { "@electron/get": "^1.0.1", "@types/node": "^14.6.2", "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "14.18.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.29.tgz", + "integrity": "sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } } }, "electron-builder": { @@ -25609,17 +25639,6 @@ } } }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -25631,14 +25650,6 @@ "universalify": "^2.0.0" } }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, "isbinaryfile": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", @@ -26617,28 +26628,23 @@ } }, "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "ms": "2.0.0" + "pump": "^3.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -27062,22 +27068,22 @@ "abbrev": { "version": "1.1.1", "bundled": true, - "extraneous": true + "optional": true }, "ansi-regex": { "version": "2.1.1", "bundled": true, - "extraneous": true + "optional": true }, "aproba": { "version": "1.2.0", "bundled": true, - "extraneous": true + "optional": true }, "are-we-there-yet": { "version": "1.1.5", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -27086,12 +27092,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -27100,32 +27106,32 @@ "chownr": { "version": "1.1.3", "bundled": true, - "extraneous": true + "optional": true }, "code-point-at": { "version": "1.1.0", "bundled": true, - "extraneous": true + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "extraneous": true + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "extraneous": true + "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "debug": { "version": "3.2.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "ms": "^2.1.1" } @@ -27133,22 +27139,22 @@ "deep-extend": { "version": "0.6.0", "bundled": true, - "extraneous": true + "optional": true }, "delegates": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "detect-libc": { "version": "1.0.3", "bundled": true, - "extraneous": true + "optional": true }, "fs-minipass": { "version": "1.2.7", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minipass": "^2.6.0" } @@ -27156,12 +27162,12 @@ "fs.realpath": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "gauge": { "version": "2.7.4", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -27176,7 +27182,7 @@ "glob": { "version": "7.1.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -27189,12 +27195,12 @@ "has-unicode": { "version": "2.0.1", "bundled": true, - "extraneous": true + "optional": true }, "iconv-lite": { "version": "0.4.24", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -27202,7 +27208,7 @@ "ignore-walk": { "version": "3.0.3", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minimatch": "^3.0.4" } @@ -27210,7 +27216,7 @@ "inflight": { "version": "1.0.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -27219,17 +27225,17 @@ "inherits": { "version": "2.0.4", "bundled": true, - "extraneous": true + "optional": true }, "ini": { "version": "1.3.5", "bundled": true, - "extraneous": true + "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -27237,12 +27243,12 @@ "isarray": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "minimatch": { "version": "3.0.4", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -27250,12 +27256,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "extraneous": true + "optional": true }, "minipass": { "version": "2.9.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -27264,7 +27270,7 @@ "minizlib": { "version": "1.3.3", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minipass": "^2.9.0" } @@ -27272,7 +27278,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -27280,12 +27286,12 @@ "ms": { "version": "2.1.2", "bundled": true, - "extraneous": true + "optional": true }, "needle": { "version": "2.4.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -27295,7 +27301,7 @@ "node-pre-gyp": { "version": "0.14.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -27312,7 +27318,7 @@ "nopt": { "version": "4.0.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -27321,7 +27327,7 @@ "npm-bundled": { "version": "1.1.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "npm-normalize-package-bin": "^1.0.1" } @@ -27329,12 +27335,12 @@ "npm-normalize-package-bin": { "version": "1.0.1", "bundled": true, - "extraneous": true + "optional": true }, "npm-packlist": { "version": "1.4.7", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -27343,7 +27349,7 @@ "npmlog": { "version": "4.1.2", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -27354,17 +27360,17 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "extraneous": true + "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, - "extraneous": true + "optional": true }, "once": { "version": "1.4.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "wrappy": "1" } @@ -27372,17 +27378,17 @@ "os-homedir": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "osenv": { "version": "0.1.5", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -27391,17 +27397,17 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "extraneous": true + "optional": true }, "process-nextick-args": { "version": "2.0.1", "bundled": true, - "extraneous": true + "optional": true }, "rc": { "version": "1.2.8", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -27412,14 +27418,14 @@ "minimist": { "version": "1.2.0", "bundled": true, - "extraneous": true + "optional": true } } }, "readable-stream": { "version": "2.3.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -27433,7 +27439,7 @@ "rimraf": { "version": "2.7.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "glob": "^7.1.3" } @@ -27441,37 +27447,37 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "extraneous": true + "optional": true }, "safer-buffer": { "version": "2.1.2", "bundled": true, - "extraneous": true + "optional": true }, "sax": { "version": "1.2.4", "bundled": true, - "extraneous": true + "optional": true }, "semver": { "version": "5.7.1", "bundled": true, - "extraneous": true + "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, - "extraneous": true + "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, - "extraneous": true + "optional": true }, "string_decoder": { "version": "1.1.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "safe-buffer": "~5.1.0" } @@ -27479,7 +27485,7 @@ "string-width": { "version": "1.0.2", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -27489,7 +27495,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -27497,12 +27503,12 @@ "strip-json-comments": { "version": "2.0.1", "bundled": true, - "extraneous": true + "optional": true }, "tar": { "version": "4.4.13", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -27516,12 +27522,12 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "wide-align": { "version": "1.1.3", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -27529,12 +27535,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "yallist": { "version": "3.1.1", "bundled": true, - "extraneous": true + "optional": true } } }, @@ -27821,13 +27827,12 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "global-agent": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", - "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", "optional": true, "requires": { "boolean": "^3.0.1", - "core-js": "^3.6.5", "es6-error": "^4.1.1", "matcher": "^3.0.0", "roarr": "^2.15.3", @@ -27835,17 +27840,14 @@ "serialize-error": "^7.0.1" }, "dependencies": { - "core-js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", - "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==", - "optional": true - }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "optional": true + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -27914,9 +27916,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", - "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "optional": true, "requires": { "define-properties": "^1.1.3" @@ -29787,7 +29789,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "optional": true }, "json3": { @@ -32917,17 +32919,6 @@ "ws": "^7.2.3" }, "dependencies": { - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -32937,14 +32928,6 @@ "path-exists": "^4.0.0" } }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -33998,7 +33981,7 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "optional": true }, "semver-diff": { @@ -35425,7 +35408,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "typedarray-to-buffer": { "version": "3.1.5", diff --git a/package.json b/package.json index bd7cb56c..c0d78827 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "cross-env": "^7.0.3", "css-loader": "^5.2.4", "dompurify": "^2.2.8", - "electron": "^12.0.7", + "electron": "^13.6.9", "electron-builder": "^22.11.1", "electron-evil-feature-patcher": "^1.2.1", "electron-notarize": "^1.0.0", From 2aa6e05b53c6ccafb1801b4d982041b19536959b Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 4 Apr 2024 12:39:31 -0700 Subject: [PATCH 04/30] fix: modify puppeteer arguments to fix test builds for ci keeweb/keeweb#2142 ref: keeweb/keeweb#2142 --- build/tasks/grunt-run-test.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/build/tasks/grunt-run-test.js b/build/tasks/grunt-run-test.js index 9605d902..39599c45 100644 --- a/build/tasks/grunt-run-test.js +++ b/build/tasks/grunt-run-test.js @@ -3,21 +3,22 @@ module.exports = function (grunt) { const done = this.async(); const opt = this.options(); const file = this.files[0].src[0]; - const path = require('path'); const puppeteer = require('puppeteer'); - (async function () { grunt.log.writeln('Running tests...'); const fullPath = 'file://' + path.resolve(file); const browser = await puppeteer.launch({ - headless: opt.headless + headless: opt.headless, + executablePath: process.env.CHROME_BIN || null, + args: ['--disable-dev-shm-usage'] }); + grunt.log.writeln('puppeteer launched...'); const page = await browser.newPage(); await page.goto(fullPath); - + async function check() { const result = await page.evaluate(() => { const { output, done } = window; From ae4bce3a113fc97ba599b3428455c445b1de0a66 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 4 Apr 2024 13:10:00 -0700 Subject: [PATCH 05/30] ci: update verify --- .github/workflows/verify.yml | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/verify.yml diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml new file mode 100644 index 00000000..cf87de1f --- /dev/null +++ b/.github/workflows/verify.yml @@ -0,0 +1,44 @@ +name: Verify +on: + push: + pull_request: + workflow_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + + - name: "Lint › Checkout" + uses: actions/checkout@v3 + + - name: "Lint › Setup NodeJS" + uses: actions/setup-node@v3 + with: + node-version: '16' + + - name: "Lint › Install NPM Modules" + run: npm ci + + - name: "Lint › Run" + run: npm run lint + + test: + needs: + - lint + runs-on: ubuntu-latest + steps: + + - name: "Test › Checkout" + uses: actions/checkout@v3 + + - name: "Test › Setup NodeJS" + uses: actions/setup-node@v3 + with: + node-version: '16' + + - name: "Test › Install NPM Modules" + run: npm ci + + - name: "Test › Run" + run: npm test \ No newline at end of file From 1499fd789bffe64df9024f2b240da8d80778e992 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 4 Apr 2024 13:16:56 -0700 Subject: [PATCH 06/30] dep: update packages --- package-lock.json | 639 +++++++++++++++++++++++++++++++--------------- package.json | 3 +- 2 files changed, 436 insertions(+), 206 deletions(-) diff --git a/package-lock.json b/package-lock.json index c51b74db..968ce01c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,12 @@ { "name": "keeweb", - "version": "1.18.6", + "version": "1.18.7", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.18.5", + "name": "keeweb", + "version": "1.18.7", "license": "MIT", "dependencies": { "@babel/core": "^7.14.0", @@ -4038,12 +4039,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5423,15 +5430,36 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==" }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "object-keys": "^1.0.12" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-property": { @@ -6550,11 +6578,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==" }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -8145,30 +8203,30 @@ }, "node_modules/fsevents/node_modules/abbrev": { "version": "1.1.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/ansi-regex": { "version": "2.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/aproba": { "version": "1.2.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/are-we-there-yet": { "version": "1.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -8176,15 +8234,15 @@ }, "node_modules/fsevents/node_modules/balanced-match": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8192,66 +8250,66 @@ }, "node_modules/fsevents/node_modules/chownr": { "version": "1.1.3", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/code-point-at": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/concat-map": { "version": "0.0.1", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/console-control-strings": { "version": "1.1.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/core-util-is": { "version": "1.0.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/debug": { "version": "3.2.6", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/fsevents/node_modules/deep-extend": { "version": "0.6.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=4.0.0" } }, "node_modules/fsevents/node_modules/delegates": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/detect-libc": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", + "optional": true, "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -8261,24 +8319,24 @@ }, "node_modules/fsevents/node_modules/fs-minipass": { "version": "1.2.7", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "minipass": "^2.6.0" } }, "node_modules/fsevents/node_modules/fs.realpath": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/gauge": { "version": "2.7.4", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -8292,9 +8350,9 @@ }, "node_modules/fsevents/node_modules/glob": { "version": "7.1.6", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8312,15 +8370,15 @@ }, "node_modules/fsevents/node_modules/has-unicode": { "version": "2.0.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/iconv-lite": { "version": "0.4.24", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8330,18 +8388,18 @@ }, "node_modules/fsevents/node_modules/ignore-walk": { "version": "3.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "minimatch": "^3.0.4" } }, "node_modules/fsevents/node_modules/inflight": { "version": "1.0.6", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -8349,24 +8407,24 @@ }, "node_modules/fsevents/node_modules/inherits": { "version": "2.0.4", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/ini": { "version": "1.3.5", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "engines": { "node": "*" } }, "node_modules/fsevents/node_modules/is-fullwidth-code-point": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "number-is-nan": "^1.0.0" }, @@ -8376,15 +8434,15 @@ }, "node_modules/fsevents/node_modules/isarray": { "version": "1.0.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/minimatch": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8394,15 +8452,15 @@ }, "node_modules/fsevents/node_modules/minimist": { "version": "0.0.8", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/minipass": { "version": "2.9.0", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -8410,18 +8468,18 @@ }, "node_modules/fsevents/node_modules/minizlib": { "version": "1.3.3", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "minipass": "^2.9.0" } }, "node_modules/fsevents/node_modules/mkdirp": { "version": "0.5.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "minimist": "0.0.8" }, @@ -8431,15 +8489,15 @@ }, "node_modules/fsevents/node_modules/ms": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/needle": { "version": "2.4.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -8454,9 +8512,9 @@ }, "node_modules/fsevents/node_modules/node-pre-gyp": { "version": "0.14.0", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", + "optional": true, "dependencies": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -8475,9 +8533,9 @@ }, "node_modules/fsevents/node_modules/nopt": { "version": "4.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "abbrev": "1", "osenv": "^0.1.4" @@ -8488,24 +8546,24 @@ }, "node_modules/fsevents/node_modules/npm-bundled": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/fsevents/node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/npm-packlist": { "version": "1.4.7", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -8513,9 +8571,9 @@ }, "node_modules/fsevents/node_modules/npmlog": { "version": "4.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -8525,54 +8583,54 @@ }, "node_modules/fsevents/node_modules/number-is-nan": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/object-assign": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/once": { "version": "1.4.0", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "wrappy": "1" } }, "node_modules/fsevents/node_modules/os-homedir": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/os-tmpdir": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/osenv": { "version": "0.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -8580,24 +8638,24 @@ }, "node_modules/fsevents/node_modules/path-is-absolute": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/process-nextick-args": { "version": "2.0.1", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/rc": { "version": "1.2.8", - "extraneous": true, "inBundle": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8610,15 +8668,15 @@ }, "node_modules/fsevents/node_modules/rc/node_modules/minimist": { "version": "1.2.0", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/readable-stream": { "version": "2.3.6", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8631,9 +8689,9 @@ }, "node_modules/fsevents/node_modules/rimraf": { "version": "2.7.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "glob": "^7.1.3" }, @@ -8643,57 +8701,57 @@ }, "node_modules/fsevents/node_modules/safe-buffer": { "version": "5.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/safer-buffer": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/sax": { "version": "1.2.4", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/semver": { "version": "5.7.1", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "bin": { "semver": "bin/semver" } }, "node_modules/fsevents/node_modules/set-blocking": { "version": "2.0.0", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/signal-exit": { "version": "3.0.2", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/string_decoder": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/fsevents/node_modules/string-width": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -8705,9 +8763,9 @@ }, "node_modules/fsevents/node_modules/strip-ansi": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "ansi-regex": "^2.0.0" }, @@ -8717,18 +8775,18 @@ }, "node_modules/fsevents/node_modules/strip-json-comments": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/fsevents/node_modules/tar": { "version": "4.4.13", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -8744,35 +8802,38 @@ }, "node_modules/fsevents/node_modules/util-deprecate": { "version": "1.0.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/fsevents/node_modules/wide-align": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", + "optional": true, "dependencies": { "string-width": "^1.0.2 || 2" } }, "node_modules/fsevents/node_modules/wrappy": { "version": "1.0.2", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/fsevents/node_modules/yallist": { "version": "3.1.1", - "extraneous": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -8986,13 +9047,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9321,6 +9387,17 @@ "node": ">= 6.0.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -10087,10 +10164,32 @@ "node": ">=4" } }, - "node_modules/has-symbols": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -10183,6 +10282,17 @@ "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==" }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -17231,6 +17341,22 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -17954,6 +18080,19 @@ "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimstart": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", @@ -23898,12 +24037,15 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "caller-callsite": { @@ -24987,12 +25129,24 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==" }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "requires": { - "object-keys": "^1.0.12" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -25869,11 +26023,32 @@ "unbox-primitive": "^1.0.0" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-module-lexer": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==" }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -27062,22 +27237,22 @@ "abbrev": { "version": "1.1.1", "bundled": true, - "extraneous": true + "optional": true }, "ansi-regex": { "version": "2.1.1", "bundled": true, - "extraneous": true + "optional": true }, "aproba": { "version": "1.2.0", "bundled": true, - "extraneous": true + "optional": true }, "are-we-there-yet": { "version": "1.1.5", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -27086,12 +27261,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -27100,32 +27275,32 @@ "chownr": { "version": "1.1.3", "bundled": true, - "extraneous": true + "optional": true }, "code-point-at": { "version": "1.1.0", "bundled": true, - "extraneous": true + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "extraneous": true + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "extraneous": true + "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "debug": { "version": "3.2.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "ms": "^2.1.1" } @@ -27133,22 +27308,22 @@ "deep-extend": { "version": "0.6.0", "bundled": true, - "extraneous": true + "optional": true }, "delegates": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "detect-libc": { "version": "1.0.3", "bundled": true, - "extraneous": true + "optional": true }, "fs-minipass": { "version": "1.2.7", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minipass": "^2.6.0" } @@ -27156,12 +27331,12 @@ "fs.realpath": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "gauge": { "version": "2.7.4", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -27176,7 +27351,7 @@ "glob": { "version": "7.1.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -27189,12 +27364,12 @@ "has-unicode": { "version": "2.0.1", "bundled": true, - "extraneous": true + "optional": true }, "iconv-lite": { "version": "0.4.24", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -27202,7 +27377,7 @@ "ignore-walk": { "version": "3.0.3", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minimatch": "^3.0.4" } @@ -27210,7 +27385,7 @@ "inflight": { "version": "1.0.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -27219,17 +27394,17 @@ "inherits": { "version": "2.0.4", "bundled": true, - "extraneous": true + "optional": true }, "ini": { "version": "1.3.5", "bundled": true, - "extraneous": true + "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -27237,12 +27412,12 @@ "isarray": { "version": "1.0.0", "bundled": true, - "extraneous": true + "optional": true }, "minimatch": { "version": "3.0.4", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -27250,12 +27425,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "extraneous": true + "optional": true }, "minipass": { "version": "2.9.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -27264,7 +27439,7 @@ "minizlib": { "version": "1.3.3", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minipass": "^2.9.0" } @@ -27272,7 +27447,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -27280,12 +27455,12 @@ "ms": { "version": "2.1.2", "bundled": true, - "extraneous": true + "optional": true }, "needle": { "version": "2.4.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "debug": "^3.2.6", "iconv-lite": "^0.4.4", @@ -27295,7 +27470,7 @@ "node-pre-gyp": { "version": "0.14.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", @@ -27312,7 +27487,7 @@ "nopt": { "version": "4.0.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -27321,7 +27496,7 @@ "npm-bundled": { "version": "1.1.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "npm-normalize-package-bin": "^1.0.1" } @@ -27329,12 +27504,12 @@ "npm-normalize-package-bin": { "version": "1.0.1", "bundled": true, - "extraneous": true + "optional": true }, "npm-packlist": { "version": "1.4.7", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" @@ -27343,7 +27518,7 @@ "npmlog": { "version": "4.1.2", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -27354,17 +27529,17 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "extraneous": true + "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, - "extraneous": true + "optional": true }, "once": { "version": "1.4.0", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "wrappy": "1" } @@ -27372,17 +27547,17 @@ "os-homedir": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "osenv": { "version": "0.1.5", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -27391,17 +27566,17 @@ "path-is-absolute": { "version": "1.0.1", "bundled": true, - "extraneous": true + "optional": true }, "process-nextick-args": { "version": "2.0.1", "bundled": true, - "extraneous": true + "optional": true }, "rc": { "version": "1.2.8", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -27412,14 +27587,14 @@ "minimist": { "version": "1.2.0", "bundled": true, - "extraneous": true + "optional": true } } }, "readable-stream": { "version": "2.3.6", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -27433,7 +27608,7 @@ "rimraf": { "version": "2.7.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "glob": "^7.1.3" } @@ -27441,37 +27616,37 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "extraneous": true + "optional": true }, "safer-buffer": { "version": "2.1.2", "bundled": true, - "extraneous": true + "optional": true }, "sax": { "version": "1.2.4", "bundled": true, - "extraneous": true + "optional": true }, "semver": { "version": "5.7.1", "bundled": true, - "extraneous": true + "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, - "extraneous": true + "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, - "extraneous": true + "optional": true }, "string_decoder": { "version": "1.1.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "safe-buffer": "~5.1.0" } @@ -27479,7 +27654,7 @@ "string-width": { "version": "1.0.2", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -27489,7 +27664,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -27497,12 +27672,12 @@ "strip-json-comments": { "version": "2.0.1", "bundled": true, - "extraneous": true + "optional": true }, "tar": { "version": "4.4.13", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -27516,12 +27691,12 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "wide-align": { "version": "1.1.3", "bundled": true, - "extraneous": true, + "optional": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -27529,19 +27704,19 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "extraneous": true + "optional": true }, "yallist": { "version": "3.1.1", "bundled": true, - "extraneous": true + "optional": true } } }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -27724,13 +27899,15 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-info": { @@ -27990,6 +28167,14 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -28591,10 +28776,23 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbols": { + "has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-unicode": { "version": "2.0.1", @@ -28666,6 +28864,14 @@ "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz", "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==" }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -34154,6 +34360,19 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -34765,6 +34984,16 @@ "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, "string.prototype.trimstart": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", diff --git a/package.json b/package.json index b1763338..4f45fdef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "keeweb", - "version": "1.18.6", + "version": "1.18.7", "description": "Free cross-platform password manager compatible with KeePass", "main": "Gruntfile.js", "private": true, @@ -110,6 +110,7 @@ }, "scripts": { "start": "grunt", + "lint": "grunt eslint", "test": "grunt test", "build-beta": "grunt --beta && cp dist/index.html ../keeweb-beta/index.html && cd ../keeweb-beta && git add index.html && git commit -a -m 'beta' && git push origin master", "electron": "cross-env KEEWEB_IS_PORTABLE=0 ELECTRON_DISABLE_SECURITY_WARNINGS=1 KEEWEB_EMULATE_HARDWARE_ENCRYPTION=persistent KEEWEB_HTML_PATH=http://localhost:8085 electron desktop --no-sandbox", From 7e06762b25a32a64a7464ad1f64981c0c750927b Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 4 Apr 2024 13:19:16 -0700 Subject: [PATCH 07/30] chore: cleanup tests --- build/tasks/grunt-run-test.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/build/tasks/grunt-run-test.js b/build/tasks/grunt-run-test.js index 39599c45..88ab5e93 100644 --- a/build/tasks/grunt-run-test.js +++ b/build/tasks/grunt-run-test.js @@ -7,9 +7,7 @@ module.exports = function (grunt) { const puppeteer = require('puppeteer'); (async function () { grunt.log.writeln('Running tests...'); - const fullPath = 'file://' + path.resolve(file); - const browser = await puppeteer.launch({ headless: opt.headless, executablePath: process.env.CHROME_BIN || null, @@ -18,7 +16,6 @@ module.exports = function (grunt) { grunt.log.writeln('puppeteer launched...'); const page = await browser.newPage(); await page.goto(fullPath); - async function check() { const result = await page.evaluate(() => { const { output, done } = window; From ce7838d9359bc181925d8940079cf7bd3d47f544 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 4 Apr 2024 13:36:44 -0700 Subject: [PATCH 08/30] ci: remove test verify workflow --- .github/workflows/verify.yml | 44 ------------------------------------ 1 file changed, 44 deletions(-) delete mode 100644 .github/workflows/verify.yml diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml deleted file mode 100644 index cf87de1f..00000000 --- a/.github/workflows/verify.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Verify -on: - push: - pull_request: - workflow_dispatch: - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - - name: "Lint › Checkout" - uses: actions/checkout@v3 - - - name: "Lint › Setup NodeJS" - uses: actions/setup-node@v3 - with: - node-version: '16' - - - name: "Lint › Install NPM Modules" - run: npm ci - - - name: "Lint › Run" - run: npm run lint - - test: - needs: - - lint - runs-on: ubuntu-latest - steps: - - - name: "Test › Checkout" - uses: actions/checkout@v3 - - - name: "Test › Setup NodeJS" - uses: actions/setup-node@v3 - with: - node-version: '16' - - - name: "Test › Install NPM Modules" - run: npm ci - - - name: "Test › Run" - run: npm test \ No newline at end of file From 3dda7f171bf68af54a516367e289b49b547b1774 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 09:11:10 -0400 Subject: [PATCH 09/30] Add .nvmrc --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..2ab3d4be --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.20.2 From 8bb2719b21e57693491460e18979fa435c55438f Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 09:11:20 -0400 Subject: [PATCH 10/30] Add verify workflow --- .github/workflows/verify.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/verify.yaml diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml new file mode 100644 index 00000000..150b103c --- /dev/null +++ b/.github/workflows/verify.yaml @@ -0,0 +1,13 @@ +name: Verify +on: + push: + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + - name: Test + run: npm test From 9d346490f71a97bda79cc8bc34390d66d2841230 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 09:16:57 -0400 Subject: [PATCH 11/30] fixup! Add verify workflow --- .github/workflows/verify.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 150b103c..e9e219cb 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -9,5 +9,7 @@ jobs: steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 + with: + node-version-file: .nvmrc - name: Test run: npm test From 72b25a2c2008a69f3eb05e64640b11b56bf76ec2 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 09:20:14 -0400 Subject: [PATCH 12/30] fixup! Add verify workflow --- .github/workflows/verify.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index e9e219cb..d97ed74e 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -10,6 +10,9 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version-file: .nvmrc + node-version-file: '.nvmrc' + cache: 'npm' + - name: Install npm modules + run: npm ci - name: Test run: npm test From 2fb3357ed3b8cb1f130552431a6cd7db855f9769 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 10:49:22 -0400 Subject: [PATCH 13/30] Update caniuse --- package-lock.json | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 968ce01c..02c7aa63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4123,9 +4123,23 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001218", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001218.tgz", - "integrity": "sha512-0ASydOWSy3bB88FbDpJSTt+PfDwnMqrym3yRZfqG8EXSQ06OZhF+q5wgYP/EN+jJMERItNcDQUqMyNjzZ+r5+Q==" + "version": "1.0.30001605", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", + "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, "node_modules/chai": { "version": "4.3.4", @@ -24102,9 +24116,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001218", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001218.tgz", - "integrity": "sha512-0ASydOWSy3bB88FbDpJSTt+PfDwnMqrym3yRZfqG8EXSQ06OZhF+q5wgYP/EN+jJMERItNcDQUqMyNjzZ+r5+Q==" + "version": "1.0.30001605", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", + "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==" }, "chai": { "version": "4.3.4", From 790b32e5d0b32b0c722ee5031491119296c735b7 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 10:49:37 -0400 Subject: [PATCH 14/30] Add lint job --- .github/workflows/verify.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index d97ed74e..36a6a5f2 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -4,6 +4,18 @@ on: pull_request: jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + cache: 'npm' + # - name: Install npm modules + # run: npm ci + - name: Test + run: npm run lint test: runs-on: ubuntu-latest steps: From b09e1344cce6c11a14c5271b8e60a148f387617c Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 10:50:43 -0400 Subject: [PATCH 15/30] fixup! Add lint job --- .github/workflows/verify.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 36a6a5f2..ab8ede5e 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -12,9 +12,9 @@ jobs: with: node-version-file: '.nvmrc' cache: 'npm' - # - name: Install npm modules - # run: npm ci - - name: Test + - name: Install npm modules + run: npm ci + - name: Lint run: npm run lint test: runs-on: ubuntu-latest From 5ea7328bb88e912c5f8b3ca13e83f26c933220d4 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Thu, 4 Apr 2024 17:01:30 -0400 Subject: [PATCH 16/30] Add workflow_dispatch to verify workflow --- .github/workflows/verify.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index ab8ede5e..da0886eb 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -2,6 +2,7 @@ name: Verify on: push: pull_request: + workflow_dispatch: jobs: lint: From 08c4f844ecbff3657a12ec678985c37d1fa84f80 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Thu, 4 Apr 2024 17:16:51 -0700 Subject: [PATCH 17/30] change: add dev-legacy / set-legacy to package scripts Due to some outdated packages, some users may attempt to run dev and experience the error "error:0308010C:digital envelope routines::unsupported" If npm run dev does not work; use npm run dev-legacy --- package.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b1763338..b9bdf445 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "keeweb", - "version": "1.18.6", + "version": "1.18.7", "description": "Free cross-platform password manager compatible with KeePass", "main": "Gruntfile.js", "private": true, @@ -110,15 +110,18 @@ }, "scripts": { "start": "grunt", + "lint": "grunt eslint", "test": "grunt test", "build-beta": "grunt --beta && cp dist/index.html ../keeweb-beta/index.html && cd ../keeweb-beta && git add index.html && git commit -a -m 'beta' && git push origin master", "electron": "cross-env KEEWEB_IS_PORTABLE=0 ELECTRON_DISABLE_SECURITY_WARNINGS=1 KEEWEB_EMULATE_HARDWARE_ENCRYPTION=persistent KEEWEB_HTML_PATH=http://localhost:8085 electron desktop --no-sandbox", "dev": "grunt dev", + "dev-legacy": "cross-env NODE_OPTIONS='--openssl-legacy-provider' grunt dev", "dev-desktop-macos": "grunt dev-desktop-darwin --skip-sign", "dev-desktop-macos-signed": "grunt dev-desktop-darwin-signed", "dev-desktop-windows": "grunt dev-desktop-win32 --skip-sign", "dev-desktop-linux": "grunt dev-desktop-linux --skip-sign", - "babel-helpers": "babel-external-helpers -l 'slicedToArray,toConsumableArray,defineProperty,typeof' -t global > app/lib/babel-helpers.js" + "babel-helpers": "babel-external-helpers -l 'slicedToArray,toConsumableArray,defineProperty,typeof' -t global > app/lib/babel-helpers.js", + "set-legacy": "export NODE_OPTIONS=--openssl-legacy-provider" }, "author": { "name": "Antelle", @@ -140,4 +143,4 @@ "last 1 ChromeAndroid version", "Electron > 6.0.1" ] -} +} \ No newline at end of file From 738d9c6a00f898eb94ddf074be84ec1473e60f51 Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Fri, 5 Apr 2024 13:43:02 -0700 Subject: [PATCH 18/30] fix: addresses not being able to unset a keyfile once added to a vault Refs: #2073 #1924 #2038 #1941 --- app/scripts/models/file-model.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/scripts/models/file-model.js b/app/scripts/models/file-model.js index 5edb7800..eeb33140 100644 --- a/app/scripts/models/file-model.js +++ b/app/scripts/models/file-model.js @@ -536,7 +536,7 @@ class FileModel extends Model { } removeKeyFile() { - this.db.credentials.keyFileHash = null; + this.db.credentials.setKeyFile(null); const changed = !!this.oldKeyFileHash; if (!changed && this.db.credentials.passwordHash === this.oldPasswordHash) { this.db.meta.keyChanged = this.oldKeyChangeDate; From 6e63a3db52d425b18e7c536bb87a3cbb89e4f08d Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Sat, 6 Apr 2024 09:38:36 -0700 Subject: [PATCH 19/30] feat: support for different otpauth url syntax adds support for otpauth://totp? and otpauth://totp/ --- app/scripts/models/entry-model.js | 1 + app/scripts/util/data/otp.js | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/scripts/models/entry-model.js b/app/scripts/models/entry-model.js index 06ffa126..4e21bb78 100644 --- a/app/scripts/models/entry-model.js +++ b/app/scripts/models/entry-model.js @@ -467,6 +467,7 @@ class EntryModel extends Model { if (otpUrl.isProtected) { otpUrl = otpUrl.getText(); } + // called only if secret provided, no formatted url if (Otp.isSecret(otpUrl.replace(/\s/g, ''))) { otpUrl = Otp.makeUrl(otpUrl.replace(/\s/g, '').toUpperCase()); } else if (otpUrl.toLowerCase().lastIndexOf('otpauth:', 0) !== 0) { diff --git a/app/scripts/util/data/otp.js b/app/scripts/util/data/otp.js index 2566157c..d4dbdeb1 100644 --- a/app/scripts/util/data/otp.js +++ b/app/scripts/util/data/otp.js @@ -135,12 +135,12 @@ Otp.leftPad = function (str, len) { }; Otp.parseUrl = function (url) { - const match = /^otpauth:\/\/(\w+)\/([^\?]+)\?(.*)/i.exec(url); + const match = /^otpauth:\/\/(\w+)(?:\/([^\?]+)\?|\?)(.*)/i.exec(url); if (!match) { throw 'Not OTP url'; } const params = {}; - const label = decodeURIComponent(match[2]); + const label = decodeURIComponent(match[2] ?? 'default'); if (label) { const parts = label.split(':'); params.issuer = parts[0].trim(); @@ -148,7 +148,8 @@ Otp.parseUrl = function (url) { params.account = parts[1].trim(); } } - params.type = match[1].toLowerCase(); + params.type = match[1].toLowerCase(); // returns "totp" + // match[3] = secret=XXXXXXXXXXXXX&period=30&digits=6&algorithm=SHA1 match[3].split('&').forEach((part) => { const parts = part.split('=', 2); params[parts[0].toLowerCase()] = decodeURIComponent(parts[1]); From 80370d128c3d9adf9a75947e8acc66182346ec7a Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Sat, 6 Apr 2024 09:38:36 -0700 Subject: [PATCH 20/30] fix: support for different otpauth url syntax adds support for otpauth://totp? and otpauth://totp/ --- app/scripts/models/entry-model.js | 1 + app/scripts/util/data/otp.js | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/scripts/models/entry-model.js b/app/scripts/models/entry-model.js index 06ffa126..4e21bb78 100644 --- a/app/scripts/models/entry-model.js +++ b/app/scripts/models/entry-model.js @@ -467,6 +467,7 @@ class EntryModel extends Model { if (otpUrl.isProtected) { otpUrl = otpUrl.getText(); } + // called only if secret provided, no formatted url if (Otp.isSecret(otpUrl.replace(/\s/g, ''))) { otpUrl = Otp.makeUrl(otpUrl.replace(/\s/g, '').toUpperCase()); } else if (otpUrl.toLowerCase().lastIndexOf('otpauth:', 0) !== 0) { diff --git a/app/scripts/util/data/otp.js b/app/scripts/util/data/otp.js index 2566157c..d4dbdeb1 100644 --- a/app/scripts/util/data/otp.js +++ b/app/scripts/util/data/otp.js @@ -135,12 +135,12 @@ Otp.leftPad = function (str, len) { }; Otp.parseUrl = function (url) { - const match = /^otpauth:\/\/(\w+)\/([^\?]+)\?(.*)/i.exec(url); + const match = /^otpauth:\/\/(\w+)(?:\/([^\?]+)\?|\?)(.*)/i.exec(url); if (!match) { throw 'Not OTP url'; } const params = {}; - const label = decodeURIComponent(match[2]); + const label = decodeURIComponent(match[2] ?? 'default'); if (label) { const parts = label.split(':'); params.issuer = parts[0].trim(); @@ -148,7 +148,8 @@ Otp.parseUrl = function (url) { params.account = parts[1].trim(); } } - params.type = match[1].toLowerCase(); + params.type = match[1].toLowerCase(); // returns "totp" + // match[3] = secret=XXXXXXXXXXXXX&period=30&digits=6&algorithm=SHA1 match[3].split('&').forEach((part) => { const parts = part.split('=', 2); params[parts[0].toLowerCase()] = decodeURIComponent(parts[1]); From 331ec8c7388a847c9bd5ee6a3b0982c00785209c Mon Sep 17 00:00:00 2001 From: Aetherinox Date: Sat, 6 Apr 2024 14:45:40 -0700 Subject: [PATCH 21/30] repo: convert issue templates into forms --- .github/ISSUE_TEMPLATE/bug-report.yaml | 169 ++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature-request.yaml | 45 ++++++ 2 files changed, 214 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yaml create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yaml diff --git a/.github/ISSUE_TEMPLATE/bug-report.yaml b/.github/ISSUE_TEMPLATE/bug-report.yaml new file mode 100644 index 00000000..7c943216 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yaml @@ -0,0 +1,169 @@ +name: "🐛 Bug Report" +description: Create a report to help us improve KeeWeb! +title: "🐛 Bug: " +labels: [ + "Type ◦ Bug" +] +body: + - type: markdown + attributes: + value: | + 1. Please speak `English`. + 2. Make sure you are using the latest version and take a moment to check that your issue hasn't been reported before. + 3. It's really important to provide pertinent details and logs, + incomplete details will be handled as an invalid report. + + <br /> + + - type: dropdown + id: priority-type + attributes: + label: Priority + description: | + How critical is the issue? + Do not abuse this. Issues that completely break KeeWeb would be classified as critical. + If you are requesting a new feature, then it would be low or normal. + options: + - "Low" + - "Normal" + - "High" + - "Urgent" + validations: + required: true + + - type: input + id: ver-keeweb + attributes: + label: "Version: KeeWeb" + description: | + Version of KeeWeb you are running + Version is located in Settings › Help › App Information + placeholder: "Ex: v1.18.7" + validations: + required: true + + - type: dropdown + id: build-env + attributes: + label: Environment + description: | + What environment are you running KeeWeb as? + options: + - "Web" + - "Desktop" + + - type: dropdown + id: build-os + attributes: + label: Operating System + description: | + Select which OS you are running: + options: + - "Windows" + - "Mac" + - "Linux" + + - type: dropdown + id: issue-target + attributes: + label: Range of issue + description: | + Where does this issue occur? + Before submitting your bug report, try to see if the issue also occurs on the official demo site at https://app.keeweb.info/ + options: + - "The issue occurs on my own setup AND demo site" + - "The issue only occurs on my own setup, demo site works correctly" + + - type: dropdown + id: issue-db-type + attributes: + label: Database Type + description: | + What type of database are you having this issue with? + options: + - "Issue occurs only on new databases" + - "Issue occurs only on existing databases" + - "Issue occurs on both new and existing databases" + + - type: textarea + id: logs-env + attributes: + label: Environment Copy/Paste + description: | + Copy all information from Settings › Help inside KeeWeb + render: shell + + - type: textarea + id: description + attributes: + label: Description + description: | + Please provide a description of your issue here. + validations: + required: true + + - type: textarea + id: steps-reproduce + attributes: + label: Steps To Reproduce + description: | + Describe the steps that need taken by the developer(s) to get the error / issue you're experiencing. + value: | + - + - + - + - + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: | + Describe what you expect KeeWeb to actually do if it were working properly + value: | + - + - + - + - + validations: + required: true + + - type: textarea + id: logs-console + attributes: + label: Logs + description: | + List any error messages you received in the developer console. + Developer console for **web** can be opened with **SHIFT + CTRL + I** + Open **dev tools** in your browser and attach output log from **CONSOLE** tab. If you are using a desktop app, devtools can be opened from Settings › General › Advanced. + render: shell + + - type: textarea + id: references + attributes: + label: Referenced Issues + description: | + List any existing issues this ticket may be associated with. + Structure each issue as: + - #NUMBER + - #3 + value: | + - # + + - type: textarea + id: attachment-db + attributes: + label: "Attachments: Database kdbx File" + description: | + Attach a test database below that does give you the described issue. + Ensure it has no real security information within it as it will be publicly visible to all. + + - type: textarea + id: attachment-screenshots + attributes: + label: "Attachments: Screenshots" + description: | + Please provide screenshots of any errors or the issue you're having. + Gifs are even better. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yaml b/.github/ISSUE_TEMPLATE/feature-request.yaml new file mode 100644 index 00000000..4a97aa70 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yaml @@ -0,0 +1,45 @@ +name: "💡 Feature Request" +description: Got a suggestion? Submit your request here. +title: "💡 Feature: <title>" +labels: [ + "Type ◦ Feature" +] +body: + - type: markdown + attributes: + value: | + 1. Please speak English. + 2. Please take a moment to check that your feature hasn't already been suggested. + 3. Be detailed but to the point. + + - type: textarea + id: text-description + attributes: + label: Feature Description + description: | + Explain your feature. Be detailed. + If your feature addresses a problem; explain the problem. + placeholder: | + I would like to request ... + validations: + required: true + + - type: textarea + id: text-alternatives + attributes: + label: Alternatives Considered + description: | + A clear and concise description of any alternative solutions or features you've considered. + validations: + required: false + + - type: textarea + id: attachment-screenshots + attributes: + label: "Attachments: Screenshots" + description: | + If possible, provide screenshots. + Want a feature placed in a specific location? Mark it in a screenshot. + Want something modified? Try creating a mockup. + The more details about how it should look, the better. + Not required, but appreciated. From 6690d01643daacb36f434af24c1350efb5dac474 Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Sat, 6 Apr 2024 14:48:38 -0700 Subject: [PATCH 22/30] repo: remove original git issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 34 ------------------- .../{bug-report.yaml => bug_report.yaml} | 0 .github/ISSUE_TEMPLATE/feature_request.md | 20 ----------- ...ture-request.yaml => feature_request.yaml} | 0 4 files changed, 54 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md rename .github/ISSUE_TEMPLATE/{bug-report.yaml => bug_report.yaml} (100%) delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md rename .github/ISSUE_TEMPLATE/{feature-request.yaml => feature_request.yaml} (100%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index c35846f2..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve KeeWeb -title: '' -labels: 'bug' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Environment** -Please copy all version information from Settings/Help - -**Kdbx File** -Does it happen on Demo or New database? -If you have a test db without your personal data, please attach it. - -**Logs** -Please open dev tools in your browser and attach output log from Console tab. If you are using a desktop app, devtools can be opened from Settings/General/Advanced. diff --git a/.github/ISSUE_TEMPLATE/bug-report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug-report.yaml rename to .github/ISSUE_TEMPLATE/bug_report.yaml diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 36014cde..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: 'enhancement' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml similarity index 100% rename from .github/ISSUE_TEMPLATE/feature-request.yaml rename to .github/ISSUE_TEMPLATE/feature_request.yaml From 0f8332b07a6b8fb42825d07527e093c6a9e4e640 Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Sun, 7 Apr 2024 12:06:11 -0700 Subject: [PATCH 23/30] fix: convert space character to non-breaking space on password reveal addresses issue with having space characters in passwords and pressing the 'reveal password' button. --- app/scripts/util/formatting/password-presenter.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/scripts/util/formatting/password-presenter.js b/app/scripts/util/formatting/password-presenter.js index a7271077..38de5f40 100644 --- a/app/scripts/util/formatting/password-presenter.js +++ b/app/scripts/util/formatting/password-presenter.js @@ -7,8 +7,14 @@ class RandomNameGenerator { } } +// activated when user presses 'reveal' on password function charCodeToHtml(char) { - return Math.random() < 0.2 ? String.fromCharCode(char) : `&#x${char.toString(16)};`; + // convert certain special chars like space into to non-breaking space + // ' ' to &#nbsp; + if ( char === 32 || char === 8193 || char === 8239 ) + char = 160; + + return Math.random( ) < 0.2 ? String.fromCharCode( char ) : `&#x${ char.toString( 16 ) };`; } const PasswordPresenter = { From fe23aa9097e4c96199e2924cacb7ac629fb42ef0 Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Sun, 7 Apr 2024 12:11:43 -0700 Subject: [PATCH 24/30] chore: conform to prettify --- app/scripts/util/formatting/password-presenter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/scripts/util/formatting/password-presenter.js b/app/scripts/util/formatting/password-presenter.js index 38de5f40..42503a6c 100644 --- a/app/scripts/util/formatting/password-presenter.js +++ b/app/scripts/util/formatting/password-presenter.js @@ -11,9 +11,9 @@ class RandomNameGenerator { function charCodeToHtml(char) { // convert certain special chars like space into to non-breaking space // ' ' to &#nbsp; - if ( char === 32 || char === 8193 || char === 8239 ) + if ( char === 32 || char === 8193 || char === 8239 ) { char = 160; - + } return Math.random( ) < 0.2 ? String.fromCharCode( char ) : `&#x${ char.toString( 16 ) };`; } From ab9b5a9d683c4f6360d119bc3155e349fcebd30a Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Sun, 7 Apr 2024 12:44:46 -0700 Subject: [PATCH 25/30] fix: prettify linting rage inducing --- app/scripts/util/formatting/password-presenter.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/scripts/util/formatting/password-presenter.js b/app/scripts/util/formatting/password-presenter.js index 42503a6c..584a0865 100644 --- a/app/scripts/util/formatting/password-presenter.js +++ b/app/scripts/util/formatting/password-presenter.js @@ -7,14 +7,13 @@ class RandomNameGenerator { } } -// activated when user presses 'reveal' on password function charCodeToHtml(char) { // convert certain special chars like space into to non-breaking space // ' ' to &#nbsp; - if ( char === 32 || char === 8193 || char === 8239 ) { + if (char === 32 || char === 8193 || char === 8239) { char = 160; } - return Math.random( ) < 0.2 ? String.fromCharCode( char ) : `&#x${ char.toString( 16 ) };`; + return Math.random() < 0.2 ? String.fromCharCode(char) : `&#x${char.toString(16)};`; } const PasswordPresenter = { From 1be7a55eaba4bb45488d9682f6c972f24846a14d Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Fri, 3 May 2024 07:01:28 -0700 Subject: [PATCH 26/30] ci: add cloudflare workflow for app.keeweb.info --- .github/workflows/deploy-cfp.yml | 368 +++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 .github/workflows/deploy-cfp.yml diff --git a/.github/workflows/deploy-cfp.yml b/.github/workflows/deploy-cfp.yml new file mode 100644 index 00000000..ebdc7302 --- /dev/null +++ b/.github/workflows/deploy-cfp.yml @@ -0,0 +1,368 @@ +# --------------------------------------------------------------------------------------- +# Cloudflare Pages › Update Website +# Pushes a new version of the website to Cloudflare +# +# If editing this workflow, all you need to edit are the INPUT values and the global +# ENV variables. No need to go any deeper. +# +# CHANGE: +# - run-name && name +# - INPUTS: +# PROJECT_NAME +# - ENV: +# PROJECT_NAME +# DOMAIN +# BRANCH +# --------------------------------------------------------------------------------------- + +run-name: "☁️ CF › Deploy › app.keeweb.info" +name: "☁️ CF › app.keeweb.info" + +# --------------------------------------------------------------------------------------- +# TRIGGERS +# --------------------------------------------------------------------------------------- + +on: + push: + branches: [ master ] + workflow_dispatch: + inputs: + + # --------------------------------------------------------------------------------------- + # The default values set for each input should not need to be changed as they are + # already set to the correct values. + # --------------------------------------------------------------------------------------- + + PROJECT_NAME: + description: "Project Name" + required: true + default: 'app-keeweb-info' + type: string + + DIRECTORY_BUILD_OUTPUT: + description: "Build Output Dir" + required: true + default: 'gh-pages' + type: string + + DIRECTORY_WORKING: + description: "Root Dir" + required: true + default: './' + type: string + + WRANGLER_VERSION: + description: "Wrangler Version" + required: true + default: '3' + type: string + + BRANCH: + description: 'Website Branch' + required: true + default: 'gh-pages' + type: choice + options: + - gh-pages + +# --------------------------------------------------------------------------------------- +# ENV VARIABLES +# +# PROJECT_NAME : This is the project name used in Cloudflare. +# DOMAIN : purely cosmetic which displays as the label of some steps +# --------------------------------------------------------------------------------------- + +env: + PROJECT_NAME: ${{ github.event.inputs.PROJECT_NAME || 'app-keeweb-info' }} + DOMAIN: 'app.keeweb.info' + DIR_BUILD_OUTPUT: ${{ github.event.inputs.DIRECTORY_BUILD_OUTPUT || 'gh-pages' }} + DIR_WORKING: ${{ github.event.inputs.DIRECTORY_WORKING || './' }} + WRANGLER_VERSION: ${{ github.event.inputs.WRANGLER_VERSION || '2' }} + BRANCH: ${{ github.event.inputs.BRANCH || 'gh-pages' }} + +# --------------------------------------------------------------------------------------- +# JOBS +# --------------------------------------------------------------------------------------- + +jobs: + + # --------------------------------------------------------------------------------------- + # JOB > PUBLISH + # --------------------------------------------------------------------------------------- + + job-cfpublish: + name: >- + ☁️ Publish Website + runs-on: ubuntu-latest + outputs: + upload_github: ${{ steps.task_cloudflare_project_create_github.outputs.SUCCESS }} + upload_assets: ${{ steps.task_cloudflare_project_create_assets.outputs.SUCCESS }} + existing_site: ${{ steps.task_cloudflare_project_check.outputs.EXISTING }} + permissions: + contents: read + deployments: write + id-token: write + steps: + + - name: "✅ Start Publish" + id: task_cfpublish_start + run: | + echo "Publishing new version of ${{ env.DOMAIN }} to Cloudflare Pages service" + + # --------------------------------------------------------------------------------------- + # Job > Publish > Checkout + # --------------------------------------------------------------------------------------- + + - name: "☑️ Checkout gh-pages" + id: task_cfpublish_checkout + uses: actions/checkout@v4 + with: + ref: gh-pages + path: gh-pages + fetch-depth: 0 + + # --------------------------------------------------------------------------------------- + # Job > Publish > Commit Dist + # used in original build script for keeweb + # --------------------------------------------------------------------------------------- + + #- name: "Commit dist to gh-pages" + # working-directory: gh-pages + # run: | + # git rm -r '*' + # cp -r ../html/* . + # mkdir -p .github/workflows + # echo $GITHUB_SHA > build.txt + # date >> build.txt + # git add . + # git config --local user.email "action@github.com" + # git config --local user.name "GitHub Action" + # git commit -am v${{ steps.get_tag.outputs.tag }} + + # --------------------------------------------------------------------------------------- + # Job > Publish > Push + # --------------------------------------------------------------------------------------- + + #- name: "Push gh-pages" + # uses: keeweb/github-push-action@master + # with: + # github_token: ${{ secrets.GITHUB_TOKEN }} + # branch: gh-pages + # directory: gh-pages + + # --------------------------------------------------------------------------------------- + # Job > Publish > Restore mtime + # --------------------------------------------------------------------------------------- + + #- name: Restore git mtime + # working-directory: gh-pages + # run: python3 ../keeweb/.github/actions/scripts/git-restore-mtime.py + + # --------------------------------------------------------------------------------------- + # CLOUDFLARE > NODE > SETUP + # --------------------------------------------------------------------------------------- + + - name: "⚙️ Setup › Node" + id: task_cfpublish_node_setup + uses: actions/setup-node@v4 + with: + node-version: '20.x' + scope: '@aetherinox' + + # --------------------------------------------------------------------------------------- + # CLOUDFLARE > NODE > INSTALL + # --------------------------------------------------------------------------------------- + + - name: "📦 NPM › Install Wrangler" + id: task_cloudflare_npm_install + run: | + npm install -g npm@latest + npm install --global wrangler + env: + NODE_AUTH_TOKEN: ${{ secrets.SELF_TOKEN_CL }} + + # --------------------------------------------------------------------------------------- + # CLOUDFLARE > CHECK PROJECT + # + # this step checks to see if your project already exists on cloudflare + # --------------------------------------------------------------------------------------- + + - name: "☁️ CF › Check Project" + id: task_cloudflare_project_check + shell: bash + run: | + check=$(curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/pages/projects/${{ inputs.PROJECT_NAME || env.PROJECT_NAME }}" \ + -H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ + -H "Content-Type:application/json" | jq -r '.success') + echo "EXISTING=$check" >> $GITHUB_OUTPUT + + # --------------------------------------------------------------------------------------- + # CLOUDFLARE > CREATE PROJECT (LINKED TO GITHUB) + # + # This step will only success if you've already linked your Github account to cloudflare. + # if you attempt to push this deployment to any github repo that is not linked to + # cloudflare; the step will fail, and then execute step + # task_cloudflare_project_create_assets + # --------------------------------------------------------------------------------------- + + - name: "☁️ CF › Create Project › Linked Github (if nonexistent)" + id: task_cloudflare_project_create_github + shell: bash + if: | + ${{ steps.task_cloudflare_project_check.outputs.EXISTING != 'true' }} + run: | + check=$(curl -s -X POST "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/pages/projects" \ + -H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ + -H "Content-Type:application/json" \ + -d '{"name": "${{ inputs.PROJECT_NAME || env.PROJECT_NAME }}", "production_branch": "${{ inputs.BRANCH || env.BRANCH || 'master' }}", "source": {"type": "github", "config": {"owner": "${{ github.repository_owner }}", "repo_name": "${{ github.event.repository.name }}"}}}' | jq -r '.success') + echo "SUCCESS=$check" >> $GITHUB_OUTPUT + echo "Mode (Link Github): $check" + + # --------------------------------------------------------------------------------------- + # CLOUDFLARE > CREATE PROJECT + # + # this step should execute only if the previous step failed. + # --------------------------------------------------------------------------------------- + + - name: "☁️ CF › Create Project › Upload Assets (if nonexistent)" + id: task_cloudflare_project_create_assets + shell: bash + if: | + steps.task_cloudflare_project_check.outputs.EXISTING != 'true' && ( ${{ steps.task_cloudflare_project_create_github.outputs.SUCCESS == 'false' || failure()}} ) + run: | + check=$(curl -s -X POST "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/pages/projects" \ + -H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ + -H "Content-Type:application/json" \ + -d '{"name":"${{ inputs.PROJECT_NAME || env.PROJECT_NAME }}", "production_branch":"${{ inputs.BRANCH || env.BRANCH || 'master' }}"}' | jq -r '.success') + echo "SUCCESS=$check" >> $GITHUB_OUTPUT + echo "Mode (Upload Assets): $check" + + # --------------------------------------------------------------------------------------- + # CLOUDFLARE > CREATE > SUMMARY + # + # outlines which method was used to create the project + # --------------------------------------------------------------------------------------- + + - name: "☁️ CF › Create Project › Summary" + id: task_cloudflare_project_summary + shell: bash + run: | + if [ ${{ steps.task_cloudflare_project_create_github.outputs.SUCCESS }} == 'true' ]; then + echo "" + echo "Project ${{ env.PROJECT_NAME }} linked to a Github account" + echo "" + elif [ ${{ steps.task_cloudflare_project_create_assets.outputs.SUCCESS }} == 'true' ]; then + echo "=========================================================================" + echo "" + echo " Project ${{ env.PROJECT_NAME }} NOT linked to a Github account." + echo " Uploading assets to Cloudflare" + echo "" + echo "=========================================================================" + echo "If you wish to sync the assets from Github to Cloudflare, you must ensure" + echo "you have connected your Github account to cloudflare and that you're" + echo "uploading from the same account that is linked." + elif [ ${{ steps.task_cloudflare_project_check.outputs.EXISTING }} == 'true' ]; then + echo "" + echo "Site already exists on Cloudflare, updating ${{ env.PROJECT_NAME }}" + echo "" + else + echo "" + echo "Error occured creating ${{ env.PROJECT_NAME }}" + echo "" + fi + + # --------------------------------------------------------------------------------------- + # Job > Publish > Cloudflare Wrangler + # --------------------------------------------------------------------------------------- + + #- name: "☁️ CF › Publish KeeWeb.info" + # uses: cloudflare/wrangler-action@v3 + # with: + # apiToken: ${{ secrets.CF_TOKEN }} # Cloudflare API Token at https://dash.cloudflare.com/profile/api-tokens + # accountId: ${{ secrets.CF_ACCOUNT_ID }} # Cloudflare account ID available on right side of CF website + # workingDirectory: ${{ inputs.DIRECTORY_WORKING || env.DIR_WORKING || './' }} # Working directory + # command: pages deploy ${{ inputs.DIRECTORY_BUILD_OUTPUT || env.DIR_BUILD_OUTPUT || './' }} --project-name=${{ inputs.PROJECT_NAME || env.PROJECT_NAME }} --commit-dirty=true + + # --------------------------------------------------------------------------------------- + # Cloudflare Pages Action + # + # a new version has been supplied above to switch from + # cloudflare/pages-action@v1 -> cloudflare/wrangler-action@v3 + # the new action uses NodeJS 20, instead of 16. + # --------------------------------------------------------------------------------------- + + - name: "☁️ CF › Publish ${{ env.DOMAIN }}" + uses: aetherinox/cloudflare-publish-action@latest + with: + apiToken: ${{ secrets.CF_TOKEN }} # Cloudflare API Token at https://dash.cloudflare.com/profile/api-tokens + accountId: ${{ secrets.CF_ACCOUNT_ID }} # Cloudflare account ID available on right side of CF website + projectName: ${{ inputs.PROJECT_NAME || env.PROJECT_NAME }} # Project name assigned at creation. view on workers-and-pages section of CF website + directory: ${{ inputs.DIRECTORY_BUILD_OUTPUT || env.DIR_BUILD_OUTPUT || './' }} # Output directory for built website + gitHubToken: ${{ secrets.SELF_TOKEN_CL }} # Optional: Enable this if you want to have GitHub Deployments triggered + branch: ${{ inputs.BRANCH || env.BRANCH || 'master' }} # Branch website published to; by default this will be the branch which triggered this workflow + workingDirectory: ${{ inputs.DIRECTORY_WORKING || env.DIR_WORKING || './' }} # Working directory + wranglerVersion: ${{ inputs.WRANGLER_VERSION || env.WRANGLER_VERSION || '3' }} # Optional: Change the Wrangler version, allows you to point to a specific version or a tag such as `beta` + + # --------------------------------------------------------------------------------------- + # Cloudflare > Purge Cache + # --------------------------------------------------------------------------------------- + + - name: "☁️ CF › Purge Cache" + id: task_cloudflare_purge_cache + run: | + check=$(curl -s -X POST "https://api.cloudflare.com/client/v4/zones/${{ secrets.CF_ZONE_SITE_MAIN }}/purge_cache" \ + -H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ + -H "Content-Type:application/json" \ + -d '{"purge_everything":true}' | jq -r '.success') + echo "SUCCESS=$check" >> $GITHUB_OUTPUT + echo "Purge Cache: $check" + + # --------------------------------------------------------------------------------------- + # JOB > COMPLETE + # --------------------------------------------------------------------------------------- + + job-complete: + name: >- + 🆗 Successful Deployment + needs: job-cfpublish + env: + UPLOAD_GITHUB: ${{ needs.job-cfpublish.outputs.upload_github }} + UPLOAD_ASSETS: ${{ needs.job-cfpublish.outputs.upload_assets }} + EXISTING_SITE: ${{ needs.job-cfpublish.outputs.existing_site }} + runs-on: ubuntu-latest + steps: + + # --------------------------------------------------------------------------------------- + # Job > Complete > Get publish timestamp + # --------------------------------------------------------------------------------------- + + - name: "🕛 Get Timestamp" + id: task_complete_timestamp_get + run: | + echo "NOW=$(date +'%m-%d-%Y %H:%M:%S')" >> $GITHUB_ENV + + # --------------------------------------------------------------------------------------- + # Job > Complete > Summary of publish + # --------------------------------------------------------------------------------------- + + - name: "🆗 CF Pages Deployment: ${{ env.NOW }}" + id: task_complete_summary + run: | + echo "" + echo "" + echo "| Name | Result |" >> $GITHUB_STEP_SUMMARY + echo "| ------------------------------- | ----------------------- |" >> $GITHUB_STEP_SUMMARY + echo "| **Cloudflare Project ID** | ${{ env.PROJECT_NAME }} |" >> $GITHUB_STEP_SUMMARY + echo "| **Domain** | ${{ env.DOMAIN }} |" >> $GITHUB_STEP_SUMMARY + echo "| **Deploy Time** | ${{ env.NOW }} |" >> $GITHUB_STEP_SUMMARY + if [ ${{ env.EXISTING_SITE }} == 'true' ]; then + echo "| **Update Type** | 🟩 Update Existing |" >> $GITHUB_STEP_SUMMARY + else + if [ ${{ env.UPLOAD_GITHUB }} == 'true' ]; then + echo "| **Update Type** | 🇬 Create (Link Github) |" >> $GITHUB_STEP_SUMMARY + elif [ ${{ env.UPLOAD_ASSETS }} == 'true' ]; then + echo "| **Update Type** | 📦 Create (Asset Upload) |" >> $GITHUB_STEP_SUMMARY + else + echo "| **Update Type** | ❌ Could not push to Cloudflare |" >> $GITHUB_STEP_SUMMARY + fi + fi From cbae9af18bf9a82b1c5b3e59a523c7da513aacd7 Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Fri, 3 May 2024 07:49:40 -0700 Subject: [PATCH 27/30] ci: cloudflare assign subdomain --- .github/workflows/deploy-cfp.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-cfp.yml b/.github/workflows/deploy-cfp.yml index ebdc7302..45923a0c 100644 --- a/.github/workflows/deploy-cfp.yml +++ b/.github/workflows/deploy-cfp.yml @@ -12,6 +12,9 @@ # - ENV: # PROJECT_NAME # DOMAIN +# DIR_BUILD_OUTPUT +# DIR_WORKING +# WRANGLER_VERSION # BRANCH # --------------------------------------------------------------------------------------- @@ -36,7 +39,7 @@ on: PROJECT_NAME: description: "Project Name" required: true - default: 'app-keeweb-info' + default: 'app-keeweb' type: string DIRECTORY_BUILD_OUTPUT: @@ -73,7 +76,7 @@ on: # --------------------------------------------------------------------------------------- env: - PROJECT_NAME: ${{ github.event.inputs.PROJECT_NAME || 'app-keeweb-info' }} + PROJECT_NAME: ${{ github.event.inputs.PROJECT_NAME || 'app-keeweb' }} DOMAIN: 'app.keeweb.info' DIR_BUILD_OUTPUT: ${{ github.event.inputs.DIRECTORY_BUILD_OUTPUT || 'gh-pages' }} DIR_WORKING: ${{ github.event.inputs.DIRECTORY_WORKING || './' }} @@ -345,7 +348,7 @@ jobs: # Job > Complete > Summary of publish # --------------------------------------------------------------------------------------- - - name: "🆗 CF Pages Deployment: ${{ env.NOW }}" + - name: "🆗 CF Pages Deployment: ${{ env.DOMAIN }}" id: task_complete_summary run: | echo "" From daab8c9693d77c481f5e03584db6efb293f5deea Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Fri, 3 May 2024 11:05:58 -0700 Subject: [PATCH 28/30] ci: update workflows --- .github/workflows/build.yaml | 6 +- .github/workflows/tests.yml | 253 ++++++++++++++++++++++++++++++++++ .github/workflows/verify.yaml | 31 ----- 3 files changed, 256 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/tests.yml delete mode 100644 .github/workflows/verify.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6cf5971a..a2ee6ec5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -250,7 +250,7 @@ jobs: tagRegex: "^v(\\d+\\.\\d+\\.\\d+)$" tagRegexGroup: 1 - name: Setup GCloud - uses: google-github-actions/setup-gcloud@master + uses: google-github-actions/setup-gcloud@v0.7.0 with: version: '285.0.0' service_account_key: ${{ secrets.GCP_SA_KEY }} @@ -418,9 +418,9 @@ jobs: - name: Purge CloudFlare cache if: ${{ github.repository == 'keeweb/keeweb' }} env: - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + CF_TOKEN: ${{ secrets.CF_TOKEN }} run: | curl -sS -X POST "https://api.cloudflare.com/client/v4/zones/dbda8e7e454d23edb08d4bc3b3f6f872/purge_cache" \ - -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ + -H "Authorization: Bearer $CF_TOKEN" \ -H "Content-Type: application/json" \ --data '{"purge_everything":true}' diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 00000000..7b0e1d07 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,253 @@ +name: "🧰 Tests" +run-name: "🧰 Tests" + +on: + push: + branches: + - 'main' + - 'master' + - 'develop' + - 'development' + - '!all-contributors/**' + + pull_request: + workflow_dispatch: + +jobs: + + # --------------------------------------------------------------------------------------- + # JOB > INITIALIZE + # --------------------------------------------------------------------------------------- + + job-initialize-run: + name: >- + 💡 Initialize + runs-on: ubuntu-latest + outputs: + package_version: ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }} + permissions: + contents: write + packages: write + steps: + + - name: "✅ Start" + id: task_initialize_start + run: | + echo "Starting build" + + # --------------------------------------------------------------------------------------- + # Job > Lint > Checkout + # --------------------------------------------------------------------------------------- + + - name: "☑️ Checkout" + id: task_lint_run_checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # --------------------------------------------------------------------------------------- + # Job > Lint > Setup Node + # --------------------------------------------------------------------------------------- + + - name: "⚙️ Setup Node" + id: task_lint_node_setup + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + # --------------------------------------------------------------------------------------- + # Job > Lint > NPM Install + # --------------------------------------------------------------------------------------- + + - name: "🕛 NPM › Clean Install" + id: task_lint_npm_install + run: | + npm ci + + # --------------------------------------------------------------------------------------- + # Get version from package.json VERSION value + # --------------------------------------------------------------------------------------- + + - name: "👁️‍🗨️ Get Package Version" + id: task_initialize_package_getversion + run: | + VER=$(cat package.json | jq -r '.version') + echo "PACKAGE_VERSION=$VER" >> $GITHUB_OUTPUT + + - name: "👁️‍🗨️ Found KeeWeb v${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }}" + id: task_initialize_package_getversion_debug + run: | + echo Found KeeWeb ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }} + + # --------------------------------------------------------------------------------------- + # generate guid and uuid + # --------------------------------------------------------------------------------------- + + - name: "🪪 .ENV › Generate" + id: task_initialize_npm_env_generate + run: | + npm run keeweb:generate + + # --------------------------------------------------------------------------------------- + # assign guid and uuid to env variable + # --------------------------------------------------------------------------------------- + + - name: "🪪 .ENV › Get" + id: task_initialize_dotenv_get + uses: falti/dotenv-action@v1 + + # --------------------------------------------------------------------------------------- + # read back guid and uuid + # --------------------------------------------------------------------------------------- + + - name: "🪪 .ENV › Read" + id: task_dotenv_debug_print + run: | + echo "VER: ${{ steps.task_initialize_dotenv_get.outputs.VERSION }}" + echo "GUID: ${{ steps.task_initialize_dotenv_get.outputs.GUID }}" + echo "UUID: ${{ steps.task_initialize_dotenv_get.outputs.UUID }}" + + # --------------------------------------------------------------------------------------- + # JOB > LINT + # --------------------------------------------------------------------------------------- + + job-lint-run: + name: >- + 📚 Lint + runs-on: ubuntu-latest + needs: [ job-initialize-run ] + env: + PACKAGE_VERSION: ${{ needs.job-initialize-run.outputs.package_version }} + steps: + + # --------------------------------------------------------------------------------------- + # Job > Lint > Checkout + # --------------------------------------------------------------------------------------- + + - name: "☑️ Checkout" + id: task_lint_run_checkout + uses: actions/checkout@v4 + + # --------------------------------------------------------------------------------------- + # Job > Lint > Setup Node + # --------------------------------------------------------------------------------------- + + - name: "⚙️ Setup Node" + id: task_lint_node_setup + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + # --------------------------------------------------------------------------------------- + # Job > Lint > NPM Install + # --------------------------------------------------------------------------------------- + + - name: "🕛 NPM › Clean Install" + id: task_lint_npm_install + run: | + npm ci + + # --------------------------------------------------------------------------------------- + # Job > Lint > Run + # --------------------------------------------------------------------------------------- + + - name: "🕞 NPM › Lint" + id: task_lint_npm_lint + run: | + npm run lint + + # --------------------------------------------------------------------------------------- + # Job > Lint > Generate Coverage + # --------------------------------------------------------------------------------------- + + - name: "🕘 NPM › Coverage" + id: task_lint_npm_coverage + run: | + npm run coverage + + # --------------------------------------------------------------------------------------- + # Job > Lint > Upload Coverage to Codecov + # --------------------------------------------------------------------------------------- + + - name: "📝 Upload Coverage Reports › Codecov" + id: task_lint_codecov_upload + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: keeweb/keeweb + + # --------------------------------------------------------------------------------------- + # JOB > TESTS + # --------------------------------------------------------------------------------------- + + job-tests-run: + name: >- + 🧪 Tests + runs-on: ubuntu-latest + needs: [ job-initialize-run ] + env: + PACKAGE_VERSION: ${{ needs.job-initialize-run.outputs.package_version }} + steps: + + # --------------------------------------------------------------------------------------- + # Job > Tests > Fix Line Endings + # --------------------------------------------------------------------------------------- + + - name: "🛒 Fix Git Checkout Line Endings" + id: task_tests_git-fixlines + run: | + git config --global core.autocrlf input + + # --------------------------------------------------------------------------------------- + # Job > Tests > Checkout + # --------------------------------------------------------------------------------------- + + - name: "☑️ Checkout" + id: task_tests_run_checkout + uses: actions/checkout@v4 + + # --------------------------------------------------------------------------------------- + # Job > Tests > Setup Node + # --------------------------------------------------------------------------------------- + + - name: "⚙️ Setup Node" + id: task_tests_node_setup + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + # --------------------------------------------------------------------------------------- + # Job > Tests > NPM Install + # --------------------------------------------------------------------------------------- + + - name: "🕛 NPM › Clean Install" + id: task_tests_npm_install + run: | + npm ci + + # --------------------------------------------------------------------------------------- + # Job > Tests > Run Lint + # --------------------------------------------------------------------------------------- + + - name: "🕘 NPM › Lint" + id: task_tests_npm_lint + run: | + npm run test + + # --------------------------------------------------------------------------------------- + # JOB > COMPLETE + # --------------------------------------------------------------------------------------- + + job-complete-run: + name: >- + ✅ Complete + runs-on: ubuntu-latest + needs: [ job-initialize-run, job-lint-run, job-tests-run ] + env: + PACKAGE_VERSION: ${{ needs.job-initialize-run.outputs.package_version }} + steps: + + - name: "☑️ Tests Complete" + id: task_tests_complete + run: | + echo 'Linting and tests successfully completed for KeeWeb ${{ env.PACKAGE_VERSION }}' diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml deleted file mode 100644 index da0886eb..00000000 --- a/.github/workflows/verify.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Verify -on: - push: - pull_request: - workflow_dispatch: - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version-file: '.nvmrc' - cache: 'npm' - - name: Install npm modules - run: npm ci - - name: Lint - run: npm run lint - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version-file: '.nvmrc' - cache: 'npm' - - name: Install npm modules - run: npm ci - - name: Test - run: npm test From 90ab4075af73e1e09714ae4becd6b6f15309f709 Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Fri, 3 May 2024 11:13:10 -0700 Subject: [PATCH 29/30] ci: temp workflow edits --- .github/workflows/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7b0e1d07..dab2d88c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -85,6 +85,7 @@ jobs: - name: "🪪 .ENV › Generate" id: task_initialize_npm_env_generate + continue-on-error: true run: | npm run keeweb:generate @@ -94,6 +95,7 @@ jobs: - name: "🪪 .ENV › Get" id: task_initialize_dotenv_get + continue-on-error: true uses: falti/dotenv-action@v1 # --------------------------------------------------------------------------------------- @@ -102,6 +104,7 @@ jobs: - name: "🪪 .ENV › Read" id: task_dotenv_debug_print + continue-on-error: true run: | echo "VER: ${{ steps.task_initialize_dotenv_get.outputs.VERSION }}" echo "GUID: ${{ steps.task_initialize_dotenv_get.outputs.GUID }}" From fe77e5399a0cd032415d45a302b76195dd676abf Mon Sep 17 00:00:00 2001 From: Aetherinox <aetherinox@proton.me> Date: Fri, 3 May 2024 11:16:50 -0700 Subject: [PATCH 30/30] ci: update workflow --- .github/workflows/tests.yml | 256 ---------------------------------- .github/workflows/verify.yaml | 31 ++++ 2 files changed, 31 insertions(+), 256 deletions(-) delete mode 100644 .github/workflows/tests.yml create mode 100644 .github/workflows/verify.yaml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml deleted file mode 100644 index dab2d88c..00000000 --- a/.github/workflows/tests.yml +++ /dev/null @@ -1,256 +0,0 @@ -name: "🧰 Tests" -run-name: "🧰 Tests" - -on: - push: - branches: - - 'main' - - 'master' - - 'develop' - - 'development' - - '!all-contributors/**' - - pull_request: - workflow_dispatch: - -jobs: - - # --------------------------------------------------------------------------------------- - # JOB > INITIALIZE - # --------------------------------------------------------------------------------------- - - job-initialize-run: - name: >- - 💡 Initialize - runs-on: ubuntu-latest - outputs: - package_version: ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }} - permissions: - contents: write - packages: write - steps: - - - name: "✅ Start" - id: task_initialize_start - run: | - echo "Starting build" - - # --------------------------------------------------------------------------------------- - # Job > Lint > Checkout - # --------------------------------------------------------------------------------------- - - - name: "☑️ Checkout" - id: task_lint_run_checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - # --------------------------------------------------------------------------------------- - # Job > Lint > Setup Node - # --------------------------------------------------------------------------------------- - - - name: "⚙️ Setup Node" - id: task_lint_node_setup - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - - # --------------------------------------------------------------------------------------- - # Job > Lint > NPM Install - # --------------------------------------------------------------------------------------- - - - name: "🕛 NPM › Clean Install" - id: task_lint_npm_install - run: | - npm ci - - # --------------------------------------------------------------------------------------- - # Get version from package.json VERSION value - # --------------------------------------------------------------------------------------- - - - name: "👁️‍🗨️ Get Package Version" - id: task_initialize_package_getversion - run: | - VER=$(cat package.json | jq -r '.version') - echo "PACKAGE_VERSION=$VER" >> $GITHUB_OUTPUT - - - name: "👁️‍🗨️ Found KeeWeb v${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }}" - id: task_initialize_package_getversion_debug - run: | - echo Found KeeWeb ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }} - - # --------------------------------------------------------------------------------------- - # generate guid and uuid - # --------------------------------------------------------------------------------------- - - - name: "🪪 .ENV › Generate" - id: task_initialize_npm_env_generate - continue-on-error: true - run: | - npm run keeweb:generate - - # --------------------------------------------------------------------------------------- - # assign guid and uuid to env variable - # --------------------------------------------------------------------------------------- - - - name: "🪪 .ENV › Get" - id: task_initialize_dotenv_get - continue-on-error: true - uses: falti/dotenv-action@v1 - - # --------------------------------------------------------------------------------------- - # read back guid and uuid - # --------------------------------------------------------------------------------------- - - - name: "🪪 .ENV › Read" - id: task_dotenv_debug_print - continue-on-error: true - run: | - echo "VER: ${{ steps.task_initialize_dotenv_get.outputs.VERSION }}" - echo "GUID: ${{ steps.task_initialize_dotenv_get.outputs.GUID }}" - echo "UUID: ${{ steps.task_initialize_dotenv_get.outputs.UUID }}" - - # --------------------------------------------------------------------------------------- - # JOB > LINT - # --------------------------------------------------------------------------------------- - - job-lint-run: - name: >- - 📚 Lint - runs-on: ubuntu-latest - needs: [ job-initialize-run ] - env: - PACKAGE_VERSION: ${{ needs.job-initialize-run.outputs.package_version }} - steps: - - # --------------------------------------------------------------------------------------- - # Job > Lint > Checkout - # --------------------------------------------------------------------------------------- - - - name: "☑️ Checkout" - id: task_lint_run_checkout - uses: actions/checkout@v4 - - # --------------------------------------------------------------------------------------- - # Job > Lint > Setup Node - # --------------------------------------------------------------------------------------- - - - name: "⚙️ Setup Node" - id: task_lint_node_setup - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - - # --------------------------------------------------------------------------------------- - # Job > Lint > NPM Install - # --------------------------------------------------------------------------------------- - - - name: "🕛 NPM › Clean Install" - id: task_lint_npm_install - run: | - npm ci - - # --------------------------------------------------------------------------------------- - # Job > Lint > Run - # --------------------------------------------------------------------------------------- - - - name: "🕞 NPM › Lint" - id: task_lint_npm_lint - run: | - npm run lint - - # --------------------------------------------------------------------------------------- - # Job > Lint > Generate Coverage - # --------------------------------------------------------------------------------------- - - - name: "🕘 NPM › Coverage" - id: task_lint_npm_coverage - run: | - npm run coverage - - # --------------------------------------------------------------------------------------- - # Job > Lint > Upload Coverage to Codecov - # --------------------------------------------------------------------------------------- - - - name: "📝 Upload Coverage Reports › Codecov" - id: task_lint_codecov_upload - uses: codecov/codecov-action@v4.0.1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - slug: keeweb/keeweb - - # --------------------------------------------------------------------------------------- - # JOB > TESTS - # --------------------------------------------------------------------------------------- - - job-tests-run: - name: >- - 🧪 Tests - runs-on: ubuntu-latest - needs: [ job-initialize-run ] - env: - PACKAGE_VERSION: ${{ needs.job-initialize-run.outputs.package_version }} - steps: - - # --------------------------------------------------------------------------------------- - # Job > Tests > Fix Line Endings - # --------------------------------------------------------------------------------------- - - - name: "🛒 Fix Git Checkout Line Endings" - id: task_tests_git-fixlines - run: | - git config --global core.autocrlf input - - # --------------------------------------------------------------------------------------- - # Job > Tests > Checkout - # --------------------------------------------------------------------------------------- - - - name: "☑️ Checkout" - id: task_tests_run_checkout - uses: actions/checkout@v4 - - # --------------------------------------------------------------------------------------- - # Job > Tests > Setup Node - # --------------------------------------------------------------------------------------- - - - name: "⚙️ Setup Node" - id: task_tests_node_setup - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - - # --------------------------------------------------------------------------------------- - # Job > Tests > NPM Install - # --------------------------------------------------------------------------------------- - - - name: "🕛 NPM › Clean Install" - id: task_tests_npm_install - run: | - npm ci - - # --------------------------------------------------------------------------------------- - # Job > Tests > Run Lint - # --------------------------------------------------------------------------------------- - - - name: "🕘 NPM › Lint" - id: task_tests_npm_lint - run: | - npm run test - - # --------------------------------------------------------------------------------------- - # JOB > COMPLETE - # --------------------------------------------------------------------------------------- - - job-complete-run: - name: >- - ✅ Complete - runs-on: ubuntu-latest - needs: [ job-initialize-run, job-lint-run, job-tests-run ] - env: - PACKAGE_VERSION: ${{ needs.job-initialize-run.outputs.package_version }} - steps: - - - name: "☑️ Tests Complete" - id: task_tests_complete - run: | - echo 'Linting and tests successfully completed for KeeWeb ${{ env.PACKAGE_VERSION }}' diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml new file mode 100644 index 00000000..da0886eb --- /dev/null +++ b/.github/workflows/verify.yaml @@ -0,0 +1,31 @@ +name: Verify +on: + push: + pull_request: + workflow_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + cache: 'npm' + - name: Install npm modules + run: npm ci + - name: Lint + run: npm run lint + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + cache: 'npm' + - name: Install npm modules + run: npm ci + - name: Test + run: npm test