diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 73f3f48a6c0..00000000000 --- a/.prettierignore +++ /dev/null @@ -1,10 +0,0 @@ -entities/ -translations/ -node_modules/ -build/ -dist/ -libs/ -app-android/ -app-ios/ -fdroid-metadata-workaround/ -packages/tutanota-crypto/lib/internal/ diff --git a/.prettierrc.json5 b/.prettierrc.json5 deleted file mode 100644 index 6ff91f7c4ba..00000000000 --- a/.prettierrc.json5 +++ /dev/null @@ -1,7 +0,0 @@ -{ - semi: false, - useTabs: true, - arrowParens: "always", - embeddedLanguageFormatting: "auto", - trailingComma: "all", -} diff --git a/biome.json b/biome.json new file mode 100644 index 00000000000..9a6c56fe145 --- /dev/null +++ b/biome.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", + "organizeImports": { + "enabled": true + }, + "files": { + "ignoreUnknown": true, + "ignore": [ + "./src/api/entities/", + "./src/translations/", + "node_modules/", + "build/", + "dist/", + "libs/", + "app-android/", + "app-ios/", + "fdroid-metadata-workaround/", + "packages/tutanota-crypto/lib/internal/" + ] + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "formatter": { + "enabled": true, + "indentStyle": "tab", + "lineWidth": 160 + }, + "javascript": { + "formatter": { + "enabled": true, + "quoteStyle": "double", + "trailingComma": "all", + "semicolons": "asNeeded", + "arrowParentheses": "always" + } + }, + "json": { + "parser": { + "allowTrailingCommas": false, + "allowComments": false + }, + "formatter": { + "enabled": true, + "indentStyle": "tab", + "lineWidth": 160 + } + } +} diff --git a/buildSrc/buildWebapp.js b/buildSrc/buildWebapp.js index 3f34fb64448..363556a6343 100644 --- a/buildSrc/buildWebapp.js +++ b/buildSrc/buildWebapp.js @@ -158,9 +158,7 @@ async function bundleServiceWorker(bundles, version, minify) { // we still cache native-common even though we don't need it because worker has to statically depend on it .concat( bundles.filter( - (it) => - it.startsWith("translation-en") || - (!it.startsWith("translation") && !it.startsWith("native-main") && !it.startsWith("SearchInPageOverlay")), + (it) => it.startsWith("translation-en") || (!it.startsWith("translation") && !it.startsWith("native-main") && !it.startsWith("SearchInPageOverlay")), ), ) .concat(["images/logo-favicon.png", "images/logo-favicon-152.png", "images/logo-favicon-196.png", "images/font.ttf"]) diff --git a/buildSrc/fetchDictionaries.js b/buildSrc/fetchDictionaries.js index b91fc04689e..a44e4b30bec 100644 --- a/buildSrc/fetchDictionaries.js +++ b/buildSrc/fetchDictionaries.js @@ -56,14 +56,10 @@ async function publishDebPackage() { console.log("create", deb) exitOnFail( - spawnSync( - "/usr/local/bin/fpm", - `${commonArgs} -n tutanota-desktop-dicts -v ${electronVersion} dictionaries/=${target}-desktop/dictionaries`.split(" "), - { - cwd: "build", - stdio: [process.stdin, process.stdout, process.stderr], - }, - ), + spawnSync("/usr/local/bin/fpm", `${commonArgs} -n tutanota-desktop-dicts -v ${electronVersion} dictionaries/=${target}-desktop/dictionaries`.split(" "), { + cwd: "build", + stdio: [process.stdin, process.stdout, process.stderr], + }), ) // copy spell checker dictionaries. diff --git a/buildSrc/getNativeLibrary.js b/buildSrc/getNativeLibrary.js index fbfc1b5224e..86d35d7dde1 100644 --- a/buildSrc/getNativeLibrary.js +++ b/buildSrc/getNativeLibrary.js @@ -18,10 +18,7 @@ if (process.argv[1] === fileURLToPath(import.meta.url)) { .option("-r, --root-dir ", "path to the root of the project", ".") .option("-f, --force-rebuild", "force a rebuild (don't use the cache)") .option("-e, --use-existing", "Use the existing built version (e.g. when using prebuild)") - .option( - "-c, --copy-target ", - "Which node-gyp target (specified in binding.gyp) to copy the output of. Defaults to the same name as the module", - ) + .option("-c, --copy-target ", "Which node-gyp target (specified in binding.gyp) to copy the output of. Defaults to the same name as the module") .action(async (module, opts) => { validateOpts(opts) await cli(module, opts) diff --git a/buildSrc/notarize.cjs b/buildSrc/notarize.cjs index 7a5bdaa9e72..ebd836ffe0d 100644 --- a/buildSrc/notarize.cjs +++ b/buildSrc/notarize.cjs @@ -1,21 +1,21 @@ // this is commonjs because it's called by electron-builder -const {notarize} = require('@electron/notarize'); +const { notarize } = require("@electron/notarize") exports.default = async function notarizing(context) { - const {electronPlatformName, appOutDir} = context; - if (electronPlatformName !== 'darwin') { - return; + const { electronPlatformName, appOutDir } = context + if (electronPlatformName !== "darwin") { + return } - const appName = context.packager.appInfo.productFilename; + const appName = context.packager.appInfo.productFilename console.log(`Notarizing ${appName} teamId:${process.env.APPLETEAMID}`) return await notarize({ - appBundleId: 'de.tutao.tutanota', + appBundleId: "de.tutao.tutanota", appPath: `${appOutDir}/${appName}.app`, appleId: process.env.APPLEID, appleIdPassword: process.env.APPLEIDPASS, teamId: process.env.APPLETEAMID, tool: "notarytool", // notarytool is part of Xcode 13, default is "legacy", notarytool is much faster - }); -}; \ No newline at end of file + }) +} diff --git a/buildSrc/releaseNotes.js b/buildSrc/releaseNotes.js index 08f71af21e2..d5caf1dc7a9 100644 --- a/buildSrc/releaseNotes.js +++ b/buildSrc/releaseNotes.js @@ -10,9 +10,7 @@ if (wasRunFromCli) { program .requiredOption("--milestone ", "Milestone to reference") .addOption( - new Option("--platform ", "label filter for the issues to include in the notes") - .choices(["android", "ios", "desktop", "web"]) - .default("web"), + new Option("--platform ", "label filter for the issues to include in the notes").choices(["android", "ios", "desktop", "web"]).default("web"), ) .action(async (options) => { await renderReleaseNotes(options) diff --git a/buildSrc/winsigner.cjs b/buildSrc/winsigner.cjs index 6a30b6864ce..269d7da9d65 100644 --- a/buildSrc/winsigner.cjs +++ b/buildSrc/winsigner.cjs @@ -1,6 +1,6 @@ -const path = require('path') +const path = require("path") const fs = require("fs-extra") -const spawn = require('child_process').spawn +const spawn = require("child_process").spawn /** * sign a given file either with a private key taken from a pkcs12 signing certificate @@ -10,9 +10,9 @@ const spawn = require('child_process').spawn * argument names may be fixed by electron-builder */ function signer({ - path: pathToSign, // path to the file to sign (string) - hash: hashAlgorithm // hash algorithm to use (string, defaults to "sha256") - }) { + path: pathToSign, // path to the file to sign (string) + hash: hashAlgorithm, // hash algorithm to use (string, defaults to "sha256") +}) { const ext = path.extname(pathToSign) // /thing/thong.AppImage -> /thing/thong-unsigned.AppImage const unsignedFileName = pathToSign.slice(0, pathToSign.length - ext.length) + "-unsigned" + ext @@ -29,12 +29,18 @@ function getSelfSignedArgs(unsignedFileName, hash, signedFileOutPath) { return [ "sign", - "-in", unsignedFileName, - "-out", signedFileOutPath, - "-pkcs12", certificateFile, - "-h", hash ? hash : "sha256", - "-t", "http://timestamp.comodoca.com/authenticode", - "-n", "tutanota-desktop" + "-in", + unsignedFileName, + "-out", + signedFileOutPath, + "-pkcs12", + certificateFile, + "-h", + hash ? hash : "sha256", + "-t", + "http://timestamp.comodoca.com/authenticode", + "-n", + "tutanota-desktop", ] } @@ -55,29 +61,39 @@ function getHsmArgs(unsignedFileName, hash, signedFileOutPath) { // http://timestamp.sectigo.com if (!certificateFile) { - console.error("ERROR: " + signedFileOutPath.split(path.sep).pop() + "\" not signed! The NSIS installer may not work.") + console.error("ERROR: " + signedFileOutPath.split(path.sep).pop() + '" not signed! The NSIS installer may not work.') console.log("\t• set WIN_CSC_FILE env var") throw new Error(signedFileOutPath) } if (!hsmPin) { - console.log("ERROR: " + signedFileOutPath.split(path.sep).pop() + "\" not signed! The NSIS installer may not work.") + console.log("ERROR: " + signedFileOutPath.split(path.sep).pop() + '" not signed! The NSIS installer may not work.') console.log("\t• set HSM_USER_PIN env var") throw new Error(signedFileOutPath) } return [ "sign", - "-in", unsignedFileName, - "-out", signedFileOutPath, - "-pkcs11engine", "/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so", - "-pkcs11module", "/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so", - "-certs", certificateFile, - "-key", "11", // this is the key corresponding to the Windows authenticode codesigning certificate - "-pass", hsmPin, - "-h", hash ? hash : "sha256", - "-t", "http://timestamp.comodoca.com/authenticode", - "-n", "tutanota-desktop" + "-in", + unsignedFileName, + "-out", + signedFileOutPath, + "-pkcs11engine", + "/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so", + "-pkcs11module", + "/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so", + "-certs", + certificateFile, + "-key", + "11", // this is the key corresponding to the Windows authenticode codesigning certificate + "-pass", + hsmPin, + "-h", + hash ? hash : "sha256", + "-t", + "http://timestamp.comodoca.com/authenticode", + "-n", + "tutanota-desktop", ] } @@ -85,7 +101,7 @@ function signWithArgs(commandArguments, signedFileOutPath, unsignedFileName) { const command = "/usr/bin/osslsigncode" if (!fs.existsSync(command)) { - console.log("ERROR: " + signedFileOutPath.split(path.sep).pop() + "\" not signed! The NSIS installer may not work.") + console.log("ERROR: " + signedFileOutPath.split(path.sep).pop() + '" not signed! The NSIS installer may not work.') console.log("\t• install osslsigncode") return Promise.reject(new Error(signedFileOutPath)) } @@ -94,11 +110,11 @@ function signWithArgs(commandArguments, signedFileOutPath, unsignedFileName) { //console.log(`spawning "${command} ${commandArguments.join(" ")}"`) let child = spawn(command, commandArguments, { detached: false, - stdio: ['ignore', 'inherit', 'inherit'], + stdio: ["ignore", "inherit", "inherit"], }) return new Promise((resolve, reject) => { - child.on('close', (exitCode) => { + child.on("close", (exitCode) => { if (exitCode !== 0) { reject(exitCode) } else { diff --git a/githooks/pre-commit b/githooks/pre-commit index 583ef2705f2..8a5410c0199 100755 --- a/githooks/pre-commit +++ b/githooks/pre-commit @@ -2,9 +2,17 @@ # pre-commit hook to check & fix formatting. does not deal with spaces in paths. -# get staged files exclude deleted files | only match what prettier matches | transform newline & whitespace into spaces -CHG=$(git diff --name-only --diff-filter=d --cached | grep -E ".*\.(ts|js|json|json5)$" | tr [:space:] " ") -# run prettier fix on them -npx prettier -w $CHG > /dev/null +# get staged files exclude deleted files | only match what biome matches | remove ignored files from the list | transform newline & whitespace into spaces +CHG=$(git diff --name-only --diff-filter=d --cached | grep -E ".*\.(ts|js|json|json5)$" | grep -vE 'package\.json|package-lock\.json|tsconfig\.json' | tr [:space:] " ") +# exit if no files were added +REM=$(echo "$CHG" | wc -w) +if [ $REM -eq 0 ]; then + exit 0 +else + echo formatting $REM files +fi + +# run biome on them (if there are some left) +npx @biomejs/biome format --write $CHG > /dev/null # re-add the fixed files git add $CHG > /dev/null diff --git a/ipc-schema/facades/SearchTextInAppFacade.json b/ipc-schema/facades/SearchTextInAppFacade.json index 7cc93f87c28..efd48e9bd63 100644 --- a/ipc-schema/facades/SearchTextInAppFacade.json +++ b/ipc-schema/facades/SearchTextInAppFacade.json @@ -7,12 +7,7 @@ "methods": { "findInPage": { "doc": "send a search request to the native search api on the current window", - "arg": [ - { "searchTerm": "string" }, - { "forward": "boolean" }, - { "matchCase": "boolean" }, - { "findNext": "boolean" } - ], + "arg": [{ "searchTerm": "string" }, { "forward": "boolean" }, { "matchCase": "boolean" }, { "findNext": "boolean" }], "ret": "Result?" }, "stopFindInPage": { diff --git a/package-lock.json b/package-lock.json index c73d3b7fbd2..cf9c7f74b7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "winreg": "1.2.4" }, "devDependencies": { + "@biomejs/biome": "1.5.3", "@electron/notarize": "2.2.0", "@octokit/auth-token": "2.5.0", "@octokit/rest": "18.12.0", @@ -76,7 +77,6 @@ "jsdom": "22.1.0", "node-gyp": "9.4.0", "octokit": "1.3.0", - "prettier": "2.8.1", "rollup": "4.9.4", "testdouble": "3.18.0", "typescript": "5.3.3", @@ -93,18 +93,16 @@ }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/code-frame": { "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -115,9 +113,8 @@ }, "node_modules/@babel/code-frame/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -127,9 +124,8 @@ }, "node_modules/@babel/code-frame/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -141,42 +137,37 @@ }, "node_modules/@babel/code-frame/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/code-frame/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/code-frame/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/code-frame/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -186,18 +177,16 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -209,9 +198,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -221,9 +209,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -235,42 +222,37 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -278,11 +260,165 @@ "node": ">=4" } }, + "node_modules/@biomejs/biome": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.5.3.tgz", + "integrity": "sha512-yvZCa/g3akwTaAQ7PCwPWDCkZs3Qa5ONg/fgOUT9e6wAWsPftCjLQFPXBeGxPK30yZSSpgEmRCfpGTmVbUjGgg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "1.5.3", + "@biomejs/cli-darwin-x64": "1.5.3", + "@biomejs/cli-linux-arm64": "1.5.3", + "@biomejs/cli-linux-arm64-musl": "1.5.3", + "@biomejs/cli-linux-x64": "1.5.3", + "@biomejs/cli-linux-x64-musl": "1.5.3", + "@biomejs/cli-win32-arm64": "1.5.3", + "@biomejs/cli-win32-x64": "1.5.3" + } + }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.5.3.tgz", + "integrity": "sha512-ImU7mh1HghEDyqNmxEZBoMPr8SxekkZuYcs+gynKlNW+TALQs7swkERiBLkG9NR0K1B3/2uVzlvYowXrmlW8hw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.5.3.tgz", + "integrity": "sha512-vCdASqYnlpq/swErH7FD6nrFz0czFtK4k/iLgj0/+VmZVjineFPgevOb+Sr9vz0tk0GfdQO60bSpI74zU8M9Dw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.5.3.tgz", + "integrity": "sha512-cupBQv0sNF1OKqBfx7EDWMSsKwRrBUZfjXawT4s6hKV6ALq7p0QzWlxr/sDmbKMLOaLQtw2Qgu/77N9rm+f9Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.3.tgz", + "integrity": "sha512-DYuMizUYUBYfS0IHGjDrOP1RGipqWfMGEvNEJ398zdtmCKLXaUvTimiox5dvx4X15mBK5M2m8wgWUgOP1giUpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.5.3.tgz", + "integrity": "sha512-YQrSArQvcv4FYsk7Q91Yv4uuu5F8hJyORVcv3zsjCLGkjIjx2RhjYLpTL733SNL7v33GmOlZY0eFR1ko38tuUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.3.tgz", + "integrity": "sha512-UUHiAnlDqr2Y/LpvshBFhUYMWkl2/Jn+bi3U6jKuav0qWbbBKU/ByHgR4+NBxpKBYoCtWxhnmatfH1bpPIuZMw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.5.3.tgz", + "integrity": "sha512-HxatYH7vf/kX9nrD+pDYuV2GI9GV8EFo6cfKkahAecTuZLPxryHx1WEfJthp5eNsE0+09STGkKIKjirP0ufaZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.*" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.5.3.tgz", + "integrity": "sha512-fMvbSouZEASU7mZH8SIJSANDm5OqsjgtVXlbUqxwed6BP7uuHRSs396Aqwh2+VoW8fwTpp6ybIUoC9FrzB0kyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.*" + } + }, "node_modules/@develar/schema-utils": { "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" @@ -297,9 +433,8 @@ }, "node_modules/@electron/asar": { "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.8.tgz", - "integrity": "sha512-cmskk5M06ewHMZAplSiF4AlME3IrnnZhKnWbtwKVLRkdJkKyUVjMLhDIiPIx/+6zQWVlKX/LtmK9xDme7540Sg==", "dev": true, + "license": "MIT", "dependencies": { "commander": "^5.0.0", "glob": "^7.1.6", @@ -314,9 +449,8 @@ }, "node_modules/@electron/asar/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -324,18 +458,16 @@ }, "node_modules/@electron/asar/node_modules/commander": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/@electron/asar/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -353,9 +485,8 @@ }, "node_modules/@electron/asar/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -365,8 +496,7 @@ }, "node_modules/@electron/get": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "license": "MIT", "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", @@ -385,8 +515,7 @@ }, "node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -398,33 +527,29 @@ }, "node_modules/@electron/get/node_modules/jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/@electron/get/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@electron/get/node_modules/universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/@electron/notarize": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.2.0.tgz", - "integrity": "sha512-Sf7RG47rafeGuUm+kLEbTXMN8XZeYXN70dMBstrcgiykxCq3SLl1uqxFWndxSI1LfMqv4Eq9PTDHLPwiya31Kg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.1", @@ -436,9 +561,8 @@ }, "node_modules/@electron/notarize/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -451,9 +575,8 @@ }, "node_modules/@electron/osx-sign": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", - "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "compare-version": "^0.1.2", "debug": "^4.3.4", @@ -472,9 +595,8 @@ }, "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -484,9 +606,8 @@ }, "node_modules/@electron/universal": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz", - "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==", "dev": true, + "license": "MIT", "dependencies": { "@electron/asar": "^3.2.1", "@malept/cross-spawn-promise": "^1.1.0", @@ -502,388 +623,48 @@ }, "node_modules/@electron/universal/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/@electron/universal/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/universal/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.15.tgz", - "integrity": "sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.15.tgz", - "integrity": "sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.15.tgz", - "integrity": "sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.15.tgz", - "integrity": "sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.15.tgz", - "integrity": "sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.15.tgz", - "integrity": "sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.15.tgz", - "integrity": "sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.15.tgz", - "integrity": "sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.15.tgz", - "integrity": "sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.15.tgz", - "integrity": "sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.15.tgz", - "integrity": "sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.15.tgz", - "integrity": "sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.15.tgz", - "integrity": "sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.15.tgz", - "integrity": "sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.15.tgz", - "integrity": "sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.15.tgz", - "integrity": "sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.15.tgz", - "integrity": "sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.15.tgz", - "integrity": "sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.15.tgz", - "integrity": "sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.15.tgz", - "integrity": "sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.15.tgz", - "integrity": "sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==", - "cpu": [ - "ia32" - ], + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "3.1.2", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/@esbuild/win32-x64": { + "node_modules/@esbuild/linux-x64": { "version": "0.17.15", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.15.tgz", - "integrity": "sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">=12" @@ -891,9 +672,8 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -906,18 +686,16 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -938,9 +716,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -948,9 +725,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -960,26 +736,23 @@ }, "node_modules/@eslint/js": { "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@fastify/busboy": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -991,9 +764,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1001,9 +773,8 @@ }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1013,9 +784,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1026,15 +796,13 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1049,9 +817,8 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1061,9 +828,8 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1073,15 +839,13 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1096,9 +860,8 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1111,9 +874,8 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1128,9 +890,8 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1142,27 +903,24 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -1170,15 +928,13 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1186,8 +942,6 @@ }, "node_modules/@malept/cross-spawn-promise": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", "dev": true, "funding": [ { @@ -1199,6 +953,7 @@ "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" } ], + "license": "Apache-2.0", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -1208,9 +963,8 @@ }, "node_modules/@malept/flatpak-bundler": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.0", @@ -1223,9 +977,8 @@ }, "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -1238,8 +991,7 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1250,16 +1002,14 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1270,9 +1020,8 @@ }, "node_modules/@npmcli/fs": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -1282,9 +1031,8 @@ }, "node_modules/@octokit/app": { "version": "12.0.7", - "resolved": "https://registry.npmjs.org/@octokit/app/-/app-12.0.7.tgz", - "integrity": "sha512-NqgLlaaf7Yy1s5ghhiiBRGzstICpBYnVX5ce3Klk3iKaGeXJDBLVyrJ6e6sYOiTXolFK56Nx5QWS6oUBgP6rSw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-app": "^3.3.0", "@octokit/auth-unauthenticated": "^2.0.4", @@ -1297,9 +1045,8 @@ }, "node_modules/@octokit/auth-app": { "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-3.6.1.tgz", - "integrity": "sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-app": "^4.3.0", "@octokit/auth-oauth-user": "^1.2.3", @@ -1315,9 +1062,8 @@ }, "node_modules/@octokit/auth-oauth-app": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-4.3.4.tgz", - "integrity": "sha512-OYOTSSINeUAiLMk1uelaGB/dEkReBqHHr8+hBejzMG4z1vA4c7QSvDAS0RVZSr4oD4PEUPYFzEl34K7uNrXcWA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^3.1.1", "@octokit/auth-oauth-user": "^2.0.0", @@ -1330,9 +1076,8 @@ }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", - "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^4.0.0", "@octokit/oauth-methods": "^2.0.0", @@ -1347,9 +1092,8 @@ }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/auth-oauth-device": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", - "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-methods": "^2.0.0", "@octokit/request": "^6.0.0", @@ -1362,9 +1106,8 @@ }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": { "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1379,18 +1122,16 @@ }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/auth-oauth-user/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1402,24 +1143,21 @@ }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": { "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", @@ -1431,18 +1169,16 @@ }, "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-device": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-3.1.4.tgz", - "integrity": "sha512-6sHE/++r+aEFZ/BKXOGPJcH/nbgbBjS1A4CHfq/PbPEwb0kZEt43ykW98GBO/rYBPAYaNpCPvXfGwzgR9yMCXg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-methods": "^2.0.0", "@octokit/request": "^6.0.0", @@ -1452,9 +1188,8 @@ }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1466,24 +1201,21 @@ }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": { "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": { "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1498,9 +1230,8 @@ }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", @@ -1512,27 +1243,24 @@ }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/auth-oauth-user": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-1.3.0.tgz", - "integrity": "sha512-3QC/TAdk7onnxfyZ24BnJRfZv8TRzQK7SEFUS9vLng4Vv6Hv6I64ujdk/CUkREec8lhrwU764SZ/d+yrjjqhaQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^3.1.1", "@octokit/oauth-methods": "^1.1.0", @@ -1544,9 +1272,8 @@ }, "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/oauth-methods": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz", - "integrity": "sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-authorization-url": "^4.3.1", "@octokit/request": "^5.4.14", @@ -1557,18 +1284,16 @@ }, "node_modules/@octokit/auth-token": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3" } }, "node_modules/@octokit/auth-unauthenticated": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-2.1.0.tgz", - "integrity": "sha512-+baofLfSL0CAv3CfGQ9rxiZZQEX8VNJMGuuS4PgrMRBUL52Ho5+hQYb63UJQshw7EXYMPDZxbXznc0y33cbPqw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request-error": "^2.1.0", "@octokit/types": "^6.0.3" @@ -1576,9 +1301,8 @@ }, "node_modules/@octokit/core": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", @@ -1591,9 +1315,8 @@ }, "node_modules/@octokit/endpoint": { "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", @@ -1602,9 +1325,8 @@ }, "node_modules/@octokit/graphql": { "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request": "^5.6.0", "@octokit/types": "^6.0.3", @@ -1613,9 +1335,8 @@ }, "node_modules/@octokit/oauth-app": { "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-3.7.1.tgz", - "integrity": "sha512-NTmFuB4jcwnxj7xlipHuuX9DRprfb7vHGSBIizIygx2u8LlNYqGvHYWNgw3TpxRxYrFA+SMIfjoVgrtnYpdbrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-app": "^4.0.0", "@octokit/auth-oauth-user": "^1.3.0", @@ -1633,9 +1354,8 @@ }, "node_modules/@octokit/oauth-app/node_modules/@octokit/oauth-methods": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz", - "integrity": "sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-authorization-url": "^4.3.1", "@octokit/request": "^5.4.14", @@ -1646,15 +1366,13 @@ }, "node_modules/@octokit/oauth-authorization-url": { "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-4.3.3.tgz", - "integrity": "sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/oauth-methods": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", - "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-authorization-url": "^5.0.0", "@octokit/request": "^6.2.3", @@ -1668,9 +1386,8 @@ }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -1682,24 +1399,21 @@ }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/oauth-authorization-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", - "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": { "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": { "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -1714,9 +1428,8 @@ }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/request-error": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", @@ -1728,24 +1441,21 @@ }, "node_modules/@octokit/oauth-methods/node_modules/@octokit/types": { "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/openapi-types": { "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.40.0" }, @@ -1755,18 +1465,16 @@ }, "node_modules/@octokit/plugin-request-log": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, + "license": "MIT", "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.39.0", "deprecation": "^2.3.1" @@ -1777,9 +1485,8 @@ }, "node_modules/@octokit/plugin-retry": { "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3", "bottleneck": "^2.15.3" @@ -1787,9 +1494,8 @@ }, "node_modules/@octokit/plugin-throttling": { "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", - "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.1", "bottleneck": "^2.15.3" @@ -1800,9 +1506,8 @@ }, "node_modules/@octokit/request": { "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^6.0.1", "@octokit/request-error": "^2.1.0", @@ -1814,9 +1519,8 @@ }, "node_modules/@octokit/request-error": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", @@ -1825,9 +1529,8 @@ }, "node_modules/@octokit/rest": { "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/core": "^3.5.1", "@octokit/plugin-paginate-rest": "^2.16.8", @@ -1837,18 +1540,16 @@ }, "node_modules/@octokit/types": { "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^12.11.0" } }, "node_modules/@octokit/webhooks": { "version": "9.26.3", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.3.tgz", - "integrity": "sha512-DLGk+gzeVq5oK89Bo601txYmyrelMQ7Fi5EnjHE0Xs8CWicy2xkmnJMKptKJrBJpstqbd/9oeDFi/Zj2pudBDQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request-error": "^2.0.2", "@octokit/webhooks-methods": "^2.0.0", @@ -1858,21 +1559,18 @@ }, "node_modules/@octokit/webhooks-methods": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz", - "integrity": "sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/webhooks-types": { "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", - "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -1880,9 +1578,8 @@ }, "node_modules/@rollup/plugin-commonjs": { "version": "25.0.7", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", - "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -1905,9 +1602,8 @@ }, "node_modules/@rollup/plugin-json": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", - "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.1.0" }, @@ -1925,9 +1621,8 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -1950,9 +1645,8 @@ }, "node_modules/@rollup/plugin-terser": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", - "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", "dev": true, + "license": "MIT", "dependencies": { "serialize-javascript": "^6.0.1", "smob": "^1.0.0", @@ -1972,9 +1666,8 @@ }, "node_modules/@rollup/plugin-typescript": { "version": "11.1.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz", - "integrity": "sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "resolve": "^1.22.1" @@ -1998,9 +1691,8 @@ }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -2018,118 +1710,13 @@ } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.4.tgz", - "integrity": "sha512-ub/SN3yWqIv5CWiAZPHVS1DloyZsJbtXmX4HxUTIpS0BHm9pW5iYBo2mIZi+hE3AeiTzHz33blwSnhdUo+9NpA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.4.tgz", - "integrity": "sha512-ehcBrOR5XTl0W0t2WxfTyHCR/3Cq2jfb+I4W+Ch8Y9b5G+vbAecVv0Fx/J1QKktOrgUYsIKxWAKgIpvw56IFNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.4.tgz", - "integrity": "sha512-1fzh1lWExwSTWy8vJPnNbNM02WZDS8AW3McEOb7wW+nPChLKf3WG2aG7fhaUmfX5FKw9zhsF5+MBwArGyNM7NA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.4.tgz", - "integrity": "sha512-Gc6cukkF38RcYQ6uPdiXi70JB0f29CwcQ7+r4QpfNpQFVHXRd0DfWFidoGxjSx1DwOETM97JPz1RXL5ISSB0pA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.4.tgz", - "integrity": "sha512-g21RTeFzoTl8GxosHbnQZ0/JkuFIB13C3T7Y0HtKzOXmoHhewLbVTFBQZu+z5m9STH6FZ7L/oPgU4Nm5ErN2fw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.4.tgz", - "integrity": "sha512-TVYVWD/SYwWzGGnbfTkrNpdE4HON46orgMNHCivlXmlsSGQOx/OHHYiQcMIOx38/GWgwr/po2LBn7wypkWw/Mg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.4.tgz", - "integrity": "sha512-XcKvuendwizYYhFxpvQ3xVpzje2HHImzg33wL9zvxtj77HvPStbSGI9czrdbfrf8DGMcNNReH9pVZv8qejAQ5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.4.tgz", - "integrity": "sha512-LFHS/8Q+I9YA0yVETyjonMJ3UA+DczeBd/MqNEzsGSTdNvSJa1OJZcSH8GiXLvcizgp9AlHs2walqRcqzjOi3A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.4.tgz", - "integrity": "sha512-dIYgo+j1+yfy81i0YVU5KnQrIJZE8ERomx17ReU4GREjGtDW4X+nvkBak2xAUpyqLs4eleDSj3RrV72fQos7zw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -2137,60 +1724,19 @@ }, "node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.4.tgz", - "integrity": "sha512-RoaYxjdHQ5TPjaPrLsfKqR3pakMr3JGqZ+jZM0zP2IkDtsGa4CqYaWSfQmZVgFUCgLrTnzX+cnHS3nfl+kB6ZQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.4.tgz", - "integrity": "sha512-T8Q3XHV+Jjf5e49B4EAaLKV74BbX7/qYBRQ8Wop/+TyyU0k+vSjiLVSHNWdVd1goMjZcbhDmYZUYW5RFqkBNHQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.4.tgz", - "integrity": "sha512-z+JQ7JirDUHAsMecVydnBPWLwJjbppU+7LZjffGf+Jvrxq+dVjIE7By163Sc9DKc3ADSU50qPVw0KonBS+a+HQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.4.tgz", - "integrity": "sha512-LfdGXCV9rdEify1oxlN9eamvDSjv9md9ZVMAbNHA87xqIfFCxImxan9qZ8+Un54iK2nnqPlbnSi4R54ONtbWBw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@sindresorhus/is": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -2200,8 +1746,7 @@ }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -2211,9 +1756,8 @@ }, "node_modules/@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -2228,8 +1772,7 @@ }, "node_modules/@tutao/oxmsg": { "version": "0.0.9-beta.0", - "resolved": "https://registry.npmjs.org/@tutao/oxmsg/-/oxmsg-0.0.9-beta.0.tgz", - "integrity": "sha512-h091LekQ4ZjxBsW1n5ZDZlYdSdmWHIc8r51L2NtPoQvq6vHl4J04Pm2xlfk1YeMHGnzsdKhniPnnHekwzVa6/Q==", + "license": "MIT", "dependencies": { "address-rfc2822": "^2.0.6", "bytebuffer": "^5.0.1", @@ -2260,23 +1803,20 @@ }, "node_modules/@types/aws-lambda": { "version": "8.10.133", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.133.tgz", - "integrity": "sha512-sr852MAL/79rjDelXP6ZuJ6GwOvXIRrFAoC8a+w91mZ5XR71CuzSgo1d0+pG1qgfPhjFgaibu7SWaoC5BA7pyQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/better-sqlite3": { "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.4.2.tgz", - "integrity": "sha512-HUXWMOmRgOrXJ0SKt6kxqUaZtGkr0HCuaEt/76LojT6bkTu0lb0uhr3K1su9T09mskDKyQwNMvT7WithFN10PQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/body-parser": { "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -2284,14 +1824,12 @@ }, "node_modules/@types/btoa-lite": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", - "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cacheable-request": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -2301,41 +1839,36 @@ }, "node_modules/@types/connect": { "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/debug": { "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/dompurify": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.2.tgz", - "integrity": "sha512-YBL4ziFebbbfQfH5mlC+QTJsvh0oJUrWbmxKMyEdL7emlHJqGR2Qb34TEFKj+VCayBvjKy3xczMFNhugThUsfQ==", + "license": "MIT", "dependencies": { "@types/trusted-types": "*" } }, "node_modules/@types/estree": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -2345,9 +1878,8 @@ }, "node_modules/@types/express-serve-static-core": { "version": "4.17.43", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", - "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -2357,115 +1889,98 @@ }, "node_modules/@types/fs-extra": { "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/jsonwebtoken": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", - "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/keyv": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/linkifyjs": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/linkifyjs/-/linkifyjs-2.1.4.tgz", - "integrity": "sha512-UuF0hyWNnLTT4xNJdrQx6OWYMNlPRBtt3fKCaROIx48boQyXkQ4YDDwTEQNi9mlsRX0Hpc6AnFKkDZ6IXkxD4g==", + "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/luxon": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.2.0.tgz", - "integrity": "sha512-lGmaGFoaXHuOLXFvuju2bfvZRqxAqkHPx9Y9IQdQABrinJJshJwfNCKV+u7rR3kJbiqfTF/NhOkcxxAFrObyaA==" + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/minimist": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + "license": "MIT" }, "node_modules/@types/mithril": { "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.0.11.tgz", - "integrity": "sha512-2tYTImXc7RzWkPpgcbnSKpV46DQI4Bm8CfgmkrIbst8MJlX6d8hdgy2yQCEf5NZYLGNyK4xbzb4rr8VPmk0iXQ==" + "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", + "version": "20.11.16", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-forge": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.0.0.tgz", - "integrity": "sha512-h0bgwPKq5u99T9Gor4qtV1lCZ41xNkai0pie1n/a2mh2/4+jENWOlo7AJ4YKxTZAnSZ8FRurUpdIN7ohaPPuHA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/pako": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.3.tgz", - "integrity": "sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/plist": { "version": "3.0.5", @@ -2479,36 +1994,30 @@ }, "node_modules/@types/prop-types": { "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" + "license": "MIT" }, "node_modules/@types/ps-tree": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@types/ps-tree/-/ps-tree-1.1.6.tgz", - "integrity": "sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/qrcode-svg": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/qrcode-svg/-/qrcode-svg-1.1.1.tgz", - "integrity": "sha512-uTuEgFXMknpun//Jj6b1R8T8LiMi9fNpH+cnhZr4b7col2HHTMmjYfm/WOZ7nzjuGpk+oTrpHhePe1qlWtHWTA==" + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/react": { - "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", + "version": "18.2.53", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -2517,34 +2026,29 @@ }, "node_modules/@types/resolve": { "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/responselike": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/scheduler": { "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.7.tgz", - "integrity": "sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==", - "dev": true + "version": "7.5.6", + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -2552,9 +2056,8 @@ }, "node_modules/@types/serve-static": { "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/mime": "*", @@ -2563,13 +2066,11 @@ }, "node_modules/@types/systemjs": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@types/systemjs/-/systemjs-6.1.1.tgz", - "integrity": "sha512-d1M6eDKBGWx7RbYy295VEFoOF9YDJkPI959QYnmzcmeaV+SP4D0xV7dEh3sN5XF3GvO3PhGzm+17Z598nvHQuQ==" + "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + "license": "MIT" }, "node_modules/@types/verror": { "version": "1.10.9", @@ -2579,18 +2080,15 @@ }, "node_modules/@types/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", - "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==" + "license": "MIT" }, "node_modules/@types/winreg": { "version": "1.2.31", - "resolved": "https://registry.npmjs.org/@types/winreg/-/winreg-1.2.31.tgz", - "integrity": "sha512-SDatEMEtQ1cJK3esIdH6colduWBP+42Xw9Guq1sf/N6rM3ZxgljBduvZOwBsxRps/k5+Wwf5HJun6pH8OnD2gg==" + "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -2598,9 +2096,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz", - "integrity": "sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.61.0", @@ -2632,9 +2129,8 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", @@ -2660,9 +2156,8 @@ }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@typescript-eslint/types": "5.62.0", @@ -2678,9 +2173,8 @@ }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@typescript-eslint/types": "5.62.0", @@ -2696,9 +2190,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", - "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.61.0", "@typescript-eslint/visitor-keys": "5.61.0" @@ -2713,9 +2206,8 @@ }, "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2726,9 +2218,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz", - "integrity": "sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.61.0", "@typescript-eslint/utils": "5.61.0", @@ -2753,9 +2244,8 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2766,9 +2256,8 @@ }, "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", - "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.61.0", "@typescript-eslint/visitor-keys": "5.61.0", @@ -2793,9 +2282,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2807,9 +2295,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "@typescript-eslint/types": "5.62.0", @@ -2835,9 +2322,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@typescript-eslint/types": "5.62.0", @@ -2853,9 +2339,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.61.0.tgz", - "integrity": "sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -2879,9 +2364,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2892,9 +2376,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", - "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.61.0", "@typescript-eslint/visitor-keys": "5.61.0", @@ -2919,9 +2402,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", - "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.61.0", "eslint-visitor-keys": "^3.3.0" @@ -2936,9 +2418,8 @@ }, "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2949,7 +2430,7 @@ }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", - "resolved": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-ast.tgz", + "resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-ast.tgz", "integrity": "sha512-cY3aYc1FhZdiE9wUn474Kw+l288fmWZsrfLv8fR8/5q3rcUlYO+YoHewwPDV3L0sJBh48qCKORA/+PqQG7rDYA==", "dev": true, "license": "MIT", @@ -3067,7 +2548,7 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.1", - "resolved": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wast-printer.tgz", + "resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-wast-printer.tgz", "integrity": "sha512-WFuDIpmoSfU0Du2GA/UGluMJLgKWALsGPcvkDFg3GDgxdDyva1hIW+8K6frSbv/YTwo50gBhW5dw4OB7cr6T5Q==", "dev": true, "license": "MIT", @@ -3078,49 +2559,41 @@ }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/7zip-bin": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/abab": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/accepts": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -3131,9 +2604,8 @@ }, "node_modules/acorn": { "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3143,34 +2615,30 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/address-rfc2822": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/address-rfc2822/-/address-rfc2822-2.1.0.tgz", - "integrity": "sha512-TwoTmJcYzS+CLw/h+AO3zOzRFGSMNowmp/tlOXcYPygkr2vMAWLs0pDajJiJK/dtVPpFx1utw/CzzLfmmtkagw==", + "license": "MIT", "dependencies": { "email-addresses": "^4.0.0" } }, "node_modules/adler-32": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", - "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", "engines": { "node": ">=0.8" } }, "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -3180,9 +2648,8 @@ }, "node_modules/agentkeepalive": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dev": true, + "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -3192,9 +2659,8 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -3205,9 +2671,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "devOptional": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3221,27 +2686,24 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "devOptional": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3254,9 +2716,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3267,15 +2728,13 @@ }, "node_modules/app-builder-bin": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", - "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/app-builder-lib": { "version": "24.9.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.9.1.tgz", - "integrity": "sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==", "dev": true, + "license": "MIT", "dependencies": { "@develar/schema-utils": "~2.6.5", "@electron/notarize": "2.1.0", @@ -3312,9 +2771,8 @@ }, "node_modules/app-builder-lib/node_modules/@electron/notarize": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", - "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.1", @@ -3326,9 +2784,8 @@ }, "node_modules/app-builder-lib/node_modules/@electron/notarize/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -3341,9 +2798,8 @@ }, "node_modules/app-builder-lib/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3355,15 +2811,13 @@ }, "node_modules/aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/are-we-there-yet": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -3374,9 +2828,8 @@ }, "node_modules/are-we-there-yet/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3388,20 +2841,17 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "license": "Python-2.0" }, "node_modules/array-flatten": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3426,48 +2876,42 @@ }, "node_modules/async": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/async-exit-hook": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/author-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", - "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/available-typed-arrays": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">= 0.4" @@ -3478,9 +2922,8 @@ }, "node_modules/aws-lambda": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", - "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "aws-sdk": "^2.814.0", @@ -3494,9 +2937,8 @@ }, "node_modules/aws-lambda/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "sprintf-js": "~1.0.2" @@ -3504,16 +2946,14 @@ }, "node_modules/aws-lambda/node_modules/commander": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/aws-lambda/node_modules/js-yaml": { "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "argparse": "^1.0.7", @@ -3525,16 +2965,14 @@ }, "node_modules/aws-lambda/node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, + "license": "BSD-3-Clause", "optional": true }, "node_modules/aws-sdk": { - "version": "2.1556.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1556.0.tgz", - "integrity": "sha512-p3SOYdG37GlTAR1+3HVqV2gVahTb7bInPuLEzxJaK709yPjjgSQQJ0zsnn8rF9UpcTNElYtWRY5vLRmwp3TTcQ==", + "version": "2.1550.0", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "buffer": "4.9.2", @@ -3554,9 +2992,8 @@ }, "node_modules/aws-sdk/node_modules/buffer": { "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "base64-js": "^1.0.2", @@ -3566,23 +3003,20 @@ }, "node_modules/aws-sdk/node_modules/ieee754": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true, + "license": "BSD-3-Clause", "optional": true }, "node_modules/aws-sdk/node_modules/sax": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", "dev": true, + "license": "ISC", "optional": true }, "node_modules/aws-sdk/node_modules/uuid": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", "dev": true, + "license": "MIT", "optional": true, "bin": { "uuid": "dist/bin/uuid" @@ -3590,13 +3024,10 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -3610,13 +3041,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/before-after-hook": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/better-sqlite3": { "name": "@tutao/better-sqlite3-sqlcipher", @@ -3633,9 +3064,8 @@ }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3652,16 +3082,14 @@ }, "node_modules/bindings": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", "dependencies": { "file-uri-to-path": "1.0.0" } }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3670,8 +3098,7 @@ }, "node_modules/bl/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3683,24 +3110,21 @@ }, "node_modules/bluebird": { "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bluebird-lst": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", - "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", "dev": true, + "license": "MIT", "dependencies": { "bluebird": "^3.5.5" } }, "node_modules/body-parser": { "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -3722,18 +3146,16 @@ }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -3743,35 +3165,30 @@ }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/boolean": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "license": "MIT", "optional": true }, "node_modules/bottleneck": { "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -3781,14 +3198,11 @@ }, "node_modules/btoa-lite": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -3803,6 +3217,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3810,17 +3225,15 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", "engines": { "node": "*" } }, "node_modules/buffer-equal": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" }, @@ -3830,21 +3243,18 @@ }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/builder-util": { "version": "24.8.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.8.1.tgz", - "integrity": "sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==", "dev": true, + "license": "MIT", "dependencies": { "@types/debug": "^4.1.6", "7zip-bin": "~5.2.0", @@ -3866,8 +3276,7 @@ }, "node_modules/builder-util-runtime": { "version": "9.2.3", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", - "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", + "license": "MIT", "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -3878,9 +3287,8 @@ }, "node_modules/builder-util/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3892,9 +3300,8 @@ }, "node_modules/builtin-modules": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -3904,8 +3311,7 @@ }, "node_modules/bytebuffer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", + "license": "Apache-2.0", "dependencies": { "long": "~3" }, @@ -3915,18 +3321,16 @@ }, "node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -3947,9 +3351,8 @@ }, "node_modules/cacache/node_modules/glob": { "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -3969,18 +3372,16 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/cacache/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -3993,25 +3394,22 @@ }, "node_modules/cacache/node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/cacheable-lookup": { "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", "engines": { "node": ">=10.6.0" } }, "node_modules/cacheable-request": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -4026,19 +3424,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.5", "dev": true, + "license": "MIT", "dependencies": { - "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" + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4046,25 +3438,22 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cborg": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-4.0.5.tgz", - "integrity": "sha512-q8TAjprr8pn9Fp53rOIGp/UFDdFY6os2Nq62YogPSIzczJD9M6g2b6igxMkpCiZZKJ0kn/KzDLDvG+EqBIEeCg==", + "license": "Apache-2.0", "bin": { "cborg": "lib/bin.js" } }, "node_modules/cfb": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", - "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", "dependencies": { "adler-32": "~1.3.0", "crc-32": "~1.2.0" @@ -4075,9 +3464,8 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4091,9 +3479,8 @@ }, "node_modules/chokidar": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4112,22 +3499,18 @@ }, "node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chromium-pickle-js": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -4135,15 +3518,15 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/clean-regexp": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -4153,18 +3536,16 @@ }, "node_modules/clean-regexp/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4187,9 +3568,8 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -4201,8 +3581,7 @@ }, "node_modules/clone-response": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -4212,9 +3591,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "devOptional": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4224,24 +3602,21 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, + "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4251,38 +3626,33 @@ }, "node_modules/commander": { "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/commondir": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compare-version": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "license": "MIT" }, "node_modules/config-file-ts": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", - "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", "dev": true, + "license": "MIT", "dependencies": { "glob": "^10.3.10", "typescript": "^5.3.3" @@ -4290,9 +3660,8 @@ }, "node_modules/config-file-ts/node_modules/glob": { "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.3.5", @@ -4312,9 +3681,8 @@ }, "node_modules/config-file-ts/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4327,15 +3695,13 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/content-disposition": { "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -4345,32 +3711,28 @@ }, "node_modules/content-type": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/crc": { "version": "3.8.0", @@ -4383,8 +3745,7 @@ }, "node_modules/crc-32": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -4394,9 +3755,8 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4408,8 +3768,6 @@ }, "node_modules/cross-spawn-windows-exe": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.2.0.tgz", - "integrity": "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==", "dev": true, "funding": [ { @@ -4421,6 +3779,7 @@ "url": "https://tidelift.com/subscription/pkg/npm-cross-spawn-windows-exe?utm_medium=referral&utm_source=npm_fund" } ], + "license": "Apache-2.0", "dependencies": { "@malept/cross-spawn-promise": "^1.1.0", "is-wsl": "^2.2.0", @@ -4432,9 +3791,8 @@ }, "node_modules/cssstyle": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", "dev": true, + "license": "MIT", "dependencies": { "rrweb-cssom": "^0.6.0" }, @@ -4444,22 +3802,19 @@ }, "node_modules/csstype": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "license": "MIT" }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/data-urls": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", @@ -4471,8 +3826,7 @@ }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -4487,14 +3841,12 @@ }, "node_modules/decimal.js": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/decompress-response": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -4507,8 +3859,7 @@ }, "node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -4518,57 +3869,47 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/defer-to-connect": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/define-data-property": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.3.tgz", - "integrity": "sha512-h3GBouC+RPtNX2N0hHVLo2ZwPYurq8mLmXpOLTsw71gr7lHt5VaI4vVkDUNOfiWmm48JEXe3VM7PmLX45AMmmg==", + "version": "1.1.1", "devOptional": true, + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.0" }, "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==", + "license": "MIT", "optional": true, "dependencies": { "define-data-property": "^1.0.1", @@ -4584,39 +3925,34 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/deprecation": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/destroy": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -4624,23 +3960,20 @@ }, "node_modules/detect-libc": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "license": "Apache-2.0", "engines": { "node": ">=8" } }, "node_modules/detect-node": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT", "optional": true }, "node_modules/dir-compare": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", "dev": true, + "license": "MIT", "dependencies": { "buffer-equal": "^1.0.0", "minimatch": "^3.0.4" @@ -4648,9 +3981,8 @@ }, "node_modules/dir-compare/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4658,9 +3990,8 @@ }, "node_modules/dir-compare/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4670,8 +4001,7 @@ }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -4681,9 +4011,8 @@ }, "node_modules/dmg-builder": { "version": "24.9.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.9.1.tgz", - "integrity": "sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==", "dev": true, + "license": "MIT", "dependencies": { "app-builder-lib": "24.9.1", "builder-util": "24.8.1", @@ -4698,9 +4027,8 @@ }, "node_modules/dmg-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4737,9 +4065,8 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4749,10 +4076,8 @@ }, "node_modules/domexception": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^7.0.0" }, @@ -4762,55 +4087,47 @@ }, "node_modules/dompurify": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", - "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/dotenv": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", - "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=10" } }, "node_modules/dotenv-expand": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/duplexer": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "license": "MIT" }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" } }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -4823,9 +4140,8 @@ }, "node_modules/electron": { "version": "28.2.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-28.2.1.tgz", - "integrity": "sha512-wlzXf+OvOiVlBf9dcSeMMf7Q+N6DG+wtgFbMK0sA/JpIJcdosRbLMQwLg/LTwNVKIbmayqFLDp4FmmFkEMhbYA==", "hasInstallScript": true, + "license": "MIT", "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^18.11.18", @@ -4840,9 +4156,8 @@ }, "node_modules/electron-builder": { "version": "24.9.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.9.1.tgz", - "integrity": "sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==", "dev": true, + "license": "MIT", "dependencies": { "app-builder-lib": "24.9.1", "builder-util": "24.8.1", @@ -4866,9 +4181,8 @@ }, "node_modules/electron-builder/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4880,9 +4194,8 @@ }, "node_modules/electron-packager": { "version": "17.1.2", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-17.1.2.tgz", - "integrity": "sha512-XofXdikjYI7MVBcnXeoOvRR+yFFFHOLs3J7PF5KYQweigtgLshcH4W660PsvHr4lYZ03JBpLyEcUB8DzHZ+BNw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@electron/asar": "^3.2.1", "@electron/get": "^2.0.0", @@ -4916,9 +4229,8 @@ }, "node_modules/electron-packager/node_modules/@electron/notarize": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz", - "integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.1" @@ -4929,9 +4241,8 @@ }, "node_modules/electron-packager/node_modules/@electron/notarize/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -4944,9 +4255,8 @@ }, "node_modules/electron-packager/node_modules/fs-extra": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4958,9 +4268,8 @@ }, "node_modules/electron-publish": { "version": "24.8.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.8.1.tgz", - "integrity": "sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==", "dev": true, + "license": "MIT", "dependencies": { "@types/fs-extra": "^9.0.11", "builder-util": "24.8.1", @@ -4973,9 +4282,8 @@ }, "node_modules/electron-publish/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4987,8 +4295,7 @@ }, "node_modules/electron-updater": { "version": "6.1.7", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.7.tgz", - "integrity": "sha512-SNOhYizjkm4ET+Y8ilJyUzcVsFJDtINzVN1TyHnZeMidZEG3YoBebMyXc/J6WSiXdUaOjC7ngekN6rNp6ardHA==", + "license": "MIT", "dependencies": { "builder-util-runtime": "9.2.3", "fs-extra": "^10.1.0", @@ -5002,8 +4309,7 @@ }, "node_modules/electron-updater/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5014,38 +4320,33 @@ } }, "node_modules/electron/node_modules/@types/node": { - "version": "18.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.15.tgz", - "integrity": "sha512-AMZ2UWx+woHNfM11PyAEQmfSxi05jm9OlkxczuHeEqmvwPkYj6MWv44gbzDPefYOLysTOFyI3ziiy2ONmUZfpA==", + "version": "18.19.14", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/email-addresses": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-4.0.0.tgz", - "integrity": "sha512-Nas3sSSiD5lSIoqBos0FMjB9h4clHxXuAahHKGJ5doRWavEB7pBHzOxnI7R5f1MuGNrrSnsZFJ81HCBv0DZmnw==" + "license": "MIT" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/encodeurl": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -5053,17 +4354,15 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -5073,66 +4372,47 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "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==", - "devOptional": true, - "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==", "devOptional": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "license": "MIT", "optional": true }, "node_modules/esbuild": { "version": "0.17.15", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.15.tgz", - "integrity": "sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -5166,9 +4446,8 @@ }, "node_modules/esbuild-plugin-alias-path": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esbuild-plugin-alias-path/-/esbuild-plugin-alias-path-2.0.2.tgz", - "integrity": "sha512-YK8H9bzx6/CG6YBV11XjoNLjRhNZP0Ta4xZ3ATHhPn7pN8ljQGg+zne4d47DpIzF8/sX2qM+xQWev0CvaD2rSQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "5.0.0", "fs-extra": "^10.1.0", @@ -5180,9 +4459,8 @@ }, "node_modules/esbuild-plugin-alias-path/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5194,9 +4472,8 @@ }, "node_modules/esbuild-plugin-wat": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/esbuild-plugin-wat/-/esbuild-plugin-wat-0.2.7.tgz", - "integrity": "sha512-Hb2BJHezVrKDu3zY/gAKdLa5j3l8ybgi7UDgxFHwpxjMRqmMgceBa1FIQLZovfh5bhbl1u0n4MMnhRS0yM1BNg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-ast.tgz", "@webassemblyjs/wasm-parser": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wasm-parser.tgz", @@ -5214,24 +4491,21 @@ }, "node_modules/escalade": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -5241,9 +4515,8 @@ }, "node_modules/eslint": { "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", @@ -5297,9 +4570,8 @@ }, "node_modules/eslint-config-prettier": { "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -5309,9 +4581,8 @@ }, "node_modules/eslint-plugin-unicorn": { "version": "47.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-47.0.0.tgz", - "integrity": "sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.19.1", "@eslint-community/eslint-utils": "^4.4.0", @@ -5342,9 +4613,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5355,9 +4625,8 @@ }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5367,9 +4636,8 @@ }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5377,9 +4645,8 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -5393,18 +4660,16 @@ }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5414,9 +4679,8 @@ }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5426,9 +4690,8 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -5443,9 +4706,8 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "bin": { "esparse": "bin/esparse.js", @@ -5457,9 +4719,8 @@ }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -5469,18 +4730,16 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -5490,50 +4749,44 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/event-stream": { "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "license": "MIT", "dependencies": { "duplexer": "~0.1.1", "from": "~0", @@ -5546,9 +4799,8 @@ }, "node_modules/events": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.4.x" @@ -5556,23 +4808,20 @@ }, "node_modules/expand-template": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" } }, "node_modules/exponential-backoff": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/express": { "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -5612,9 +4861,8 @@ }, "node_modules/express/node_modules/body-parser": { "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -5636,18 +4884,16 @@ }, "node_modules/express/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -5657,15 +4903,13 @@ }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/express/node_modules/qs": { "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -5678,8 +4922,7 @@ }, "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==", + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -5706,14 +4949,12 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -5727,36 +4968,30 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fd-slicer": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, "node_modules/fetch-blob": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "funding": [ { "type": "github", @@ -5767,6 +5002,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -5777,9 +5013,8 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -5789,32 +5024,28 @@ }, "node_modules/file-uri-to-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + "license": "MIT" }, "node_modules/filelist": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filename-reserved-regex": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/filenamify": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, + "license": "MIT", "dependencies": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.1", @@ -5829,8 +5060,7 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5840,9 +5070,8 @@ }, "node_modules/finalhandler": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -5858,24 +5087,21 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/find-cache-dir": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -5890,9 +5116,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -5906,9 +5131,8 @@ }, "node_modules/flat-cache": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -5920,15 +5144,13 @@ }, "node_modules/flatted": { "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/flora-colossus": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", - "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "fs-extra": "^10.1.0" @@ -5939,9 +5161,8 @@ }, "node_modules/flora-colossus/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5953,9 +5174,8 @@ }, "node_modules/for-each": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "is-callable": "^1.1.3" @@ -5963,9 +5183,8 @@ }, "node_modules/foreground-child": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -5979,9 +5198,8 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -5991,9 +5209,8 @@ }, "node_modules/form-data": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -6005,8 +5222,7 @@ }, "node_modules/formdata-polyfill": { "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" }, @@ -6016,31 +5232,26 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/fresh": { "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/from": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" + "license": "MIT" }, "node_modules/fromentries": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -6055,18 +5266,17 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "license": "MIT" }, "node_modules/fs-extra": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -6078,9 +5288,8 @@ }, "node_modules/fs-minipass": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -6090,55 +5299,36 @@ }, "node_modules/fs-minipass/node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" }, "node_modules/full-icu": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/full-icu/-/full-icu-1.3.4.tgz", - "integrity": "sha512-BERy9j2ybYSfP8QmXyg496NjVrGXfM73TZckQ5s5hgDV2lpKshjGfPEYYWU3hhE2kU8atZXUZNLSeNz4OQ8hNA==", "dev": true, "hasInstallScript": true, + "license": "Unicode-DFS-2016", "bin": { "node-full-icu-path": "node-icu-data.js" } }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/galactus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", - "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "flora-colossus": "^2.0.0", @@ -6150,9 +5340,8 @@ }, "node_modules/galactus/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -6164,9 +5353,8 @@ }, "node_modules/gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -6183,20 +5371,18 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.3", "devOptional": true, + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", + "es-errors": "^1.0.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", @@ -6211,9 +5397,8 @@ }, "node_modules/get-package-info": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", - "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==", "dev": true, + "license": "MIT", "dependencies": { "bluebird": "^3.1.1", "debug": "^2.2.0", @@ -6226,18 +5411,16 @@ }, "node_modules/get-package-info/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/get-package-info/node_modules/find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -6247,9 +5430,8 @@ }, "node_modules/get-package-info/node_modules/locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -6260,15 +5442,13 @@ }, "node_modules/get-package-info/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/get-package-info/node_modules/p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -6278,9 +5458,8 @@ }, "node_modules/get-package-info/node_modules/p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -6290,18 +5469,16 @@ }, "node_modules/get-package-info/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/get-package-info/node_modules/path-type": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.0.0" }, @@ -6311,9 +5488,8 @@ }, "node_modules/get-package-info/node_modules/read-pkg": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", "dev": true, + "license": "MIT", "dependencies": { "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", @@ -6325,9 +5501,8 @@ }, "node_modules/get-package-info/node_modules/read-pkg-up": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" @@ -6338,8 +5513,7 @@ }, "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==", + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -6352,14 +5526,12 @@ }, "node_modules/github-from-package": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + "license": "MIT" }, "node_modules/glob": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6376,8 +5548,7 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -6387,15 +5558,13 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, + "license": "BSD-2-Clause", "optional": true }, "node_modules/global-agent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "license": "BSD-3-Clause", "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -6411,9 +5580,8 @@ }, "node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -6426,8 +5594,7 @@ }, "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "license": "MIT", "optional": true, "dependencies": { "define-properties": "^1.1.3" @@ -6441,9 +5608,8 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -6461,9 +5627,8 @@ }, "node_modules/gopd": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "devOptional": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -6473,8 +5638,7 @@ }, "node_modules/got": { "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -6497,31 +5661,27 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "version": "1.0.1", "devOptional": true, + "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6529,9 +5689,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6541,9 +5700,8 @@ }, "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==", "devOptional": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6553,9 +5711,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "has-symbols": "^1.0.3" @@ -6569,14 +5726,12 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.0", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -6586,9 +5741,8 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6598,9 +5752,8 @@ }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^2.0.0" }, @@ -6610,14 +5763,12 @@ }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "license": "BSD-2-Clause" }, "node_modules/http-errors": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6631,9 +5782,8 @@ }, "node_modules/http-proxy-agent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -6645,8 +5795,7 @@ }, "node_modules/http2-wrapper": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -6657,9 +5806,8 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -6670,9 +5818,8 @@ }, "node_modules/humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.0.0" } @@ -6695,8 +5842,7 @@ }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -6706,8 +5852,6 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -6721,26 +5865,24 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immediate": { "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6754,26 +5896,23 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6781,41 +5920,29 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "license": "ISC" }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "node_modules/ip": { + "version": "2.0.0", "dev": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } + "license": "MIT" }, "node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-arguments": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "call-bind": "^1.0.2", @@ -6830,15 +5957,13 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6848,9 +5973,8 @@ }, "node_modules/is-builtin-module": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, + "license": "MIT", "dependencies": { "builtin-modules": "^3.3.0" }, @@ -6863,9 +5987,8 @@ }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">= 0.4" @@ -6876,9 +5999,8 @@ }, "node_modules/is-ci": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, + "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -6888,8 +6010,7 @@ }, "node_modules/is-core-module": { "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "license": "MIT", "dependencies": { "hasown": "^2.0.0" }, @@ -6899,9 +6020,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -6914,26 +6034,23 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "has-tostringtag": "^1.0.0" @@ -6947,8 +6064,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -6958,78 +6074,68 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-reference": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/is-regexp": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-typed-array": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "which-typed-array": "^1.1.14" @@ -7043,9 +6149,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -7055,14 +6160,12 @@ }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "license": "MIT" }, "node_modules/isbinaryfile": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", - "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.0.0" }, @@ -7072,14 +6175,12 @@ }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "license": "ISC" }, "node_modules/jackspeak": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7095,9 +6196,8 @@ }, "node_modules/jake": { "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -7113,9 +6213,8 @@ }, "node_modules/jake/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7123,9 +6222,8 @@ }, "node_modules/jake/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7135,9 +6233,8 @@ }, "node_modules/jmespath": { "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", "dev": true, + "license": "Apache-2.0", "optional": true, "engines": { "node": ">= 0.6.0" @@ -7145,14 +6242,12 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -7160,17 +6255,10 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true - }, "node_modules/jsdom": { "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "cssstyle": "^3.0.0", @@ -7210,9 +6298,8 @@ }, "node_modules/jsesc": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -7222,37 +6309,31 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "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": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC", "optional": true }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -7262,8 +6343,7 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -7273,9 +6353,8 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, + "license": "MIT", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -7295,8 +6374,7 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -7306,23 +6384,20 @@ }, "node_modules/jszip/node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "license": "(MIT AND Zlib)" }, "node_modules/junk": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jwa": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -7331,9 +6406,8 @@ }, "node_modules/jws": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, + "license": "MIT", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -7341,22 +6415,19 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/lazy-val": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + "license": "MIT" }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7367,36 +6438,31 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/linkify-html": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkify-html/-/linkify-html-4.1.3.tgz", - "integrity": "sha512-Ejb8X/pOxB4IVqG1U37tnF85UW3JtX+eHudH3zlZ2pODz2e/J7zQ/vj+VDWffwhTecJqdRehhluwrRmKoJz+iQ==", + "license": "MIT", "peerDependencies": { "linkifyjs": "^4.0.0" } }, "node_modules/linkifyjs": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", - "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==" + "license": "MIT" }, "node_modules/load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -7409,9 +6475,8 @@ }, "node_modules/load-json-file/node_modules/parse-json": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.2.0" }, @@ -7421,9 +6486,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -7436,93 +6500,78 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + "license": "MIT" }, "node_modules/lodash.get": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/long": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", + "license": "Apache-2.0", "engines": { "node": ">=0.6" } }, "node_modules/lowercase-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7532,17 +6581,15 @@ }, "node_modules/luxon": { "version": "3.4.4", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/magic-string": { - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", - "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", + "version": "0.30.6", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -7552,9 +6599,8 @@ }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -7567,18 +6613,16 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/make-fetch-happen": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^17.0.0", @@ -7602,22 +6646,18 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" + "version": "0.1.0" }, "node_modules/matcher": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "license": "MIT", "optional": true, "dependencies": { "escape-string-regexp": "^4.0.0" @@ -7628,40 +6668,35 @@ }, "node_modules/media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/merge-descriptors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -7672,9 +6707,8 @@ }, "node_modules/mime": { "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -7684,18 +6718,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -7705,26 +6737,23 @@ }, "node_modules/mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7734,25 +6763,22 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7762,9 +6788,8 @@ }, "node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7774,9 +6799,8 @@ }, "node_modules/minipass-fetch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -7791,18 +6815,16 @@ }, "node_modules/minipass-fetch/node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7812,9 +6834,8 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7824,9 +6845,8 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7836,9 +6856,8 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7848,9 +6867,8 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -7860,9 +6878,8 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7872,8 +6889,7 @@ }, "node_modules/minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -7884,8 +6900,7 @@ }, "node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7895,8 +6910,7 @@ }, "node_modules/mithril": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/mithril/-/mithril-2.2.2.tgz", - "integrity": "sha512-YRm6eLv2UUaWaWHdH8L+desW9+DN7+oM34CxJv6tT2e1lNVue8bxQlknQeDRn9aKlO8sIujm2wqUHwM+Hb1wGQ==", + "license": "MIT", "dependencies": { "ospec": "4.0.0" }, @@ -7906,8 +6920,7 @@ }, "node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -7917,44 +6930,37 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "license": "MIT" }, "node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "license": "MIT" }, "node_modules/napi-build-utils": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/node-abi": { "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -7970,8 +6976,6 @@ }, "node_modules/node-domexception": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "funding": [ { "type": "github", @@ -7982,15 +6986,15 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "engines": { "node": ">=10.5.0" } }, "node_modules/node-fetch": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8008,21 +7012,18 @@ }, "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -8030,9 +7031,8 @@ }, "node_modules/node-gyp": { "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -8055,9 +7055,8 @@ }, "node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8065,9 +7064,8 @@ }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8085,9 +7083,8 @@ }, "node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8097,9 +7094,8 @@ }, "node_modules/nopt": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -8112,9 +7108,8 @@ }, "node_modules/normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -8124,32 +7119,28 @@ }, "node_modules/normalize-package-data/node_modules/hosted-git-info": { "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -8159,9 +7150,8 @@ }, "node_modules/npmlog": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, + "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -8174,23 +7164,20 @@ }, "node_modules/nwsapi": { "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/object-inspect": { "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "optional": true, "engines": { "node": ">= 0.4" @@ -8198,9 +7185,8 @@ }, "node_modules/octokit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-1.3.0.tgz", - "integrity": "sha512-XVWkRtd0+/sU7SRIsaimli2xaGAKGC36qDz51Frb3i0IA/rDBaxg0je6rCt9nAzzDBROVvM5cAtO7UtOygFzfg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/app": "^12.0.0", "@octokit/core": "^3.3.1", @@ -8214,9 +7200,8 @@ }, "node_modules/octokit/node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.7.0.tgz", - "integrity": "sha512-G7sgccWRYQMwcHJXkDY/sDxbXeKiZkFQqUtzBCwmrzCNj2GQf3VygQ4T/BFL2crLVpIbenkE/c0ErhYOte2MPw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.24.0", "deprecation": "^2.3.1" @@ -8227,9 +7212,8 @@ }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -8239,17 +7223,15 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -8264,8 +7246,7 @@ }, "node_modules/ospec": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ospec/-/ospec-4.0.0.tgz", - "integrity": "sha512-MpDtkpscOxHYb4w71v7GB4LBsRuzxZnM+HdwjhzJQzu+5EJvA80yxTaKw+wp5Dmf5RV2/Bg3Uvz2vlI/PhW9Ow==", + "license": "MIT", "dependencies": { "glob": "^7.1.3" }, @@ -8275,8 +7256,7 @@ }, "node_modules/ospec/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8284,8 +7264,7 @@ }, "node_modules/ospec/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8303,8 +7282,7 @@ }, "node_modules/ospec/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8314,17 +7292,15 @@ }, "node_modules/p-cancelable": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8337,9 +7313,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -8352,9 +7327,8 @@ }, "node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -8367,23 +7341,20 @@ }, "node_modules/p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pako": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -8393,9 +7364,8 @@ }, "node_modules/parse-author": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", - "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==", "dev": true, + "license": "MIT", "dependencies": { "author-regex": "^1.0.0" }, @@ -8405,9 +7375,8 @@ }, "node_modules/parse-imports": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-1.1.2.tgz", - "integrity": "sha512-UgTSNWlBvx+f4nxVSH3fOyJPJKol8GkFuG8mN8q9FqtmJgwaEx0azPRlXXX0klNlRxoP2gwme00TPDSm6rm/IA==", "dev": true, + "license": "Apache 2.0", "dependencies": { "es-module-lexer": "^1.3.0", "slashes": "^3.0.12" @@ -8418,9 +7387,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -8436,9 +7404,8 @@ }, "node_modules/parse5": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -8448,49 +7415,43 @@ }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -8504,44 +7465,41 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, + "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-to-regexp": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/pause-stream": { "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "license": [ + "MIT", + "Apache2" + ], "dependencies": { "through": "~2.3" } }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + "license": "MIT" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8551,18 +7509,16 @@ }, "node_modules/pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -8572,9 +7528,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -8585,9 +7540,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8597,9 +7551,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -8612,9 +7565,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -8624,18 +7576,16 @@ }, "node_modules/pkg-dir/node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/plist": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", - "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "devOptional": true, + "license": "MIT", "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", @@ -8647,17 +7597,15 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/prebuild-install": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -8681,46 +7629,27 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, - "node_modules/prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -8731,9 +7660,8 @@ }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -8744,8 +7672,7 @@ }, "node_modules/ps-tree": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", - "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "license": "MIT", "dependencies": { "event-stream": "=3.3.4" }, @@ -8758,14 +7685,12 @@ }, "node_modules/psl": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -8773,26 +7698,23 @@ }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qrcode-svg": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.0.0.tgz", - "integrity": "sha512-YDxmsy3rtDXrjSJrtRRPjP/abxRpO49joZXlAW4ZO/kazKmaeaMDRswZ4kh9vksv0uE6vctfrZnms6xnrtWwdw==", + "license": "MIT", "bin": { "qrcode-svg": "bin/qrcode-svg.js" } }, "node_modules/qs": { "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -8805,9 +7727,6 @@ }, "node_modules/querystring": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, "optional": true, "engines": { @@ -8816,14 +7735,11 @@ }, "node_modules/querystringify": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -8837,12 +7753,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quibble": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/quibble/-/quibble-0.7.0.tgz", - "integrity": "sha512-uiqtYLo6p6vWR/G3Ltsg0NU1xw43RcNGadYP+d/DF3zLQTyOt8uC7L2mmcJ97au1QE1YdmCD+HVIIq/RGtkbWA==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "resolve": "^1.22.1" @@ -8853,8 +7769,7 @@ }, "node_modules/quick-lru": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -8864,27 +7779,24 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -8897,9 +7809,8 @@ }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8909,8 +7820,7 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8923,17 +7833,15 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/rcedit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.1.0.tgz", - "integrity": "sha512-WRlRdY1qZbu1L11DklT07KuHfRk42l0NFFJdaExELEu4fEQ982bP5Z6OWGPj/wLLIuKRQDCxZJGAwoFsxhZhNA==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn-windows-exe": "^1.1.0" }, @@ -8943,9 +7851,8 @@ }, "node_modules/read-config-file": { "version": "6.3.2", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", - "integrity": "sha512-M80lpCjnE6Wt6zb98DoW8WHR09nzMSpu8XHtPkiTHrJ5Az9CybfeQhTJ8D7saeBHpGhLPIVyA8lcL6ZmdKwY6Q==", "dev": true, + "license": "MIT", "dependencies": { "config-file-ts": "^0.2.4", "dotenv": "^9.0.2", @@ -8960,9 +7867,8 @@ }, "node_modules/read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -8975,9 +7881,8 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -8992,9 +7897,8 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -9005,9 +7909,8 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -9017,9 +7920,8 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -9032,9 +7934,8 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -9044,35 +7945,31 @@ }, "node_modules/read-pkg-up/node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -9085,14 +7982,12 @@ }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -9102,18 +7997,16 @@ }, "node_modules/regexp-tree": { "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, + "license": "MIT", "bin": { "regexp-tree": "bin/regexp-tree" } }, "node_modules/regjsparser": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", - "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -9123,8 +8016,6 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -9132,23 +8023,20 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -9163,22 +8051,19 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "license": "MIT" }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/responselike": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -9188,17 +8073,15 @@ }, "node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -9206,9 +8089,8 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9221,9 +8103,8 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9231,9 +8112,8 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9251,9 +8131,8 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9263,8 +8142,7 @@ }, "node_modules/roarr": { "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "license": "BSD-3-Clause", "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -9280,9 +8158,8 @@ }, "node_modules/rollup": { "version": "4.9.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.4.tgz", - "integrity": "sha512-2ztU7pY/lrQyXSCnnoU4ICjT/tCG9cdH3/G25ERqE3Lst6vl2BCM5hL2Nw+sslAvAf+ccKsAq1SkKQALyqhR7g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -9312,14 +8189,11 @@ }, "node_modules/rrweb-cssom": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -9334,14 +8208,13 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -9355,41 +8228,37 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", "dev": true, + "license": "MIT", "dependencies": { "regexp-tree": "~0.1.1" } }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "license": "MIT" }, "node_modules/sanitize-filename": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, + "license": "WTFPL OR ISC", "dependencies": { "truncate-utf8-bytes": "^1.0.0" } }, "node_modules/sax": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "license": "ISC" }, "node_modules/saxes": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -9398,9 +8267,8 @@ } }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.5.4", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9413,15 +8281,13 @@ }, "node_modules/semver-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "license": "MIT", "optional": true }, "node_modules/send": { "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -9443,24 +8309,21 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/mime": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -9470,14 +8333,12 @@ }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serialize-error": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "license": "MIT", "optional": true, "dependencies": { "type-fest": "^0.13.1" @@ -9491,8 +8352,7 @@ }, "node_modules/serialize-error/node_modules/type-fest": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "license": "(MIT OR CC0-1.0)", "optional": true, "engines": { "node": ">=10" @@ -9503,18 +8363,16 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-static": { "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, + "license": "MIT", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -9527,20 +8385,17 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "version": "1.2.0", "dev": true, + "license": "MIT", "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", + "define-data-property": "^1.1.1", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.1" }, @@ -9550,20 +8405,17 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "license": "MIT" }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -9573,26 +8425,20 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "version": "1.0.4", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9600,14 +8446,11 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/simple-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -9621,12 +8464,11 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-get": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -9641,6 +8483,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -9649,9 +8492,8 @@ }, "node_modules/simple-update-notifier": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -9661,18 +8503,16 @@ }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slashes": { "version": "3.0.12", - "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", - "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/slice-ansi": { "version": "3.0.0", @@ -9690,9 +8530,8 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -9700,29 +8539,26 @@ }, "node_modules/smob": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", - "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/socks": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.3.tgz", - "integrity": "sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==", + "version": "2.7.1", "dev": true, + "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip": "^2.0.0", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.0.0", + "node": ">= 10.13.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -9734,18 +8570,16 @@ }, "node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -9753,9 +8587,8 @@ }, "node_modules/spdx-correct": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -9763,30 +8596,26 @@ }, "node_modules/spdx-exceptions": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", - "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true + "version": "3.0.16", + "dev": true, + "license": "CC0-1.0" }, "node_modules/split": { "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "license": "MIT", "dependencies": { "through": "2" }, @@ -9796,20 +8625,17 @@ }, "node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "devOptional": true + "license": "BSD-3-Clause", + "optional": true }, "node_modules/squire-rte": { "version": "2.2.5", - "resolved": "https://registry.npmjs.org/squire-rte/-/squire-rte-2.2.5.tgz", - "integrity": "sha512-qxG8CdH9haEufK5Nn7KcoixJb5UwEtmqMiFZ5+VLUpNrvSVm0PLIkoiLKS5Z0A2/w8pWvKHSTI2Gsijg9xl4Og==" + "license": "MIT" }, "node_modules/ssri": { "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -9819,57 +8645,50 @@ }, "node_modules/ssri/node_modules/minipass": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/stat-mode": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", - "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/stream-combiner": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "license": "MIT", "dependencies": { "duplexer": "~0.1.1" } }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "devOptional": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9882,9 +8701,8 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9896,8 +8714,7 @@ }, "node_modules/stringify-object-es5": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/stringify-object-es5/-/stringify-object-es5-2.5.0.tgz", - "integrity": "sha512-vE7Xdx9ylG4JI16zy7/ObKUB+MtxuMcWlj/WHHr3+yAlQoN6sst2stU9E+2Qs3OrlJw/Pf3loWxL1GauEHf6MA==", + "license": "BSD-2-Clause", "dependencies": { "is-plain-obj": "^1.0.0", "is-regexp": "^1.0.0" @@ -9908,9 +8725,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "devOptional": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9921,9 +8737,8 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9933,18 +8748,16 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -9954,9 +8767,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9966,9 +8778,8 @@ }, "node_modules/strip-outer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -9978,17 +8789,15 @@ }, "node_modules/strip-outer/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/sumchecker": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "license": "Apache-2.0", "dependencies": { "debug": "^4.1.0" }, @@ -9998,9 +8807,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10010,8 +8818,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10021,19 +8828,16 @@ }, "node_modules/symbol-tree": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/systemjs": { "version": "6.10.2", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.10.2.tgz", - "integrity": "sha512-PwaC0Z6Y1E6gFekY2u38EC5+5w2M65jYVrD1aAcOptpHVhCwPIwPFJvYJyryQKUyeuQ5bKKI3PBHWNjdE9aizg==" + "license": "MIT" }, "node_modules/tar": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -10048,8 +8852,7 @@ }, "node_modules/tar-fs": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -10059,13 +8862,11 @@ }, "node_modules/tar-fs/node_modules/chownr": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "license": "ISC" }, "node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -10079,8 +8880,7 @@ }, "node_modules/tar-stream/node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10092,8 +8892,7 @@ }, "node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -10103,8 +8902,7 @@ }, "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10114,9 +8912,8 @@ }, "node_modules/temp-file": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", - "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "dev": true, + "license": "MIT", "dependencies": { "async-exit-hook": "^2.0.1", "fs-extra": "^10.0.0" @@ -10124,9 +8921,8 @@ }, "node_modules/terser": { "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -10142,14 +8938,12 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/testdouble": { "version": "3.18.0", - "resolved": "https://registry.npmjs.org/testdouble/-/testdouble-3.18.0.tgz", - "integrity": "sha512-awRay/WxNHYz0SJrjvvg1xE4QQkbKgWFN1VNhhb132JSO2FSWUW4cebUtD0HjWWwrvpN3uFsVeaUhwpmVlzlkg==", + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "quibble": "^0.7.0", @@ -10162,30 +8956,25 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/theredoc": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/theredoc/-/theredoc-1.0.0.tgz", - "integrity": "sha512-KU3SA3TjRRM932jpNfD3u4Ec3bSvedyo5ITPI7zgWYnKep7BwQQaxlhI9qbO+lKJoRnoAbEVfMcAHRuKVYikDA==" + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "license": "MIT" }, "node_modules/tiny-typed-emitter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", - "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + "license": "MIT" }, "node_modules/tmp": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, + "license": "MIT", "dependencies": { "rimraf": "^3.0.0" }, @@ -10195,17 +8984,15 @@ }, "node_modules/tmp-promise": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", "dev": true, + "license": "MIT", "dependencies": { "tmp": "^0.2.0" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -10215,18 +9002,16 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tough-cookie": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -10239,18 +9024,16 @@ }, "node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/tr46": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.0" }, @@ -10260,9 +9043,8 @@ }, "node_modules/trim-repeated": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.2" }, @@ -10272,33 +9054,29 @@ }, "node_modules/trim-repeated/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", "dev": true, + "license": "WTFPL", "dependencies": { "utf8-byte-length": "^1.0.1" } }, "node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -10311,8 +9089,7 @@ }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -10322,9 +9099,8 @@ }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -10334,9 +9110,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10346,9 +9121,8 @@ }, "node_modules/type-is": { "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -10359,9 +9133,8 @@ }, "node_modules/typescript": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10372,8 +9145,7 @@ }, "node_modules/undici": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.0.1.tgz", - "integrity": "sha512-eZFYQLeS9BiXpsU0cuFhCwfeda2MnC48EVmmOz/eCjsTgmyTdaHdVsPSC/kwC2GtW2e0uH0HIPbadf3/bRWSxw==", + "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -10383,14 +9155,12 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "license": "MIT" }, "node_modules/unique-filename": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -10400,9 +9170,8 @@ }, "node_modules/unique-slug": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -10412,9 +9181,8 @@ }, "node_modules/universal-github-app-jwt": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.2.tgz", - "integrity": "sha512-t1iB2FmLFE+yyJY9+3wMx0ejB+MQpEVkH0gQv7dR6FZyltyq+ZZO0uDpbopxhrZ3SLEO4dCEkIujOMldEQ2iOA==", "dev": true, + "license": "MIT", "dependencies": { "@types/jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.2" @@ -10422,41 +9190,36 @@ }, "node_modules/universal-user-agent": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "punycode": "1.3.2", @@ -10465,9 +9228,8 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -10475,22 +9237,19 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/utf8-byte-length": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", - "dev": true + "dev": true, + "license": "WTFPL" }, "node_modules/util": { "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "inherits": "^2.0.3", @@ -10502,31 +9261,27 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -10534,9 +9289,8 @@ }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10563,9 +9317,8 @@ }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^4.0.0" }, @@ -10592,9 +9345,8 @@ }, "node_modules/watchpack": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -10606,26 +9358,23 @@ }, "node_modules/web-streams-polyfill": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz", - "integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/webidl-conversions": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/whatwg-encoding": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -10635,18 +9384,16 @@ }, "node_modules/whatwg-mimetype": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/whatwg-url": { "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" @@ -10657,8 +9404,7 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10671,9 +9417,8 @@ }, "node_modules/which-typed-array": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "available-typed-arrays": "^1.0.6", @@ -10691,23 +9436,20 @@ }, "node_modules/wide-align": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/winreg": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz", - "integrity": "sha512-IHpzORub7kYlb8A43Iig3reOvlcBJGX9gZ0WycHhghHtA65X0LYnMRuJs+aH1abVnMJztQkvQNlltnbPi5aGIA==" + "license": "BSD-2-Clause" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10723,9 +9465,8 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10740,14 +9481,12 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "license": "ISC" }, "node_modules/ws": { "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -10766,27 +9505,24 @@ }, "node_modules/xhr2": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", - "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/xml-name-validator": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12" } }, "node_modules/xml2js": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "sax": ">=0.6.0", @@ -10798,9 +9534,8 @@ }, "node_modules/xml2js/node_modules/xmlbuilder": { "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=4.0" @@ -10808,46 +9543,40 @@ }, "node_modules/xmlbuilder": { "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=8.0" } }, "node_modules/xmlchars": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/yaml": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "license": "ISC", "engines": { "node": ">= 14" } }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -10863,17 +9592,15 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yauzl": { "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -10881,9 +9608,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10893,9 +9619,8 @@ }, "node_modules/zx": { "version": "7.0.7", - "resolved": "https://registry.npmjs.org/zx/-/zx-7.0.7.tgz", - "integrity": "sha512-cWF5cWqqrTVxgEPmQ8w/LvUXOK3rJTdgC+Tt1nz113+YncNIO0X6UXgCY72UfE8Az/lwOubbEJARXpQ+7RiM9g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/fs-extra": "^9.0.13", "@types/minimist": "^1.2.2", @@ -10920,15 +9645,13 @@ }, "node_modules/zx/node_modules/@types/node": { "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/zx/node_modules/chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10938,9 +9661,8 @@ }, "node_modules/zx/node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10952,9 +9674,8 @@ }, "node_modules/zx/node_modules/globby": { "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, + "license": "MIT", "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.3.0", @@ -10971,9 +9692,8 @@ }, "node_modules/zx/node_modules/node-fetch": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, + "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -10989,9 +9709,8 @@ }, "node_modules/zx/node_modules/slash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -11252,9 +9971,8 @@ }, "packages/tutanota-utils/node_modules/typescript": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz", - "integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 35c73c8b41d..cf55599f4a5 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "postinstall": "node buildSrc/postinstall.js", "bump-version": "node buildSrc/bump-version.js", "generate-ipc": "npm run build -w @tutao/licc && licc ./ipc-schema", - "style:check": "prettier -c \"**/*.(ts|js|json|json5)\"", - "style:fix": "prettier -w \"**/*.(ts|js|json|json5)\"", + "style:check": "npx @biomejs/biome format .", + "style:fix": "npx @biomejs/biome format --write .", "lint:check": "eslint .", "lint:fix": "eslint --fix .", "check": "npm run style:check && npm run lint:check", @@ -66,6 +66,7 @@ "dmg-license": "^1.0.11" }, "devDependencies": { + "@biomejs/biome": "1.5.3", "@electron/notarize": "2.2.0", "@octokit/auth-token": "2.5.0", "@octokit/rest": "18.12.0", @@ -98,7 +99,6 @@ "jsdom": "22.1.0", "node-gyp": "9.4.0", "octokit": "1.3.0", - "prettier": "2.8.1", "rollup": "4.9.4", "testdouble": "3.18.0", "typescript": "5.3.3", diff --git a/packages/licc/lib/SwiftGenerator.ts b/packages/licc/lib/SwiftGenerator.ts index 412b41b37c3..805cf0ca5c1 100644 --- a/packages/licc/lib/SwiftGenerator.ts +++ b/packages/licc/lib/SwiftGenerator.ts @@ -130,9 +130,7 @@ export class SwiftGenerator implements LangGenerator { ), ) .line(`) {`) - .indented((acc) => - acc.lines(facadeNames.map((name) => `self.${minusculize(name)} = ${name}ReceiveDispatcher(facade: ${minusculize(name)})`)), - ) + .indented((acc) => acc.lines(facadeNames.map((name) => `self.${minusculize(name)} = ${name}ReceiveDispatcher(facade: ${minusculize(name)})`))) .line(`}`) .line() .line(`func dispatch(facadeName: String, methodName: String, args: Array) async throws -> String {`) @@ -141,7 +139,8 @@ export class SwiftGenerator implements LangGenerator { .line(`switch facadeName {`) .indented((acc) => { for (let facadeName of facadeNames) { - acc.line(`case "${facadeName}":`) + acc + .line(`case "${facadeName}":`) .indent() .line(`return try await self.${minusculize(facadeName)}.dispatch(method: methodName, arg: args)`) } @@ -181,9 +180,7 @@ export class SwiftGenerator implements LangGenerator { methodBodyAcc.line(`let encodedFacadeName = toJson("${definition.name}")`) methodBodyAcc.line(`let encodedMethodName = toJson("${methodName}")`) if (methodDefinition.ret !== "void") { - methodBodyAcc.line( - `let returnValue = try await self.transport.sendRequest(requestType: "ipc", args: [encodedFacadeName, encodedMethodName] + args)`, - ) + methodBodyAcc.line(`let returnValue = try await self.transport.sendRequest(requestType: "ipc", args: [encodedFacadeName, encodedMethodName] + args)`) methodBodyAcc.line(`return try! JSONDecoder().decode(${typeNameSwift(methodDefinition.ret).name}.self, from: returnValue.data(using: .utf8)!)`) } else { methodBodyAcc.line(`let _ = try await self.transport.sendRequest(requestType: "ipc", args: [encodedFacadeName, encodedMethodName] + args)`) diff --git a/packages/licc/lib/cli.ts b/packages/licc/lib/cli.ts index 550f663bd0d..8a48500386d 100644 --- a/packages/licc/lib/cli.ts +++ b/packages/licc/lib/cli.ts @@ -27,14 +27,8 @@ await program .choices(PLATFORMS), ) .action(async (from_dir, to_dir, { platform }) => { - assert( - !(platform == null && to_dir != null), - "can't omit platform and use an explicit output dir. specify both -p and to_dir or none of them.", - ) - assert( - !(platform != null && to_dir == null), - "can't use an explicit platform but no output dir. specify both -p and to_dir or none of them.", - ) + assert(!(platform == null && to_dir != null), "can't omit platform and use an explicit output dir. specify both -p and to_dir or none of them.") + assert(!(platform != null && to_dir == null), "can't use an explicit platform but no output dir. specify both -p and to_dir or none of them.") let conf: Record = {} if (platform != null) { diff --git a/packages/licc/test/tsconfig.json b/packages/licc/test/tsconfig.json index adc8c3286fa..e75d30c0361 100644 --- a/packages/licc/test/tsconfig.json +++ b/packages/licc/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig_common.json", + "extends": "../../../tsconfig_common.json5", "include": ["../../../types/*.d.ts"], "files": ["Suite.ts"], "compilerOptions": { diff --git a/packages/otest/lib/Assertion.ts b/packages/otest/lib/Assertion.ts index 6871f67de20..d1b4a6f8ed6 100644 --- a/packages/otest/lib/Assertion.ts +++ b/packages/otest/lib/Assertion.ts @@ -18,7 +18,10 @@ if (typeof process !== "undefined") { * A started assertion. */ export class Assertion { - constructor(private readonly actual: T, private readonly testResult: TestResult) {} + constructor( + private readonly actual: T, + private readonly testResult: TestResult, + ) {} /** * Verify that two items are deeply equal. diff --git a/packages/otest/lib/fancy.ts b/packages/otest/lib/fancy.ts index a1e1fa79263..6a3c5784364 100644 --- a/packages/otest/lib/fancy.ts +++ b/packages/otest/lib/fancy.ts @@ -8,7 +8,7 @@ export const ansiSequences = Object.freeze({ faint: "\x1b[0;2m", }) -type CodeValues = typeof ansiSequences[keyof typeof ansiSequences] +type CodeValues = (typeof ansiSequences)[keyof typeof ansiSequences] export function fancy(text: string, code: CodeValues) { if (typeof process !== "undefined" && process.stdout.isTTY) { diff --git a/packages/tutanota-crypto/test/AesTest.ts b/packages/tutanota-crypto/test/AesTest.ts index 6d6da5ef1a2..eb65e482f5d 100644 --- a/packages/tutanota-crypto/test/AesTest.ts +++ b/packages/tutanota-crypto/test/AesTest.ts @@ -105,9 +105,7 @@ o.spec("aes", function () { o(() => decrypt(key, stringToUtf8Uint8Array("hello"), true, false)).satisfies(throwsErrorWithMessage(CryptoError, "Illegal key length")) } - o("decryptInvalidData 128", () => - decryptInvalidData(aes128RandomKey(), aesDecrypt, "Invalid IV length in aesDecrypt: 10 bytes, must be 16 bytes (128 bits)"), - ) + o("decryptInvalidData 128", () => decryptInvalidData(aes128RandomKey(), aesDecrypt, "Invalid IV length in aesDecrypt: 10 bytes, must be 16 bytes (128 bits)")) o("decryptInvalidData 256 without hmac", () => decryptInvalidData(aes256RandomKey(), aesDecrypt, "Invalid IV length in aesDecrypt: 10 bytes, must be 16 bytes (128 bits)"), ) @@ -221,9 +219,7 @@ o.spec("aes", function () { // check that 15 bytes fit into one block o(encrypt(key, stringToUtf8Uint8Array("1234567890abcde"), random.generateRandomData(IV_BYTE_LENGTH), true, useMac).length).equals(length15BytePlainText) // check that 16 bytes need two blocks (because of one byte padding length info) - o(encrypt(key, stringToUtf8Uint8Array("1234567890abcdef"), random.generateRandomData(IV_BYTE_LENGTH), true, useMac).length).equals( - length16BytePlainText, - ) + o(encrypt(key, stringToUtf8Uint8Array("1234567890abcdef"), random.generateRandomData(IV_BYTE_LENGTH), true, useMac).length).equals(length16BytePlainText) } // o("ciphertextLengths 256 webcrypto", browser(done => { // Promise.all([ // aes256EncryptFile(aes256RandomKey(), stringToUtf8Uint8Array("1234567890abcde"), random.generateRandomData(IV_BYTE_LENGTH)).then(encrypted => o(encrypted.length).equals(48)), // check that 15 bytes fit into one block diff --git a/packages/tutanota-crypto/test/RsaTest.ts b/packages/tutanota-crypto/test/RsaTest.ts index c32c3ac0583..eb87ac19d7d 100644 --- a/packages/tutanota-crypto/test/RsaTest.ts +++ b/packages/tutanota-crypto/test/RsaTest.ts @@ -134,8 +134,10 @@ o.spec("rsa", function () { "ALQ63xzGe/+6bo2fowZAa1t9fpTfrQjJr5xxCfrUI30/pQTnbSosUfRfCrXMtVkgmSgm32AQ0Q0fuWTueKn4us89iL7VcKQ1/WRhetZCi03q+KlOBLp6QX80T41PzXb+xbjQ8AhNtTluVrjC2MoykzegHY/Ks3XAd62RGt0mfvDj7+tgLm2n2UXTL1WXYnVLIjINaOUPmspm8ve9ot1uSjQuLCq3pmy4bNz4WIxuJiegVWwCIbxCuueimjP3OfYp9afunnRZIxcHeASxYSnmlxT2RYOKHNbHdVlzhbVsp9FZs4a2DrJDUr9CRiuh4am/NPwXMkS7UQXazJ0RBDQmAqE=", privateExponent: "Nr4S+qiHDVvRLI8qc0Gp2jY59noiEqNABeKHx3ob9XUZaG3qyH6BvhoIJMQy6Qlvu7Ri8Mjq1nOmWjPczrPP+haUrHIkLpx/hLffGalIqrgOI06hPQrZTgvThfaRT+1+nO5JmhwQSYtsJ952/qNx99lYYU6OR9vX/g4u/LEuqXfvluYLS+low9RizepoYnv+k5u8WLwekHFi9eyO6BK1f5RizSFbA5+qqOWl9cyI8jLtAfskLF6+v1fkHg6ZbxqbtiddRGSMAK4Z+HEKrsuUKqsxtkL+tYSxe2QvZm2mhsiJTrXrq+dBOAzy6FbrAdGR2l5Mwfqb+SuO+Tb+HO5lgQ==", - primeP: "AOcqBtOGECvIbtvcYApoS92KEXge28NhtNRa97356nY+j+ibn1gN4AyGJS8GufvOv7mFq9m+eQZpLHOgQ0xXlXU3UnJVLN2eYbwrNc6vVOii6xMEXXolImtYrD5YLkAmvsP8NNIJCU5ntakXuAm461xdpZOvgIDmlI+WIiLvobzJ", - primeQ: "AMeX8XCw2W/zE2z8GB1r4GpKfBUjNAfO9nEiRUdq1mXEd5MlRvZDi+4hlCKPHHrRgo7SZsQtl1rbBdWiTZdhkdD2UbEt1hNZ6NtgWZssrs+SIDtnOBg0wHHWUUlwkoaTzYcL984qlz2hn468FDBBvO7eR/Z+S3sQ5wSPTkL7dnsZ", + primeP: + "AOcqBtOGECvIbtvcYApoS92KEXge28NhtNRa97356nY+j+ibn1gN4AyGJS8GufvOv7mFq9m+eQZpLHOgQ0xXlXU3UnJVLN2eYbwrNc6vVOii6xMEXXolImtYrD5YLkAmvsP8NNIJCU5ntakXuAm461xdpZOvgIDmlI+WIiLvobzJ", + primeQ: + "AMeX8XCw2W/zE2z8GB1r4GpKfBUjNAfO9nEiRUdq1mXEd5MlRvZDi+4hlCKPHHrRgo7SZsQtl1rbBdWiTZdhkdD2UbEt1hNZ6NtgWZssrs+SIDtnOBg0wHHWUUlwkoaTzYcL984qlz2hn468FDBBvO7eR/Z+S3sQ5wSPTkL7dnsZ", primeExponentP: "LBRugs1QrhilUxV91t42gUM/u4ke3O33vnquPTK3y954MKHkS7UxoRG/a20779Fn6+eacoYIq/lIObA4xQj6fgSTmyu0x3nZJzmSJBx483eFnfW6IX2NR6z8A1NrVl5NCDBCnj6M4L+T+2+Db48sikttNHFF7s6JS6wUTFcnn0k=", primeExponentQ: @@ -173,8 +175,10 @@ o.spec("rsa", function () { "AKhUZJKI9TvMx4CiO764vWiUVVzhm/SLQZlkDQ37WuJkiK3mEgy1wbHEsXtXeZZ+ctTheADpryegsOWl2R4PA+yQOzywh6Q5PlRSCQz2Wvy2IG+jnpPepw+va2vRPH+ePwYJoSgNYFu0Vw+/GP/W458doVzhTZYiqfFWhBJCfxBhzgFwuliyfR7wUvDjPzoKqoSVgcKjFQdmGGd9zADIITMCCHebXXfppUKhFtzdCFjQu2QHTIc+/U8w4bbXwqFrn9fo5OQu8jF3+V/WFdVEQFl6TyhoV0VoQB0T5zcsN3lGoUMCWWTe61cyibP7jRHw+2BbBU4CKCvrBHNxg/jfW6k=", privateExponent: "Vmx99n466qkJBRJGenV/SeJesYFkAPo+g/LKgRM8ZmAXjLFDMyNef1btiNYwpwPlEUdxxYY1V7M5H682+ifba+nhgBdijP6W8dPssasKrBUWMjtff6whOfxmusSCu0MUOJVZGKdFgc/lo0AKJdC+rUMZRganPx4tAqvYw0dA1beKnboCbxy3V8IA2jSHQoq96lJ2rWuTGp+mWsQLqyqNB/jAzTiFXqxGca1qRWAUvCR+a0aV6vS3BSKaveyuJTGUkW2KKU5pJw+7K4onXgWuvkhMKg3OLqVW1zF6dUOf0ur1AC9dO03lrVSvKdOHiEUQsru6zB0KaLNyJKuTy9KxwQ==", - primeP: "AOucuvOtNk/tA3p5PaceGMfu1o2XgUeF3bloSLBU+y3Gf0Wsd1syKIvm5dCjIF9vwIDDi0Zd16gk3sPF9xfuUJiTI/nXPbVOjzaFREenp9eJKX2EhrUNVFfg3yScR3xNNwAxoZoDQsBFwtJ9OCWfurmjSf5xqX9fvjrxdFNbeaJj", - primeQ: "ALblOQAt3YMaXCnvJUdZCdzTN5TappttbRiOpiWotcJ4B/1M9OEbYSLecO12ZuJlZvFYvzXeVidRz2ECty+8uXKcw7wCptdxY3Lpn6kcGqs/pVel3/0OqZgpo8Qi4aYvRAjw9tyD+aZq85OuCf9l8WkeuMpsLC2P7zsFWp1iy6GD", + primeP: + "AOucuvOtNk/tA3p5PaceGMfu1o2XgUeF3bloSLBU+y3Gf0Wsd1syKIvm5dCjIF9vwIDDi0Zd16gk3sPF9xfuUJiTI/nXPbVOjzaFREenp9eJKX2EhrUNVFfg3yScR3xNNwAxoZoDQsBFwtJ9OCWfurmjSf5xqX9fvjrxdFNbeaJj", + primeQ: + "ALblOQAt3YMaXCnvJUdZCdzTN5TappttbRiOpiWotcJ4B/1M9OEbYSLecO12ZuJlZvFYvzXeVidRz2ECty+8uXKcw7wCptdxY3Lpn6kcGqs/pVel3/0OqZgpo8Qi4aYvRAjw9tyD+aZq85OuCf9l8WkeuMpsLC2P7zsFWp1iy6GD", primeExponentP: "KBp2S9G4w+PwyqDmWJKr3yQNCu61x4nGkq9oZ/MfCcyWjzJq4m/oLN/xUBDkCrqHxqMCCskgUvNro2EHzN/4ge/RmM4FJ94mTD5kv9mOnQYwtLehAiIxr/+Lm7yqAkNWUEciXYeejgGRxqgfrW/BpaVgi9mm4xJV28yLY0DXtEc=", primeExponentQ: @@ -257,14 +261,14 @@ o.spec("rsa", function () { 105, 117, -108, -12, 80, 20, -84, -108, 113, 44, 74, 19, -126, -110, -84, 124, 58, 108, 86, 28, 5, -3, -65, -76, 80, -4, -66, 12, -14, -33, -84, 13, ] let block = [ - 95, -18, 112, -22, -48, -67, 43, 71, -43, 99, -112, 5, -36, 1, 120, -109, -119, -91, 113, 112, -42, -22, -31, 31, -17, 47, 32, -2, -112, -62, -53, - 51, 98, 99, -58, 62, 91, -24, 35, -37, 53, 66, -18, -68, -39, -38, 91, -124, -27, 68, -10, 39, 40, -45, 87, -64, -90, 58, -3, -39, 1, 89, -75, -88, - 121, -72, 40, -14, 88, 107, 7, -117, 70, 46, -7, -49, -117, 36, 98, 39, -128, 79, -63, -94, -81, -57, -71, -43, -13, 10, -69, -54, -99, 2, 21, -49, - 89, 84, 111, -121, 108, 23, -107, 55, -6, 62, -86, 74, 6, 9, 58, -71, 11, 96, -115, 120, -83, 30, -63, -125, 29, 67, -80, 15, 62, -111, -40, -6, 32, - 72, -5, -113, -66, -33, -91, -47, -42, -104, -61, 107, -53, 105, 78, 96, 100, 61, -94, -28, -38, -87, -44, -125, 29, 85, -108, 93, 121, -83, 63, 16, - 9, -10, 123, 86, -89, -42, 30, -51, -44, 30, -46, -84, 6, -87, -83, -117, -100, -10, 99, -53, -86, -38, -70, -116, 98, -57, -101, 60, 67, 27, -81, - 99, -44, 74, -74, -29, 85, 78, -17, -74, 76, 47, 97, 120, -40, 91, 91, -57, 35, -84, 28, -68, 80, 90, -91, 95, 24, -69, 96, -107, -31, -100, -33, - 54, -39, -118, -28, -23, -31, -80, -30, 94, -13, 26, 56, 41, -32, 50, 14, 63, -119, -105, 106, -99, 1, -35, -43, 82, 68, -4, -94, 46, 36, -33, 67, + 95, -18, 112, -22, -48, -67, 43, 71, -43, 99, -112, 5, -36, 1, 120, -109, -119, -91, 113, 112, -42, -22, -31, 31, -17, 47, 32, -2, -112, -62, -53, 51, 98, + 99, -58, 62, 91, -24, 35, -37, 53, 66, -18, -68, -39, -38, 91, -124, -27, 68, -10, 39, 40, -45, 87, -64, -90, 58, -3, -39, 1, 89, -75, -88, 121, -72, 40, + -14, 88, 107, 7, -117, 70, 46, -7, -49, -117, 36, 98, 39, -128, 79, -63, -94, -81, -57, -71, -43, -13, 10, -69, -54, -99, 2, 21, -49, 89, 84, 111, -121, + 108, 23, -107, 55, -6, 62, -86, 74, 6, 9, 58, -71, 11, 96, -115, 120, -83, 30, -63, -125, 29, 67, -80, 15, 62, -111, -40, -6, 32, 72, -5, -113, -66, -33, + -91, -47, -42, -104, -61, 107, -53, 105, 78, 96, 100, 61, -94, -28, -38, -87, -44, -125, 29, 85, -108, 93, 121, -83, 63, 16, 9, -10, 123, 86, -89, -42, + 30, -51, -44, 30, -46, -84, 6, -87, -83, -117, -100, -10, 99, -53, -86, -38, -70, -116, 98, -57, -101, 60, 67, 27, -81, 99, -44, 74, -74, -29, 85, 78, + -17, -74, 76, 47, 97, 120, -40, 91, 91, -57, 35, -84, 28, -68, 80, 90, -91, 95, 24, -69, 96, -107, -31, -100, -33, 54, -39, -118, -28, -23, -31, -80, -30, + 94, -13, 26, 56, 41, -32, 50, 14, 63, -119, -105, 106, -99, 1, -35, -43, 82, 68, -4, -94, 46, 36, -33, 67, ] // convert unsigned bytes from Java to numbers diff --git a/packages/tutanota-crypto/test/tsconfig.json b/packages/tutanota-crypto/test/tsconfig.json index 17378323ea7..f9eb7d991f3 100644 --- a/packages/tutanota-crypto/test/tsconfig.json +++ b/packages/tutanota-crypto/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig_common.json", + "extends": "../../../tsconfig_common.json5", "include": ["../../../types/*.d.ts"], "files": ["Suite.ts"], "compilerOptions": { diff --git a/packages/tutanota-crypto/tsconfig.json b/packages/tutanota-crypto/tsconfig.json index 9dea60f76fa..7b42b773db5 100644 --- a/packages/tutanota-crypto/tsconfig.json +++ b/packages/tutanota-crypto/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig_common.json", + "extends": "../../tsconfig_common.json5", "include": ["../../types/*.d.ts", "lib/encryption", "lib/hashes", "lib/misc", "lib/random"], "files": [ "lib/index.ts", diff --git a/packages/tutanota-error/tsconfig.json b/packages/tutanota-error/tsconfig.json index 870749953ec..5a735760ed7 100644 --- a/packages/tutanota-error/tsconfig.json +++ b/packages/tutanota-error/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig_common.json", + "extends": "../../tsconfig_common.json5", "include": ["lib", "../../types/"], "compilerOptions": { "outDir": "dist", diff --git a/packages/tutanota-test-utils/lib/TestUtils.ts b/packages/tutanota-test-utils/lib/TestUtils.ts index 1ee0a193f91..4cf9460d87c 100644 --- a/packages/tutanota-test-utils/lib/TestUtils.ts +++ b/packages/tutanota-test-utils/lib/TestUtils.ts @@ -93,10 +93,10 @@ export function replaceAllMaps(toReplace: any): any { return toReplace instanceof Map ? replaceAllMaps(mapToObject(toReplace)) : toReplace instanceof Array - ? toReplace.map(replaceAllMaps) - : toReplace != null && Object.getPrototypeOf(toReplace) === (Object as any).prototype // plain object - ? mapObject(replaceAllMaps, toReplace) - : toReplace + ? toReplace.map(replaceAllMaps) + : toReplace != null && Object.getPrototypeOf(toReplace) === (Object as any).prototype // plain object + ? mapObject(replaceAllMaps, toReplace) + : toReplace } export async function assertThrows(expected: Class, fn: () => Promise): Promise { diff --git a/packages/tutanota-test-utils/tsconfig.json b/packages/tutanota-test-utils/tsconfig.json index ce243ba0595..983e8d6895b 100644 --- a/packages/tutanota-test-utils/tsconfig.json +++ b/packages/tutanota-test-utils/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig_common.json", + "extends": "../../tsconfig_common.json5", "include": ["lib", "../../types/"], "compilerOptions": { "outDir": "dist", diff --git a/packages/tutanota-usagetests/lib/model/Stage.ts b/packages/tutanota-usagetests/lib/model/Stage.ts index 9785e62ce0b..8fa0db0e306 100644 --- a/packages/tutanota-usagetests/lib/model/Stage.ts +++ b/packages/tutanota-usagetests/lib/model/Stage.ts @@ -16,7 +16,12 @@ export class Stage { readonly collectedMetrics = new Map() readonly metricConfigs = new Map() - constructor(readonly number: number, private readonly test: UsageTest, readonly minPings: number, readonly maxPings: number) {} + constructor( + readonly number: number, + private readonly test: UsageTest, + readonly minPings: number, + readonly maxPings: number, + ) {} /** * Attempts to complete the stage and returns true if a ping has been sent successfully. diff --git a/packages/tutanota-usagetests/lib/model/UsageTest.ts b/packages/tutanota-usagetests/lib/model/UsageTest.ts index 37325a8b783..f3420c108b5 100644 --- a/packages/tutanota-usagetests/lib/model/UsageTest.ts +++ b/packages/tutanota-usagetests/lib/model/UsageTest.ts @@ -27,7 +27,12 @@ export class UsageTest { public recordTime = false private lastPingDate?: Date - constructor(readonly testId: string, readonly testName: string, public variant: number, public active: boolean) {} + constructor( + readonly testId: string, + readonly testName: string, + public variant: number, + public active: boolean, + ) {} /** Tries to restart the test (by sending stage 0) regardless of the allowEarlyRestarts setting @@ -100,9 +105,7 @@ export class UsageTest { let currentStage = this.stages.get(i) if (!!currentStage && currentStage.minPings != 0) { - console.log( - `Not sending ping for stage (${stage.number}) in wrong order of test '${this.testId}' because stage ${currentStage.number} is not finished`, - ) + console.log(`Not sending ping for stage (${stage.number}) in wrong order of test '${this.testId}' because stage ${currentStage.number} is not finished`) return false } } diff --git a/packages/tutanota-usagetests/test/tsconfig.json b/packages/tutanota-usagetests/test/tsconfig.json index 86d65eb99e7..2e6db463a2a 100644 --- a/packages/tutanota-usagetests/test/tsconfig.json +++ b/packages/tutanota-usagetests/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig_common.json", + "extends": "../../../tsconfig_common.json5", "files": ["Suite.ts"], "include": [], "compilerOptions": { diff --git a/packages/tutanota-usagetests/tsconfig.json b/packages/tutanota-usagetests/tsconfig.json index b1a3942df13..e1965b166ed 100644 --- a/packages/tutanota-usagetests/tsconfig.json +++ b/packages/tutanota-usagetests/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig_common.json", + "extends": "../../tsconfig_common.json5", "include": ["lib/**/*"], "files": ["lib/index.ts"], "compilerOptions": { diff --git a/packages/tutanota-utils/lib/LazyLoaded.ts b/packages/tutanota-utils/lib/LazyLoaded.ts index 65cfe24a2b1..9876156e866 100644 --- a/packages/tutanota-utils/lib/LazyLoaded.ts +++ b/packages/tutanota-utils/lib/LazyLoaded.ts @@ -11,7 +11,10 @@ export class LazyLoaded { * @param loadFunction The function that actually loads the object as soon as getAsync() is called the first time. * @param defaultValue The value that shall be returned by getSync() or getLoaded() as long as the object is not loaded yet. */ - constructor(private readonly loadFunction: lazyAsync, private defaultValue: T | null = null) {} + constructor( + private readonly loadFunction: lazyAsync, + private defaultValue: T | null = null, + ) {} load(): this { this.getAsync() diff --git a/packages/tutanota-utils/lib/SortedArray.ts b/packages/tutanota-utils/lib/SortedArray.ts index 734ef2c34be..df905803583 100644 --- a/packages/tutanota-utils/lib/SortedArray.ts +++ b/packages/tutanota-utils/lib/SortedArray.ts @@ -13,7 +13,10 @@ function numberCompare(a: number, b: number): number { * An array that keeps itself sorted */ export class SortedArray { - private constructor(private contents: T[], private compareFn: CompareFn) {} + private constructor( + private contents: T[], + private compareFn: CompareFn, + ) {} static fromNumbers(array: ReadonlyArray): SortedArray { return SortedArray.from(array, numberCompare) diff --git a/packages/tutanota-utils/test/ArrayUtilsTest.ts b/packages/tutanota-utils/test/ArrayUtilsTest.ts index 4a6e16dc9c1..eaea1cf94c6 100644 --- a/packages/tutanota-utils/test/ArrayUtilsTest.ts +++ b/packages/tutanota-utils/test/ArrayUtilsTest.ts @@ -172,12 +172,7 @@ o.spec("array utils", function () { const same = (l, r) => l.id === r.id - function test( - arr: Array, - insert: ObjectWithId, - expect: Array, - equalsFn?: (arg0: ObjectWithId, arg1: ObjectWithId) => boolean, - ) { + function test(arr: Array, insert: ObjectWithId, expect: Array, equalsFn?: (arg0: ObjectWithId, arg1: ObjectWithId) => boolean) { insertIntoSortedArray(insert, arr, comparator, equalsFn) o(arr).deepEquals(expect) } diff --git a/packages/tutanota-utils/test/tsconfig.json b/packages/tutanota-utils/test/tsconfig.json index e3f61415118..13b9f754cba 100644 --- a/packages/tutanota-utils/test/tsconfig.json +++ b/packages/tutanota-utils/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig_common.json", + "extends": "../../../tsconfig_common.json5", "include": ["../../../types/*.d.ts"], "files": ["Suite.ts"], "compilerOptions": { diff --git a/packages/tutanota-utils/tsconfig.json b/packages/tutanota-utils/tsconfig.json index 870749953ec..5a735760ed7 100644 --- a/packages/tutanota-utils/tsconfig.json +++ b/packages/tutanota-utils/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig_common.json", + "extends": "../../tsconfig_common.json5", "include": ["lib", "../../types/"], "compilerOptions": { "outDir": "dist", diff --git a/src/api/common/TutanotaConstants.ts b/src/api/common/TutanotaConstants.ts index a5c1c4dd6bd..cb6e5d0c725 100644 --- a/src/api/common/TutanotaConstants.ts +++ b/src/api/common/TutanotaConstants.ts @@ -26,11 +26,14 @@ export const getMailFolderType = (folder: MailFolder): MailFolderType => downcas type ObjectPropertyKey = string | number | symbol export const reverse = (objectMap: Record): Record => - Object.keys(objectMap).reduce((r, k) => { - // @ts-ignore - const v = objectMap[downcast(k)] - return Object.assign(r, { [v]: k }) - }, {} as Record) + Object.keys(objectMap).reduce( + (r, k) => { + // @ts-ignore + const v = objectMap[downcast(k)] + return Object.assign(r, { [v]: k }) + }, + {} as Record, + ) export const enum OutOfOfficeNotificationMessageType { Default = "0", diff --git a/src/api/common/threading/CrossOriginTransport.ts b/src/api/common/threading/CrossOriginTransport.ts index d36bfa19423..28395a8ab40 100644 --- a/src/api/common/threading/CrossOriginTransport.ts +++ b/src/api/common/threading/CrossOriginTransport.ts @@ -8,7 +8,10 @@ export class CrossOriginTransport { * @param targetWindow the window object to post / receive messages to, obtained from iframe.contentWindow or window.opener * @param targetOrigin the exact origin of targetWindow * */ - constructor(private readonly targetWindow: Window, private readonly targetOrigin: string) {} + constructor( + private readonly targetWindow: Window, + private readonly targetOrigin: string, + ) {} private readonly handleMessage = (event: MessageEvent>) => { if (event.source !== this.targetWindow) { diff --git a/src/api/common/utils/ObservableLazyLoaded.ts b/src/api/common/utils/ObservableLazyLoaded.ts index 160945e835d..c890cd60d5c 100644 --- a/src/api/common/utils/ObservableLazyLoaded.ts +++ b/src/api/common/utils/ObservableLazyLoaded.ts @@ -6,7 +6,10 @@ export class ObservableLazyLoaded { private lazyLoaded: LazyLoaded readonly stream: Stream = stream() - constructor(loadFunction: lazyAsync, private readonly defaultValue: T) { + constructor( + loadFunction: lazyAsync, + private readonly defaultValue: T, + ) { this.lazyLoaded = new LazyLoaded(async () => { const value = await loadFunction() this.stream(value) diff --git a/src/api/common/utils/ProgressMonitor.ts b/src/api/common/utils/ProgressMonitor.ts index 0ec538335e3..976f382c957 100644 --- a/src/api/common/utils/ProgressMonitor.ts +++ b/src/api/common/utils/ProgressMonitor.ts @@ -21,7 +21,10 @@ export interface IProgressMonitor { export class ProgressMonitor implements IProgressMonitor { workCompleted: number - constructor(readonly totalWork: number, private readonly updater: ProgressListener) { + constructor( + readonly totalWork: number, + private readonly updater: ProgressListener, + ) { this.workCompleted = 0 } diff --git a/src/api/common/utils/Scheduler.ts b/src/api/common/utils/Scheduler.ts index 066d6cdf18b..9b8a6dd356d 100644 --- a/src/api/common/utils/Scheduler.ts +++ b/src/api/common/utils/Scheduler.ts @@ -42,7 +42,11 @@ export class SchedulerImpl implements Scheduler { */ private readonly bridgedTimeouts: Map - constructor(private readonly dateProvider: DateProvider, private readonly systemTimeout: SystemTimeout, private readonly systemInterval: SystemInterval) { + constructor( + private readonly dateProvider: DateProvider, + private readonly systemTimeout: SystemTimeout, + private readonly systemInterval: SystemInterval, + ) { this.bridgedTimeouts = new Map() } diff --git a/src/api/main/EntropyCollector.ts b/src/api/main/EntropyCollector.ts index a7cc5157d5a..1605884c5ad 100644 --- a/src/api/main/EntropyCollector.ts +++ b/src/api/main/EntropyCollector.ts @@ -19,7 +19,11 @@ export class EntropyCollector { // the entropy is cached and transmitted to the worker in defined intervals private entropyCache: EntropyDataChunk[] = [] - constructor(private readonly entropyFacade: EntropyFacade, private readonly scheduler: Scheduler, private readonly window: Window) {} + constructor( + private readonly entropyFacade: EntropyFacade, + private readonly scheduler: Scheduler, + private readonly window: Window, + ) {} private mouse = (e: MouseEvent) => { const value = e.clientX ^ e.clientY diff --git a/src/api/main/MainLocator.ts b/src/api/main/MainLocator.ts index d1a9dabc9c5..e2a5742b1ee 100644 --- a/src/api/main/MainLocator.ts +++ b/src/api/main/MainLocator.ts @@ -183,14 +183,7 @@ class MainLocator { }) readonly offlineIndicatorViewModel = lazyMemoized(async () => { - return new OfflineIndicatorViewModel( - this.cacheStorage, - this.loginListener, - this.connectivityModel, - this.logins, - this.progressTracker, - await this.redraw(), - ) + return new OfflineIndicatorViewModel(this.cacheStorage, this.loginListener, this.connectivityModel, this.logins, this.progressTracker, await this.redraw()) }) async appHeaderAttrs(): Promise { @@ -385,15 +378,7 @@ class MainLocator { const factory = await this.mailViewerViewModelFactory() const m = await import("mithril") return (options: CreateMailViewerOptions) => { - return new ConversationViewModel( - options, - (options) => factory(options), - this.entityClient, - this.eventController, - deviceConfig, - this.mailModel, - m.redraw, - ) + return new ConversationViewModel(options, (options) => factory(options), this.entityClient, this.eventController, deviceConfig, this.mailModel, m.redraw) } } @@ -521,7 +506,9 @@ class MainLocator { const domainConfig = isBrowser() ? locator.domainConfigProvider().getDomainConfigForHostname(location.hostname, location.protocol, location.port) : // in this case, we know that we have a staticUrl set that we need to use - locator.domainConfigProvider().getCurrentDomainConfig() + locator + .domainConfigProvider() + .getCurrentDomainConfig() return new LoginViewModel( locator.logins, locator.credentialsProvider, @@ -676,13 +663,7 @@ class MainLocator { isApp(), ) } - this.secondFactorHandler = new SecondFactorHandler( - this.eventController, - this.entityClient, - this.webAuthn, - this.loginFacade, - this.domainConfigProvider(), - ) + this.secondFactorHandler = new SecondFactorHandler(this.eventController, this.entityClient, this.webAuthn, this.loginFacade, this.domainConfigProvider()) this.loginListener = new PageContextLoginListener(this.secondFactorHandler) this.credentialsProvider = await createCredentialsProvider( deviceEncryptionFacade, diff --git a/src/api/main/UpgradeRequiredError.ts b/src/api/main/UpgradeRequiredError.ts index 2f00e51d728..51704685484 100644 --- a/src/api/main/UpgradeRequiredError.ts +++ b/src/api/main/UpgradeRequiredError.ts @@ -13,7 +13,10 @@ export class UpgradeRequiredError extends TutanotaError { * @param message TranslationKey of a message for the user. * @param plans Array of AvailablePlanTypes the user can upgrade to in order to be able to do what they are trying to do. */ - constructor(readonly message: TranslationKeyType, readonly plans: Array) { + constructor( + readonly message: TranslationKeyType, + readonly plans: Array, + ) { super("UpgradeRequiredError", message) } } diff --git a/src/api/worker/EventQueue.ts b/src/api/worker/EventQueue.ts index dddcf0aadc0..dfebf644bf7 100644 --- a/src/api/worker/EventQueue.ts +++ b/src/api/worker/EventQueue.ts @@ -200,8 +200,7 @@ export class EventQueue { // find first move or delete (at different list) operation const firstMoveIndex = this._eventQueue.findIndex( (queuedBatch) => - this._processingBatch !== queuedBatch && - containsEventOfType(queuedBatch.events as readonly EntityUpdateData[], OperationType.DELETE, elementId), + this._processingBatch !== queuedBatch && containsEventOfType(queuedBatch.events as readonly EntityUpdateData[], OperationType.DELETE, elementId), ) if (firstMoveIndex !== -1) { @@ -225,14 +224,10 @@ export class EventQueue { // It is likely custom id instance which got re-created newBatch.events.push(newEvent) } else { - throw new ProgrammingError( - `Impossible modification combination ${lastEntityModification} ${newEntityModification} ${JSON.stringify(newEvent)}`, - ) + throw new ProgrammingError(`Impossible modification combination ${lastEntityModification} ${newEntityModification} ${JSON.stringify(newEvent)}`) } } else { - throw new ProgrammingError( - `Impossible modification combination ${lastEntityModification} ${newEntityModification} ${JSON.stringify(newEvent)}`, - ) + throw new ProgrammingError(`Impossible modification combination ${lastEntityModification} ${newEntityModification} ${JSON.stringify(newEvent)}`) } } } diff --git a/src/api/worker/ProgressMonitorDelegate.ts b/src/api/worker/ProgressMonitorDelegate.ts index 32ec107182c..29b93192549 100644 --- a/src/api/worker/ProgressMonitorDelegate.ts +++ b/src/api/worker/ProgressMonitorDelegate.ts @@ -5,7 +5,10 @@ import { ExposedProgressTracker } from "../main/ProgressTracker.js" export class ProgressMonitorDelegate implements IProgressMonitor { private readonly ref: Promise - constructor(private readonly progressTracker: ExposedProgressTracker, readonly totalAmount: number) { + constructor( + private readonly progressTracker: ExposedProgressTracker, + readonly totalAmount: number, + ) { this.ref = progressTracker.registerMonitor(totalAmount) } diff --git a/src/api/worker/SuspensionHandler.ts b/src/api/worker/SuspensionHandler.ts index fb5954b5f1e..476ea56524f 100644 --- a/src/api/worker/SuspensionHandler.ts +++ b/src/api/worker/SuspensionHandler.ts @@ -10,7 +10,10 @@ export class SuspensionHandler { _hasSentInfoMessage: boolean _timeout: SystemTimeout - constructor(private readonly infoMessageHandler: InfoMessageHandler, systemTimeout: SystemTimeout) { + constructor( + private readonly infoMessageHandler: InfoMessageHandler, + systemTimeout: SystemTimeout, + ) { this._isSuspended = false this._suspendedUntil = 0 this._deferredRequests = [] diff --git a/src/api/worker/crypto/CryptoFacade.ts b/src/api/worker/crypto/CryptoFacade.ts index 2ea5562a1ab..589295bf009 100644 --- a/src/api/worker/crypto/CryptoFacade.ts +++ b/src/api/worker/crypto/CryptoFacade.ts @@ -299,10 +299,7 @@ export class CryptoFacade { private trySymmetricPermission(listPermissions: Permission[]) { const symmetricPermission: Permission | null = listPermissions.find( - (p) => - (p.type === PermissionType.Public_Symmetric || p.type === PermissionType.Symmetric) && - p._ownerGroup && - this.userFacade.hasGroup(p._ownerGroup), + (p) => (p.type === PermissionType.Public_Symmetric || p.type === PermissionType.Symmetric) && p._ownerGroup && this.userFacade.hasGroup(p._ownerGroup), ) ?? null if (symmetricPermission) { @@ -473,11 +470,7 @@ export class CryptoFacade { } } - private async resolveWithPublicOrExternalPermission( - listPermissions: Permission[], - instance: Record, - typeModel: TypeModel, - ): Promise { + private async resolveWithPublicOrExternalPermission(listPermissions: Permission[], instance: Record, typeModel: TypeModel): Promise { const pubOrExtPermission = listPermissions.find((p) => p.type === PermissionType.Public || p.type === PermissionType.External) ?? null if (pubOrExtPermission == null) { diff --git a/src/api/worker/facades/EntropyFacade.ts b/src/api/worker/facades/EntropyFacade.ts index f57570dbef1..797243290d0 100644 --- a/src/api/worker/facades/EntropyFacade.ts +++ b/src/api/worker/facades/EntropyFacade.ts @@ -18,7 +18,11 @@ export class EntropyFacade { private newEntropy: number = -1 private lastEntropyUpdate: number = Date.now() - constructor(private readonly userFacade: UserFacade, private readonly serviceExecutor: IServiceExecutor, private readonly random: Randomizer) {} + constructor( + private readonly userFacade: UserFacade, + private readonly serviceExecutor: IServiceExecutor, + private readonly random: Randomizer, + ) {} /** * Adds entropy to the randomizer. Updated the stored entropy for a user when enough entropy has been collected. diff --git a/src/api/worker/facades/LoginFacade.ts b/src/api/worker/facades/LoginFacade.ts index c759e3f7420..db248cfa902 100644 --- a/src/api/worker/facades/LoginFacade.ts +++ b/src/api/worker/facades/LoginFacade.ts @@ -245,13 +245,7 @@ export class LoginFacade { timeRangeDays: null, forceNewDatabase, }) - const { user, userGroupInfo, accessToken } = await this.initSession( - sessionData.userId, - sessionData.accessToken, - userPassphraseKey, - sessionType, - cacheInfo, - ) + const { user, userGroupInfo, accessToken } = await this.initSession(sessionData.userId, sessionData.accessToken, userPassphraseKey, sessionType, cacheInfo) return { user, @@ -453,9 +447,7 @@ export class LoginFacade { timeRangeDays: number | null, ): Promise { if (this.userFacade.getUser() != null) { - throw new ProgrammingError( - `Trying to resume the session for user ${credentials.userId} while already logged in for ${this.userFacade.getUser()?._id}`, - ) + throw new ProgrammingError(`Trying to resume the session for user ${credentials.userId} while already logged in for ${this.userFacade.getUser()?._id}`) } if (this.asyncLoginState.state !== "idle") { throw new ProgrammingError(`Trying to resume the session for user ${credentials.userId} while the asyncLoginState is ${this.asyncLoginState.state}`) @@ -580,13 +572,7 @@ export class LoginFacade { userPassphraseKey = await this.loadUserPassphraseKey(credentials.login, passphrase) } - const { user, userGroupInfo } = await this.initSession( - sessionData.userId, - credentials.accessToken, - userPassphraseKey, - SessionType.Persistent, - cacheInfo, - ) + const { user, userGroupInfo } = await this.initSession(sessionData.userId, credentials.accessToken, userPassphraseKey, SessionType.Persistent, cacheInfo) this.asyncLoginState = { state: "idle" } diff --git a/src/api/worker/facades/lazy/CustomerFacade.ts b/src/api/worker/facades/lazy/CustomerFacade.ts index 4d5946cdf50..0f289c5ae02 100644 --- a/src/api/worker/facades/lazy/CustomerFacade.ts +++ b/src/api/worker/facades/lazy/CustomerFacade.ts @@ -118,11 +118,7 @@ export class CustomerFacade { const pubEccKey = keyData.systemAdminPubEccKey const pubKyberKey = keyData.systemAdminPubKyberKey const systemAdminPubKeys = { pubEccKey, pubKyberKey, pubRsaKey } - const { pubEncSymKey, cryptoProtocolVersion } = await this.cryptoFacade.encryptPubSymKey( - sessionKey, - systemAdminPubKeys, - this.userFacade.getUserGroupId(), - ) + const { pubEncSymKey, cryptoProtocolVersion } = await this.cryptoFacade.encryptPubSymKey(sessionKey, systemAdminPubKeys, this.userFacade.getUserGroupId()) const data = createBrandingDomainData({ domain: domainName, diff --git a/src/api/worker/facades/lazy/MailFacade.ts b/src/api/worker/facades/lazy/MailFacade.ts index 531ee8c1d63..6c7b825bb7b 100644 --- a/src/api/worker/facades/lazy/MailFacade.ts +++ b/src/api/worker/facades/lazy/MailFacade.ts @@ -371,9 +371,7 @@ export class MailFacade { // check which attachments have been removed for (const fileId of existingFileIds) { if ( - !attachments.some( - (attachment) => attachment._type !== "DataFile" && attachment._type !== "FileReference" && isSameId(getLetId(attachment), fileId), - ) + !attachments.some((attachment) => attachment._type !== "DataFile" && attachment._type !== "FileReference" && isSameId(getLetId(attachment), fileId)) ) { removedAttachmentIds.push(fileId) } @@ -738,19 +736,18 @@ export class MailFacade { externalUser.memberships.find((m) => m.groupType === GroupType.Mail), "no mail group membership on external user", ).group - return Promise.all([ - this.entityClient.load(GroupTypeRef, mailGroupId), - this.entityClient.load(GroupTypeRef, externalUserReference.userGroup), - ]).then(([externalMailGroup, externalUserGroup]) => { - const userAdminKey = assertNotNull(externalUserGroup.adminGroupEncGKey, "no adminGroupEncGKey on external user group") - const mailAdminKey = assertNotNull(externalMailGroup.adminGroupEncGKey, "no adminGroupEncGKey on external mail group") - let externalUserGroupKey = decryptKey(this.userFacade.getUserGroupKey(), userAdminKey) - let externalMailGroupKey = decryptKey(externalUserGroupKey, mailAdminKey) - return { - externalUserGroupKey, - externalMailGroupKey, - } - }) + return Promise.all([this.entityClient.load(GroupTypeRef, mailGroupId), this.entityClient.load(GroupTypeRef, externalUserReference.userGroup)]).then( + ([externalMailGroup, externalUserGroup]) => { + const userAdminKey = assertNotNull(externalUserGroup.adminGroupEncGKey, "no adminGroupEncGKey on external user group") + const mailAdminKey = assertNotNull(externalMailGroup.adminGroupEncGKey, "no adminGroupEncGKey on external mail group") + let externalUserGroupKey = decryptKey(this.userFacade.getUserGroupKey(), userAdminKey) + let externalMailGroupKey = decryptKey(externalUserGroupKey, mailAdminKey) + return { + externalUserGroupKey, + externalMailGroupKey, + } + }, + ) }) }) .catch( diff --git a/src/api/worker/offline/OfflineStorage.ts b/src/api/worker/offline/OfflineStorage.ts index 64d060be54f..1d6ef1a2215 100644 --- a/src/api/worker/offline/OfflineStorage.ts +++ b/src/api/worker/offline/OfflineStorage.ts @@ -781,5 +781,8 @@ export function sql(queryParts: TemplateStringsArray, ...paramInstances: (SqlVal } class SqlFragment { - constructor(readonly text: string, readonly params: SqlValue[]) {} + constructor( + readonly text: string, + readonly params: SqlValue[], + ) {} } diff --git a/src/api/worker/offline/OfflineStorageMigrator.ts b/src/api/worker/offline/OfflineStorageMigrator.ts index a218a8d37c8..56c47891908 100644 --- a/src/api/worker/offline/OfflineStorageMigrator.ts +++ b/src/api/worker/offline/OfflineStorageMigrator.ts @@ -43,7 +43,10 @@ const CURRENT_OFFLINE_VERSION = 1 * Migrations might read and write to the database and they should use StandardMigrations when needed. */ export class OfflineStorageMigrator { - constructor(private readonly migrations: ReadonlyArray, private readonly modelInfos: ModelInfos) {} + constructor( + private readonly migrations: ReadonlyArray, + private readonly modelInfos: ModelInfos, + ) {} async migrate(storage: OfflineStorage, sqlCipherFacade: SqlCipherFacade) { const meta = await storage.dumpMetadata() diff --git a/src/api/worker/pdf/PdfDocument.ts b/src/api/worker/pdf/PdfDocument.ts index 98ab5bb7820..a34bc03e4a3 100644 --- a/src/api/worker/pdf/PdfDocument.ts +++ b/src/api/worker/pdf/PdfDocument.ts @@ -133,9 +133,7 @@ export class PdfDocument { if (text === "") return this // If no position was specified, don't update the text cursor position if (position !== ORIGIN_POSITION) { - this.textStream += `1 0 0 -1 ${mmToPSPoint(position[0])} ${mmToPSPoint(position[1]) + this.currentFontSize} Tm <${toUnicodePoint(text).join( - "", - )}> Tj ` + this.textStream += `1 0 0 -1 ${mmToPSPoint(position[0])} ${mmToPSPoint(position[1]) + this.currentFontSize} Tm <${toUnicodePoint(text).join("")}> Tj ` } else { this.textStream += `<${toUnicodePoint(text).join("")}> Tj ` } diff --git a/src/api/worker/pdf/PdfWriter.ts b/src/api/worker/pdf/PdfWriter.ts index 3566e1b2899..4be68f6539f 100644 --- a/src/api/worker/pdf/PdfWriter.ts +++ b/src/api/worker/pdf/PdfWriter.ts @@ -191,11 +191,10 @@ export class PdfWriter { const baseUrl = typeof location === "undefined" ? "" : location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "") if (!this.cachedResources) { this.cachedResources = await Promise.all( - ["/pdf/SourceSans3-Regular.ttf", "/pdf/SourceSans3-Bold.ttf", "/pdf/sRGB2014.icc", "/pdf/tutanota_logo_en.jpg", "/pdf/metadata.xml"].map( - (url) => - typeof this.customFetch !== "undefined" - ? this.customFetch(baseUrl + url).then((r) => r.arrayBuffer()) - : fetch(baseUrl + url).then((r) => r.arrayBuffer()), + ["/pdf/SourceSans3-Regular.ttf", "/pdf/SourceSans3-Bold.ttf", "/pdf/sRGB2014.icc", "/pdf/tutanota_logo_en.jpg", "/pdf/metadata.xml"].map((url) => + typeof this.customFetch !== "undefined" + ? this.customFetch(baseUrl + url).then((r) => r.arrayBuffer()) + : fetch(baseUrl + url).then((r) => r.arrayBuffer()), ), ) } diff --git a/src/api/worker/rest/CacheStorageProxy.ts b/src/api/worker/rest/CacheStorageProxy.ts index 64a7759bb03..e09ec263da9 100644 --- a/src/api/worker/rest/CacheStorageProxy.ts +++ b/src/api/worker/rest/CacheStorageProxy.ts @@ -46,7 +46,10 @@ type SomeStorage = OfflineStorage | EphemeralCacheStorage export class LateInitializedCacheStorageImpl implements CacheStorageLateInitializer, CacheStorage { private _inner: SomeStorage | null = null - constructor(private readonly worker: WorkerImpl, private readonly offlineStorageProvider: () => Promise) {} + constructor( + private readonly worker: WorkerImpl, + private readonly offlineStorageProvider: () => Promise, + ) {} private get inner(): CacheStorage { if (this._inner == null) { @@ -71,9 +74,7 @@ export class LateInitializedCacheStorageImpl implements CacheStorageLateInitiali this._inner?.deinit() } - private async getStorage( - args: OfflineStorageArgs | EphemeralStorageArgs, - ): Promise<{ storage: SomeStorage; isPersistent: boolean; isNewOfflineDb: boolean }> { + private async getStorage(args: OfflineStorageArgs | EphemeralStorageArgs): Promise<{ storage: SomeStorage; isPersistent: boolean; isNewOfflineDb: boolean }> { if (args.type === "offline") { try { const storage = await this.offlineStorageProvider() diff --git a/src/api/worker/rest/DefaultEntityRestCache.ts b/src/api/worker/rest/DefaultEntityRestCache.ts index b97b42ac53b..7d30a53d9b7 100644 --- a/src/api/worker/rest/DefaultEntityRestCache.ts +++ b/src/api/worker/rest/DefaultEntityRestCache.ts @@ -214,7 +214,10 @@ export interface CacheStorage extends ExposedCacheStorage { * lowerRangeId may be anything from MIN_ID to c, upperRangeId may be anything from k to MAX_ID */ export class DefaultEntityRestCache implements EntityRestCache { - constructor(private readonly entityRestClient: EntityRestClient, private readonly storage: CacheStorage) {} + constructor( + private readonly entityRestClient: EntityRestClient, + private readonly storage: CacheStorage, + ) {} async load( typeRef: TypeRef, @@ -623,8 +626,7 @@ export class DefaultEntityRestCache implements EntityRestCache { if (idsInCacheRange.length === 0) { postMultipleEventUpdates.push(updates) } else { - const updatesNotInCacheRange = - idsInCacheRange.length === updates.length ? [] : updates.filter((update) => !idsInCacheRange.includes(update.instanceId)) + const updatesNotInCacheRange = idsInCacheRange.length === updates.length ? [] : updates.filter((update) => !idsInCacheRange.includes(update.instanceId)) try { // loadMultiple is only called to cache the elements and check which ones return errors @@ -662,10 +664,7 @@ export class DefaultEntityRestCache implements EntityRestCache { continue } case OperationType.DELETE: { - if ( - isSameTypeRef(MailTypeRef, typeRef) && - containsEventOfType(updatesArray as Readonly, OperationType.CREATE, instanceId) - ) { + if (isSameTypeRef(MailTypeRef, typeRef) && containsEventOfType(updatesArray as Readonly, OperationType.CREATE, instanceId)) { // move for mail is handled in create event. } else if (isSameTypeRef(MailTypeRef, typeRef)) { // delete mailDetails if they are available (as we don't send an event for this type) diff --git a/src/api/worker/rest/EntityRestClient.ts b/src/api/worker/rest/EntityRestClient.ts index 483c092a79f..0404f51930a 100644 --- a/src/api/worker/rest/EntityRestClient.ts +++ b/src/api/worker/rest/EntityRestClient.ts @@ -169,14 +169,7 @@ export class EntityRestClient implements EntityRestInterface { count: String(count), reverse: String(reverse), } - const { path, headers, typeModel, queryParams } = await this._validateAndPrepareRestRequest( - typeRef, - listId, - null, - rangeRequestParams, - undefined, - undefined, - ) + const { path, headers, typeModel, queryParams } = await this._validateAndPrepareRestRequest(typeRef, listId, null, rangeRequestParams, undefined, undefined) // This should never happen if type checking is not bypassed with any if (typeModel.type !== Type.ListElement) throw new Error("only ListElement types are permitted") const json = await this.restClient.request(path, HttpMethod.GET, { diff --git a/src/api/worker/rest/RestClient.ts b/src/api/worker/rest/RestClient.ts index b55e3157c63..1ff540d3ccb 100644 --- a/src/api/worker/rest/RestClient.ts +++ b/src/api/worker/rest/RestClient.ts @@ -46,7 +46,10 @@ export class RestClient { // accurate to within a few seconds, depending on network speed private serverTimeOffsetMs: number | null = null - constructor(private readonly suspensionHandler: SuspensionHandler, private readonly domainConfig: DomainConfig) { + constructor( + private readonly suspensionHandler: SuspensionHandler, + private readonly domainConfig: DomainConfig, + ) { this.id = 0 } diff --git a/src/api/worker/rest/ServiceExecutor.ts b/src/api/worker/rest/ServiceExecutor.ts index 183992eb971..12f03869324 100644 --- a/src/api/worker/rest/ServiceExecutor.ts +++ b/src/api/worker/rest/ServiceExecutor.ts @@ -32,11 +32,7 @@ export class ServiceExecutor implements IServiceExecutor { private readonly cryptoFacade: lazy, ) {} - get( - service: S, - data: ParamTypeFromRef, - params?: ExtraServiceParams, - ): Promise> { + get(service: S, data: ParamTypeFromRef, params?: ExtraServiceParams): Promise> { return this.executeServiceRequest(service, HttpMethod.GET, data, params) } @@ -48,11 +44,7 @@ export class ServiceExecutor implements IServiceExecutor { return this.executeServiceRequest(service, HttpMethod.POST, data, params) } - put( - service: S, - data: ParamTypeFromRef, - params?: ExtraServiceParams, - ): Promise> { + put(service: S, data: ParamTypeFromRef, params?: ExtraServiceParams): Promise> { return this.executeServiceRequest(service, HttpMethod.PUT, data, params) } diff --git a/src/api/worker/search/ContactIndexer.ts b/src/api/worker/search/ContactIndexer.ts index 82a76a1cf38..4d85a224e91 100644 --- a/src/api/worker/search/ContactIndexer.ts +++ b/src/api/worker/search/ContactIndexer.ts @@ -169,12 +169,7 @@ export class ContactIndexer { this._core._processDeleted(event, indexUpdate), this.processNewContact(event).then((result) => { if (result) { - this._core.encryptSearchIndexEntries( - result.contact._id, - neverNull(result.contact._ownerGroup), - result.keyToIndexEntries, - indexUpdate, - ) + this._core.encryptSearchIndexEntries(result.contact._id, neverNull(result.contact._ownerGroup), result.keyToIndexEntries, indexUpdate) } }), ]) diff --git a/src/api/worker/search/DbFacade.ts b/src/api/worker/search/DbFacade.ts index 14e9149ccf4..8aff489d5ba 100644 --- a/src/api/worker/search/DbFacade.ts +++ b/src/api/worker/search/DbFacade.ts @@ -362,8 +362,7 @@ export class IndexedDbTransaction implements DbTransaction { if ( customTarget && customTarget.error && - (customTarget.error.name === "UnknownError" || - (typeof customTarget.error.message === "string" && customTarget.error.message.includes("UnknownError"))) + (customTarget.error.name === "UnknownError" || (typeof customTarget.error.message === "string" && customTarget.error.message.includes("UnknownError"))) ) { this._onUnknownError(customTarget.error) diff --git a/src/api/worker/search/Indexer.ts b/src/api/worker/search/Indexer.ts index 6bc9a991127..c2b5c6f37af 100644 --- a/src/api/worker/search/Indexer.ts +++ b/src/api/worker/search/Indexer.ts @@ -625,9 +625,7 @@ export class Indexer { eventBatchIds: groupData.lastBatchIds, } } else { - throw new InvalidDatabaseStateError( - "no group data for group " + membership.group + " indexedGroupIds: " + this._indexedGroupIds.join(","), - ) + throw new InvalidDatabaseStateError("no group data for group " + membership.group + " indexedGroupIds: " + this._indexedGroupIds.join(",")) } }) }), @@ -747,9 +745,7 @@ export class Indexer { if (timeSinceLastIndex >= daysToMillis(ENTITY_EVENT_BATCH_TTL_DAYS)) { throw new OutOfSyncError( - `we haven't updated the index in ${millisToDays(timeSinceLastIndex)} days. last update was ${new Date( - neverNull(lastIndexTimeMs), - ).toString()}`, + `we haven't updated the index in ${millisToDays(timeSinceLastIndex)} days. last update was ${new Date(neverNull(lastIndexTimeMs)).toString()}`, ) } } diff --git a/src/api/worker/search/IndexerCore.ts b/src/api/worker/search/IndexerCore.ts index 4f2605c3997..b75639a5888 100644 --- a/src/api/worker/search/IndexerCore.ts +++ b/src/api/worker/search/IndexerCore.ts @@ -483,14 +483,7 @@ export class IndexerCore { keys, (encWordB64) => { const encryptedEntries = neverNull(indexUpdate.create.indexMap.get(encWordB64)) - return this._putEncryptedEntity( - indexUpdate.typeInfo.appId, - indexUpdate.typeInfo.typeId, - transaction, - encWordB64, - encWordToMetaRow, - encryptedEntries, - ) + return this._putEncryptedEntity(indexUpdate.typeInfo.appId, indexUpdate.typeInfo.typeId, transaction, encWordB64, encWordToMetaRow, encryptedEntries) }, { concurrency: 2, diff --git a/src/api/worker/search/MailIndexer.ts b/src/api/worker/search/MailIndexer.ts index ffb0b0832a4..08dc0af1ac3 100644 --- a/src/api/worker/search/MailIndexer.ts +++ b/src/api/worker/search/MailIndexer.ts @@ -164,12 +164,7 @@ export class MailIndexer { const mailOwnerEncSessionKey = assertNotNull(mail._ownerEncSessionKey) const mailDetailsDraftId = assertNotNull(mail.mailDetailsDraft) mailWrapper = await this._defaultCachingEntity - .loadMultiple( - MailDetailsDraftTypeRef, - listIdPart(mailDetailsDraftId), - [elementIdPart(mailDetailsDraftId)], - async () => mailOwnerEncSessionKey, - ) + .loadMultiple(MailDetailsDraftTypeRef, listIdPart(mailDetailsDraftId), [elementIdPart(mailDetailsDraftId)], async () => mailOwnerEncSessionKey) .then((d) => { const draft = first(d) if (draft == null) { @@ -182,12 +177,7 @@ export class MailIndexer { const mailOwnerEncSessionKey = assertNotNull(mail._ownerEncSessionKey) const mailDetailsBlobId = neverNull(mail.mailDetails) mailWrapper = await this._defaultCachingEntity - .loadMultiple( - MailDetailsBlobTypeRef, - listIdPart(mailDetailsBlobId), - [elementIdPart(mailDetailsBlobId)], - async () => mailOwnerEncSessionKey, - ) + .loadMultiple(MailDetailsBlobTypeRef, listIdPart(mailDetailsBlobId), [elementIdPart(mailDetailsBlobId)], async () => mailOwnerEncSessionKey) .then((d) => { const blob = first(d) if (blob == null) { @@ -344,9 +334,7 @@ export class MailIndexer { // group data is not available if group has been added. group will be indexed after login. if (groupData) { const newestTimestamp = - groupData.indexTimestamp === NOTHING_INDEXED_TIMESTAMP - ? this._dateProvider.getStartOfDayShiftedBy(1).getTime() - : groupData.indexTimestamp + groupData.indexTimestamp === NOTHING_INDEXED_TIMESTAMP ? this._dateProvider.getStartOfDayShiftedBy(1).getTime() : groupData.indexTimestamp if (newestTimestamp > oldestTimestamp) { mailBoxes.push({ @@ -652,12 +640,7 @@ export class MailIndexer { this._core._processDeleted(event, indexUpdate), this.processNewMail(event).then((result) => { if (result) { - this._core.encryptSearchIndexEntries( - result.mail._id, - neverNull(result.mail._ownerGroup), - result.keyToIndexEntries, - indexUpdate, - ) + this._core.encryptSearchIndexEntries(result.mail._id, neverNull(result.mail._ownerGroup), result.keyToIndexEntries, indexUpdate) } }), ]) @@ -709,7 +692,11 @@ class IndexLoader { _entity: EntityClient private readonly cachingEntity: EntityClient - constructor(restClient: EntityRestClient, cachingEntityClient: DefaultEntityRestCache, private isUsingOfflineCache: boolean) { + constructor( + restClient: EntityRestClient, + cachingEntityClient: DefaultEntityRestCache, + private isUsingOfflineCache: boolean, + ) { if (isUsingOfflineCache) { this.entityCache = cachingEntityClient this._entity = new EntityClient(cachingEntityClient) diff --git a/src/api/worker/search/SearchFacade.ts b/src/api/worker/search/SearchFacade.ts index 7cfeaad3825..9b3b928f029 100644 --- a/src/api/worker/search/SearchFacade.ts +++ b/src/api/worker/search/SearchFacade.ts @@ -641,10 +641,7 @@ export class SearchFacade { // mark result index id as processed to not query result in next load more operation entriesCopy[index] = null - if ( - elementData && - (!(searchResult.restriction.listIds.length > 0) || searchResult.restriction.listIds.includes(elementData[0])) - ) { + if (elementData && (!(searchResult.restriction.listIds.length > 0) || searchResult.restriction.listIds.includes(elementData[0]))) { return [elementData[0], entry.id] as IdTuple } diff --git a/src/api/worker/utils/SleepDetector.ts b/src/api/worker/utils/SleepDetector.ts index fbe39a9797d..85d04ca6cc6 100644 --- a/src/api/worker/utils/SleepDetector.ts +++ b/src/api/worker/utils/SleepDetector.ts @@ -26,7 +26,10 @@ interface ScheduledState { export class SleepDetector { private scheduledState: ScheduledState | null = null - constructor(private readonly scheduler: Scheduler, private readonly dateProvider: DateProvider) {} + constructor( + private readonly scheduler: Scheduler, + private readonly dateProvider: DateProvider, + ) {} start(onSleep: Thunk): void { this.stop() diff --git a/src/app.ts b/src/app.ts index b54aec0010e..9dc99ac55c2 100644 --- a/src/app.ts +++ b/src/app.ts @@ -131,13 +131,7 @@ import("./translations/en") const { CachePostLoginAction } = await import("./offline/CachePostLoginAction") locator.logins.addPostLoginAction( async () => - new CachePostLoginAction( - await locator.calendarModel(), - locator.entityClient, - locator.progressTracker, - locator.cacheStorage, - locator.logins, - ), + new CachePostLoginAction(await locator.calendarModel(), locator.entityClient, locator.progressTracker, locator.cacheStorage, locator.logins), ) } @@ -203,8 +197,7 @@ import("./translations/en") return { component: TerminationView, cache: { - makeViewModel: () => - new TerminationViewModel(locator.logins, locator.secondFactorHandler, locator.serviceExecutor, locator.entityClient), + makeViewModel: () => new TerminationViewModel(locator.logins, locator.secondFactorHandler, locator.serviceExecutor, locator.entityClient), header: await locator.appHeaderAttrs(), }, } diff --git a/src/calendar/date/CalendarUtils.ts b/src/calendar/date/CalendarUtils.ts index 1a19ebaf088..6fda2582ed6 100644 --- a/src/calendar/date/CalendarUtils.ts +++ b/src/calendar/date/CalendarUtils.ts @@ -144,10 +144,7 @@ export function calculateAlarmTime(date: Date, interval: AlarmInterval, ianaTime /** takes a date which encodes the day in UTC and produces a date that encodes the same date but in local time zone. All times must be 0. */ export function getAllDayDateForTimezone(utcDate: Date, zone: string): Date { - return DateTime.fromJSDate(utcDate, { zone: "utc" }) - .setZone(zone, { keepLocalTime: true }) - .set({ hour: 0, minute: 0, second: 0, millisecond: 0 }) - .toJSDate() + return DateTime.fromJSDate(utcDate, { zone: "utc" }).setZone(zone, { keepLocalTime: true }).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).toJSDate() } export function incrementByRepeatPeriod(date: Date, repeatPeriod: RepeatPeriod, interval: number, ianaTimeZone: string): Date { diff --git a/src/calendar/export/CalendarExporter.ts b/src/calendar/export/CalendarExporter.ts index c64cb94689d..262fae3c036 100644 --- a/src/calendar/export/CalendarExporter.ts +++ b/src/calendar/export/CalendarExporter.ts @@ -215,9 +215,7 @@ function serializeParticipants(event: CalendarEvent): Array { const attendeesProperties = attendees.map(({ address, status }) => { const namePart = address.name ? `;CN=${quotedString(address.name)}` : "" const partstat = calendarAttendeeStatusToParstat[downcast(status)] - return ( - `ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=${partstat}` + `;RSVP=TRUE${namePart};EMAIL=${address.address}:mailto:${address.address}` - ) + return `ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=${partstat}` + `;RSVP=TRUE${namePart};EMAIL=${address.address}:mailto:${address.address}` }) return lines.concat(attendeesProperties) } @@ -255,11 +253,5 @@ function wrapIntoCalendar(versionNumber: string, method: string, contents: Array function serializeAlarm(event: CalendarEvent, alarm: UserAlarmInfo): Array { // prettier-ignore - return [ - "BEGIN:VALARM", - "ACTION:DISPLAY", - "DESCRIPTION:This is an event reminder", - `TRIGGER:${serializeTrigger(alarm.alarmInfo.trigger)}`, - "END:VALARM", - ] + return ["BEGIN:VALARM", "ACTION:DISPLAY", "DESCRIPTION:This is an event reminder", `TRIGGER:${serializeTrigger(alarm.alarmInfo.trigger)}`, "END:VALARM"] } diff --git a/src/calendar/gui/day-selector/DaySelector.ts b/src/calendar/gui/day-selector/DaySelector.ts index cda1e58afb0..4cc42dd24a8 100644 --- a/src/calendar/gui/day-selector/DaySelector.ts +++ b/src/calendar/gui/day-selector/DaySelector.ts @@ -70,8 +70,7 @@ export class DaySelector implements Component { const lastWeek = beginningOfLastWeek < currentMonth.beginningOfMonth ? findWeek(lastMonth, beginningOfLastWeek) : findWeek(currentMonth, beginningOfLastWeek) const beginningOfNextWeek = incrementDate(new Date(date), 7) - const nextWeek = - beginningOfNextWeek < nextMonth.beginningOfMonth ? findWeek(currentMonth, beginningOfNextWeek) : findWeek(nextMonth, beginningOfNextWeek) + const nextWeek = beginningOfNextWeek < nextMonth.beginningOfMonth ? findWeek(currentMonth, beginningOfNextWeek) : findWeek(nextMonth, beginningOfNextWeek) return m(Carousel, { label: "date_label", diff --git a/src/calendar/gui/day-selector/DaySelectorPopup.ts b/src/calendar/gui/day-selector/DaySelectorPopup.ts index 6b9ebda314c..0d24c38d207 100644 --- a/src/calendar/gui/day-selector/DaySelectorPopup.ts +++ b/src/calendar/gui/day-selector/DaySelectorPopup.ts @@ -31,7 +31,10 @@ export class DaySelectorPopup implements ModalComponent { * @param rect The rect with coordinates about where the popup should be rendered * @param attrs The attributes for the component */ - constructor(private readonly rect: PosRect, private readonly attrs: DaySelectorPopupAttrs) { + constructor( + private readonly rect: PosRect, + private readonly attrs: DaySelectorPopupAttrs, + ) { this.setupShortcuts() this.view = this.view.bind(this) this.currentDate = attrs.selectedDate diff --git a/src/calendar/gui/eventeditor-model/CalendarEventAlarmModel.ts b/src/calendar/gui/eventeditor-model/CalendarEventAlarmModel.ts index a560c8dbbfd..fdbf0e9f376 100644 --- a/src/calendar/gui/eventeditor-model/CalendarEventAlarmModel.ts +++ b/src/calendar/gui/eventeditor-model/CalendarEventAlarmModel.ts @@ -24,8 +24,7 @@ export class CalendarEventAlarmModel { private readonly dateProvider: DateProvider, private readonly uiUpdateCallback: () => void = noOp, ) { - this.canEditReminders = - eventType === EventType.OWN || eventType === EventType.SHARED_RW || eventType === EventType.LOCKED || eventType === EventType.INVITE + this.canEditReminders = eventType === EventType.OWN || eventType === EventType.SHARED_RW || eventType === EventType.LOCKED || eventType === EventType.INVITE this._alarms = [...alarms] } diff --git a/src/calendar/gui/eventeditor-model/CalendarEventModel.ts b/src/calendar/gui/eventeditor-model/CalendarEventModel.ts index 26f115f80fb..d70830c0454 100644 --- a/src/calendar/gui/eventeditor-model/CalendarEventModel.ts +++ b/src/calendar/gui/eventeditor-model/CalendarEventModel.ts @@ -192,13 +192,9 @@ export async function makeCalendarEventModel( } const user = logins.getUserController().user - const [alarms, calendars] = await Promise.all([ - resolveAlarmsForEvent(initialValues.alarmInfos ?? [], calendarModel, user), - calendarModel.getCalendarInfos(), - ]) + const [alarms, calendars] = await Promise.all([resolveAlarmsForEvent(initialValues.alarmInfos ?? [], calendarModel, user), calendarModel.getCalendarInfos()]) const selectedCalendar = getPreselectedCalendar(calendars, initialValues) - const getPasswordStrength = (password: string, recipientInfo: PartialRecipient) => - getPasswordStrengthForUser(password, recipientInfo, mailboxDetail, logins) + const getPasswordStrength = (password: string, recipientInfo: PartialRecipient) => getPasswordStrengthForUser(password, recipientInfo, mailboxDetail, logins) const eventType = getEventType( initialValues, @@ -237,14 +233,7 @@ export async function makeCalendarEventModel( const initialOrDefaultValues = Object.assign(makeEmptyCalendarEvent(), initialValues) const cleanInitialValues = cleanupInitialValuesForEditing(initialOrDefaultValues) const progenitor = () => calendarModel.resolveCalendarEventProgenitor(cleanInitialValues) - const strategy = await selectStrategy( - makeEditModels, - applyStrategies, - operation, - progenitor, - createCalendarEvent(initialOrDefaultValues), - cleanInitialValues, - ) + const strategy = await selectStrategy(makeEditModels, applyStrategies, operation, progenitor, createCalendarEvent(initialOrDefaultValues), cleanInitialValues) return strategy && new CalendarEventModel(strategy, eventType, operation, logins.getUserController(), notificationSender, entityClient, calendars) } diff --git a/src/calendar/gui/eventeditor-model/CalendarEventModelStrategy.ts b/src/calendar/gui/eventeditor-model/CalendarEventModelStrategy.ts index 9695855ba08..c9747d968d7 100644 --- a/src/calendar/gui/eventeditor-model/CalendarEventModelStrategy.ts +++ b/src/calendar/gui/eventeditor-model/CalendarEventModelStrategy.ts @@ -107,11 +107,7 @@ export class CalendarEventApplyStrategies { await this.notificationModel.send(occurrence, [], sendModels) await this.calendarModel.deleteEvent(occurrence) } else { - const { newEvent, newAlarms, sendModels } = assembleEditResultAndAssignFromExisting( - occurrence, - editModelsForProgenitor, - CalendarOperation.EditThis, - ) + const { newEvent, newAlarms, sendModels } = assembleEditResultAndAssignFromExisting(occurrence, editModelsForProgenitor, CalendarOperation.EditThis) // we need to use the time we had before, not the time of the progenitor (which did not change since we still have altered occurrences) newEvent.startTime = occurrence.startTime newEvent.endTime = DateTime.fromJSDate(newEvent.startTime, { zone: this.zone }).plus(newDuration).toJSDate() @@ -139,11 +135,7 @@ export class CalendarEventApplyStrategies { await this.showProgress( (async () => { // NEW: edit models that we used so far are for the new event (rescheduled one). this should be an invite. - const { newEvent, calendar, newAlarms, sendModels } = assembleEditResultAndAssignFromExisting( - existingInstance, - editModels, - CalendarOperation.EditThis, - ) + const { newEvent, calendar, newAlarms, sendModels } = assembleEditResultAndAssignFromExisting(existingInstance, editModels, CalendarOperation.EditThis) await this.notificationModel.send(newEvent, [], sendModels) // OLD: but we need to update the existing one as well, to add an exclusion for the original instance that we edited. diff --git a/src/calendar/gui/eventeditor-model/CalendarEventWhenModel.ts b/src/calendar/gui/eventeditor-model/CalendarEventWhenModel.ts index 9811b09be77..00d81170e7a 100644 --- a/src/calendar/gui/eventeditor-model/CalendarEventWhenModel.ts +++ b/src/calendar/gui/eventeditor-model/CalendarEventWhenModel.ts @@ -39,7 +39,11 @@ export class CalendarEventWhenModel { private _startTime: Time | null private _endTime: Time | null - constructor(private readonly initialValues: Partial>, readonly zone: string, private readonly uiUpdateCallback: () => void = noOp) { + constructor( + private readonly initialValues: Partial>, + readonly zone: string, + private readonly uiUpdateCallback: () => void = noOp, + ) { let initialTimes: CalendarEventTimes if (initialValues.startTime == null || initialValues.endTime == null) { const defaultTimes = getEventWithDefaultTimes(initialValues.startTime) diff --git a/src/calendar/gui/eventeditor-model/CalendarEventWhoModel.ts b/src/calendar/gui/eventeditor-model/CalendarEventWhoModel.ts index d1b0089c18c..8feb8e71a89 100644 --- a/src/calendar/gui/eventeditor-model/CalendarEventWhoModel.ts +++ b/src/calendar/gui/eventeditor-model/CalendarEventWhoModel.ts @@ -285,11 +285,7 @@ export class CalendarEventWhoModel { }) } - if ( - this._organizer && - ownAddresses.includes(this._organizer.address.address) && - this._organizer.address.address !== this._ownAttendee?.address.address - ) { + if (this._organizer && ownAddresses.includes(this._organizer.address.address) && this._organizer.address.address !== this._ownAttendee?.address.address) { // if we're the organizer, ownAttendee should be the same. we don't modify organizer here because someone might already have sent invites. this._ownAttendee = this._organizer } diff --git a/src/calendar/gui/eventeditor-model/CalendarNotificationModel.ts b/src/calendar/gui/eventeditor-model/CalendarNotificationModel.ts index 03d765abad3..b0c082996a7 100644 --- a/src/calendar/gui/eventeditor-model/CalendarNotificationModel.ts +++ b/src/calendar/gui/eventeditor-model/CalendarNotificationModel.ts @@ -24,7 +24,10 @@ export type CalendarNotificationSendModels = { * and checks the preconditions * */ export class CalendarNotificationModel { - constructor(private readonly notificationSender: CalendarNotificationSender, private readonly loginController: LoginController) {} + constructor( + private readonly notificationSender: CalendarNotificationSender, + private readonly loginController: LoginController, + ) {} /** * send all notifications required for the new event, determined by the contents of the sendModels parameter. diff --git a/src/calendar/gui/eventpopup/CalendarEventPopup.ts b/src/calendar/gui/eventpopup/CalendarEventPopup.ts index 20985891c8c..3d4bc34f731 100644 --- a/src/calendar/gui/eventpopup/CalendarEventPopup.ts +++ b/src/calendar/gui/eventpopup/CalendarEventPopup.ts @@ -36,7 +36,11 @@ export class CalendarEventPopup implements ModalComponent { * @param eventBubbleRect the rect where the event bubble was displayed that was clicked (if any) * @param htmlSanitizer */ - constructor(private readonly model: CalendarEventPreviewViewModel, private readonly eventBubbleRect: PosRect, htmlSanitizer: HtmlSanitizer) { + constructor( + private readonly model: CalendarEventPreviewViewModel, + private readonly eventBubbleRect: PosRect, + htmlSanitizer: HtmlSanitizer, + ) { // We receive the HtmlSanitizer from outside and do the sanitization inside, so that we don't have to just assume it was already done this.sanitizedDescription = prepareCalendarDescription( model.calendarEvent.description, diff --git a/src/calendar/gui/eventpopup/CalendarEventPreviewViewModel.ts b/src/calendar/gui/eventpopup/CalendarEventPreviewViewModel.ts index 0d9c4f935c4..a587ec43026 100644 --- a/src/calendar/gui/eventpopup/CalendarEventPreviewViewModel.ts +++ b/src/calendar/gui/eventpopup/CalendarEventPreviewViewModel.ts @@ -63,10 +63,7 @@ export class CalendarEventPreviewViewModel { } else { // partially editable (adding alarms) counts as editable. this.canEdit = - this.eventType === EventType.OWN || - this.eventType === EventType.SHARED_RW || - this.eventType === EventType.LOCKED || - this.eventType === EventType.INVITE + this.eventType === EventType.OWN || this.eventType === EventType.SHARED_RW || this.eventType === EventType.LOCKED || this.eventType === EventType.INVITE this.canDelete = this.canEdit || this.eventType === EventType.INVITE this.canSendUpdates = hasBusinessFeature && this.eventType === EventType.OWN && getNonOrganizerAttendees(calendarEvent).length > 0 } diff --git a/src/calendar/view/CalendarMonthView.ts b/src/calendar/view/CalendarMonthView.ts index 191c5b3885f..9fcfc817e04 100644 --- a/src/calendar/view/CalendarMonthView.ts +++ b/src/calendar/view/CalendarMonthView.ts @@ -360,15 +360,7 @@ export class CalendarMonthView implements Component, ClassCo const eventStart = eventIsAllDay ? getAllDayDateForTimezone(event.startTime, zone) : event.startTime const eventEnd = eventIsAllDay ? incrementDate(getEventEnd(event, zone), -1) : event.endTime - const position = this.getEventPosition( - eventStart, - eventEnd, - firstDayOfWeek, - firstDayOfNextWeek, - dayWidth, - dayHeight(), - columnIndex, - ) + const position = this.getEventPosition(eventStart, eventEnd, firstDayOfWeek, firstDayOfNextWeek, dayWidth, dayHeight(), columnIndex) return this.renderEvent(event, position, eventStart, firstDayOfWeek, firstDayOfNextWeek, eventEnd, attrs) } else { for (const [dayIndex, dayInWeek] of week.entries()) { diff --git a/src/calendar/view/CalendarView.ts b/src/calendar/view/CalendarView.ts index b9e111cb769..a96adf3bbc2 100644 --- a/src/calendar/view/CalendarView.ts +++ b/src/calendar/view/CalendarView.ts @@ -109,9 +109,7 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView this.viewPeriod(viewType, next), + const navConfig = calendarNavConfiguration(this.currentViewType, this.viewModel.selectedDate(), this.viewModel.weekStart, "detailed", (viewType, next) => + this.viewPeriod(viewType, next), ) return m(CalendarDesktopToolbar, { navConfig, @@ -358,12 +352,8 @@ export class CalendarView extends BaseTopLevelView implements TopLevelView this.viewPeriod(viewType, next), + navConfiguration: calendarNavConfiguration(this.currentViewType, this.viewModel.selectedDate(), this.viewModel.weekStart, "short", (viewType, next) => + this.viewPeriod(viewType, next), ), onCreateEvent: () => this.createNewEventDialog(), onToday: () => { diff --git a/src/calendar/view/EventDragHandler.ts b/src/calendar/view/EventDragHandler.ts index 2e9bf83ea95..095b508d472 100644 --- a/src/calendar/view/EventDragHandler.ts +++ b/src/calendar/view/EventDragHandler.ts @@ -144,11 +144,7 @@ export class EventDragHandler { // note that we're not allowing changing the whole series from dragging an altered instance. const { repeatRule, recurrenceId } = dragData.originalEvent // prettier-ignore - const mode = repeatRule != null - ? await showModeSelectionDropdown(pos) - : recurrenceId != null - ? CalendarOperation.EditThis - : CalendarOperation.EditAll + const mode = repeatRule != null ? await showModeSelectionDropdown(pos) : recurrenceId != null ? CalendarOperation.EditThis : CalendarOperation.EditAll // If the date hasn't changed we still have to do the callback so the view model can cancel the drag try { diff --git a/src/calendar/view/MultiDayCalendarView.ts b/src/calendar/view/MultiDayCalendarView.ts index e7e1aba5e3f..bb7667efb7b 100644 --- a/src/calendar/view/MultiDayCalendarView.ts +++ b/src/calendar/view/MultiDayCalendarView.ts @@ -84,8 +84,7 @@ export class MultiDayCalendarView implements Component { view({ attrs }: Vnode): Children { // Special case for week view - const startOfThisPeriod = - attrs.daysInPeriod === 7 ? getStartOfWeek(attrs.selectedDate, getStartOfTheWeekOffset(attrs.startOfTheWeek)) : attrs.selectedDate + const startOfThisPeriod = attrs.daysInPeriod === 7 ? getStartOfWeek(attrs.selectedDate, getStartOfTheWeekOffset(attrs.startOfTheWeek)) : attrs.selectedDate const startOfPreviousPeriod = incrementDate(new Date(startOfThisPeriod), -attrs.daysInPeriod) const startOfNextPeriod = incrementDate(new Date(startOfThisPeriod), attrs.daysInPeriod) diff --git a/src/contacts/ContactListEditor.ts b/src/contacts/ContactListEditor.ts index 6b057b1235b..d89ebcaf909 100644 --- a/src/contacts/ContactListEditor.ts +++ b/src/contacts/ContactListEditor.ts @@ -141,10 +141,7 @@ class ContactListEditor implements Component { if (this.newAddress.trim().length > 0 && !isMailAddress(this.newAddress.trim(), false)) { helpLabel = () => lang.get("invalidInputFormat_msg") - } else if ( - this.model.currentAddresses.includes(cleanMailAddress(this.newAddress)) || - this.model.newAddresses.includes(cleanMailAddress(this.newAddress)) - ) { + } else if (this.model.currentAddresses.includes(cleanMailAddress(this.newAddress)) || this.model.newAddresses.includes(cleanMailAddress(this.newAddress))) { helpLabel = () => lang.get("addressAlreadyExistsOnList_msg") } diff --git a/src/contacts/model/NativeContactsSyncManager.ts b/src/contacts/model/NativeContactsSyncManager.ts index fc7854ff921..52299d5dffe 100644 --- a/src/contacts/model/NativeContactsSyncManager.ts +++ b/src/contacts/model/NativeContactsSyncManager.ts @@ -120,9 +120,7 @@ export class NativeContactsSyncManager { async clearContacts() { const loginUsername = this.loginController.getUserController().loginUsername - await this.mobileSystemFacade - .deleteContacts(loginUsername, null) - .catch(ofClass(PermissionError, (e) => console.log("No permission to clear contacts", e))) + await this.mobileSystemFacade.deleteContacts(loginUsername, null).catch(ofClass(PermissionError, (e) => console.log("No permission to clear contacts", e))) } private handleNoPermissionError(userId: string, error: PermissionError) { diff --git a/src/contacts/view/ContactListViewModel.ts b/src/contacts/view/ContactListViewModel.ts index fe5b96d4487..aea09f7e161 100644 --- a/src/contacts/view/ContactListViewModel.ts +++ b/src/contacts/view/ContactListViewModel.ts @@ -130,9 +130,7 @@ export class ContactListViewModel { if (selected?.length === 1) { const searchedContacts = await this.contactModel.searchForContacts(selected[0].emailAddress, "mailAddress", 10) // need an exact match - const contacts = searchedContacts.filter((contact) => - contact.mailAddresses.map((mailAddress) => mailAddress.address).includes(selected[0].emailAddress), - ) + const contacts = searchedContacts.filter((contact) => contact.mailAddresses.map((mailAddress) => mailAddress.address).includes(selected[0].emailAddress)) const nowSelected = this.getSelectedContactListEntries() ?? [] if (arrayEquals(selected, nowSelected)) { this.contactsForSelectedEntry = contacts diff --git a/src/contacts/view/ContactMergeView.ts b/src/contacts/view/ContactMergeView.ts index 27c9daa5ca7..7df640f84cb 100644 --- a/src/contacts/view/ContactMergeView.ts +++ b/src/contacts/view/ContactMergeView.ts @@ -185,14 +185,8 @@ export class ContactMergeView { : null, socials1.length > 0 || socials2.length > 0 ? m(".non-wrapping-row", [ - m(".social.mt-l", [ - m("", lang.get("social_label")), - m(".aggregateEditors", socials1.length > 0 ? socials1 : emptyFieldPlaceholder), - ]), - m(".social.mt-l", [ - m("", lang.get("social_label")), - m(".aggregateEditors", socials2.length > 0 ? socials2 : emptyFieldPlaceholder), - ]), + m(".social.mt-l", [m("", lang.get("social_label")), m(".aggregateEditors", socials1.length > 0 ? socials1 : emptyFieldPlaceholder)]), + m(".social.mt-l", [m("", lang.get("social_label")), m(".aggregateEditors", socials2.length > 0 ? socials2 : emptyFieldPlaceholder)]), ]) : null, commentField1 && commentField2 diff --git a/src/contacts/view/ContactView.ts b/src/contacts/view/ContactView.ts index 8ee16713b13..014e31164ef 100644 --- a/src/contacts/view/ContactView.ts +++ b/src/contacts/view/ContactView.ts @@ -127,8 +127,7 @@ export class ContactView extends BaseTopLevelView implements TopLevelView - this.inContactListView() ? this.renderContactListRecipientColumn(vnode.attrs.header) : this.renderContactListColumn(vnode.attrs.header), + view: () => (this.inContactListView() ? this.renderContactListRecipientColumn(vnode.attrs.header) : this.renderContactListColumn(vnode.attrs.header)), }, ColumnType.Background, { @@ -340,12 +339,10 @@ export class ContactView extends BaseTopLevelView implements TopLevelView { const flatvCards = vCardsList.flat() - const contactMembership = assertNotNull( - locator.logins.getUserController().user.memberships.find((m) => m.groupType === GroupType.Contact), - ) + const contactMembership = assertNotNull(locator.logins.getUserController().user.memberships.find((m) => m.groupType === GroupType.Contact)) const contactList = vCardListToContacts(flatvCards, contactMembership.group) numberOfContacts = contactList.length return locator.contactModel.getContactListId().then((contactListId) => diff --git a/src/desktop/2fa/DesktopWebauthnFacade.ts b/src/desktop/2fa/DesktopWebauthnFacade.ts index d132fe8fef7..99603d8145f 100644 --- a/src/desktop/2fa/DesktopWebauthnFacade.ts +++ b/src/desktop/2fa/DesktopWebauthnFacade.ts @@ -10,7 +10,10 @@ import { WebAuthnSignResult } from "../../native/common/generatedipc/WebAuthnSig export class DesktopWebauthnFacade implements WebAuthnFacade { private currentDialog: Promise> | null = null - constructor(private readonly parentWindow: ApplicationWindow, private readonly webDialogController: WebDialogController) {} + constructor( + private readonly parentWindow: ApplicationWindow, + private readonly webDialogController: WebDialogController, + ) {} async register(challenge: WebAuthnRegistrationChallenge): Promise { const { domain } = challenge diff --git a/src/desktop/DesktopCommonSystemFacade.ts b/src/desktop/DesktopCommonSystemFacade.ts index da980e9b49e..5a417925b5c 100644 --- a/src/desktop/DesktopCommonSystemFacade.ts +++ b/src/desktop/DesktopCommonSystemFacade.ts @@ -6,7 +6,10 @@ import { Logger } from "../api/common/Logger.js" export class DesktopCommonSystemFacade implements CommonSystemFacade { private initDefer: DeferredObject = defer() - constructor(private readonly window: ApplicationWindow, private readonly logger: Logger) {} + constructor( + private readonly window: ApplicationWindow, + private readonly logger: Logger, + ) {} async initializeRemoteBridge(): Promise { this.initDefer.resolve() diff --git a/src/desktop/DesktopContextMenu.ts b/src/desktop/DesktopContextMenu.ts index b92e8b7f3f6..4cf21a55e11 100644 --- a/src/desktop/DesktopContextMenu.ts +++ b/src/desktop/DesktopContextMenu.ts @@ -5,7 +5,10 @@ import { WindowManager } from "./DesktopWindowManager.js" type Electron = typeof Electron.CrossProcessExports export class DesktopContextMenu { - constructor(private readonly electron: Electron, private readonly windowManager: WindowManager) {} + constructor( + private readonly electron: Electron, + private readonly windowManager: WindowManager, + ) {} open(params: ContextMenuParams) { const { linkURL, editFlags, misspelledWord, dictionarySuggestions } = params diff --git a/src/desktop/DesktopDesktopSystemFacade.ts b/src/desktop/DesktopDesktopSystemFacade.ts index 3b02a18d040..69dead999df 100644 --- a/src/desktop/DesktopDesktopSystemFacade.ts +++ b/src/desktop/DesktopDesktopSystemFacade.ts @@ -4,7 +4,11 @@ import { ApplicationWindow } from "./ApplicationWindow.js" import { Socketeer } from "./Socketeer.js" export class DesktopDesktopSystemFacade implements DesktopSystemFacade { - constructor(private readonly wm: WindowManager, private readonly window: ApplicationWindow, private readonly sock: Socketeer) {} + constructor( + private readonly wm: WindowManager, + private readonly window: ApplicationWindow, + private readonly sock: Socketeer, + ) {} async focusApplicationWindow(): Promise { this.window.focus() diff --git a/src/desktop/DesktopKeyStoreFacade.ts b/src/desktop/DesktopKeyStoreFacade.ts index 555bad99da9..a6069a7e1e6 100644 --- a/src/desktop/DesktopKeyStoreFacade.ts +++ b/src/desktop/DesktopKeyStoreFacade.ts @@ -36,7 +36,10 @@ export const CredentialsKeySpec: NativeKeySpec = Object.freeze({ export class DesktopKeyStoreFacade { private readonly resolvedKeys: Map> = new Map() - constructor(private readonly secretStorage: SecretStorage, private readonly crypto: DesktopNativeCryptoFacade) {} + constructor( + private readonly secretStorage: SecretStorage, + private readonly crypto: DesktopNativeCryptoFacade, + ) {} /** * get the key used to encrypt alarms and settings diff --git a/src/desktop/DesktopMonkeyPatch.ts b/src/desktop/DesktopMonkeyPatch.ts index c33daeee20b..29822fbe034 100644 --- a/src/desktop/DesktopMonkeyPatch.ts +++ b/src/desktop/DesktopMonkeyPatch.ts @@ -40,7 +40,6 @@ const oldLog = console.log const oldError = console.error const oldWarn = console.warn const oldTrace = console.trace - ;(console as any).info = (...args: any[]) => oldInfo(`[${new Date().toISOString()}]`, ...args) ;(console as any).log = (...args: any[]) => oldLog(`[${new Date().toISOString()}]`, ...args) ;(console as any).error = (...args: any[]) => oldError(`[${new Date().toISOString()}]`, ...args) diff --git a/src/desktop/DesktopThemeFacade.ts b/src/desktop/DesktopThemeFacade.ts index db0ef20cf3f..2c28e00e3fa 100644 --- a/src/desktop/DesktopThemeFacade.ts +++ b/src/desktop/DesktopThemeFacade.ts @@ -17,7 +17,11 @@ const LIGHT_FALLBACK_THEME: Partial = { * 4 methods correspond to ThemeFacade from web plus two convenience methods getCurrentTheme() and getCurrentThemeWithFallback(). */ export class DesktopThemeFacade implements ThemeFacade { - constructor(private readonly config: DesktopConfig, private readonly wm: WindowManager, private readonly nativeTheme: Electron.NativeTheme) {} + constructor( + private readonly config: DesktopConfig, + private readonly wm: WindowManager, + private readonly nativeTheme: Electron.NativeTheme, + ) {} init() { electron.nativeTheme.on("updated", () => { diff --git a/src/desktop/DesktopUtils.ts b/src/desktop/DesktopUtils.ts index d79b54c110f..f264531acb0 100644 --- a/src/desktop/DesktopUtils.ts +++ b/src/desktop/DesktopUtils.ts @@ -15,7 +15,11 @@ import { WindowManager } from "./DesktopWindowManager.js" export class DesktopUtils { private mailtoArg: string | null - constructor(argv: Array, private readonly tfs: TempFs, private readonly electron: ElectronExports) { + constructor( + argv: Array, + private readonly tfs: TempFs, + private readonly electron: ElectronExports, + ) { this.mailtoArg = findMailToUrlInArgv(process.argv) } diff --git a/src/desktop/DesktopWindowManager.ts b/src/desktop/DesktopWindowManager.ts index 4a674aa132d..b0d2b37b609 100644 --- a/src/desktop/DesktopWindowManager.ts +++ b/src/desktop/DesktopWindowManager.ts @@ -182,9 +182,7 @@ export class WindowManager { await this.get(windowId)?.commonNativeFacade.invalidateAlarms() } else { log.debug(TAG, "invalidating alarms for all windows") - await Promise.all( - this.getAll().map((w) => this.invalidateAlarms(w.id).catch((e) => log.debug(TAG, "couldn't invalidate alarms for window", w.id, e))), - ) + await Promise.all(this.getAll().map((w) => this.invalidateAlarms(w.id).catch((e) => log.debug(TAG, "couldn't invalidate alarms for window", w.id, e)))) } } diff --git a/src/desktop/WebDialog.ts b/src/desktop/WebDialog.ts index c61c3d2f66f..616a707327e 100644 --- a/src/desktop/WebDialog.ts +++ b/src/desktop/WebDialog.ts @@ -18,7 +18,11 @@ export type WebDialogIpcConfig = typeof webauthnIpcConfig /** A dialog which was already loaded. Allows sending one request or closing it. */ export class WebDialog { - constructor(private facade: FacadeType, private closedPromise: Promise, private browserWindow: BrowserWindow) {} + constructor( + private facade: FacadeType, + private closedPromise: Promise, + private browserWindow: BrowserWindow, + ) {} makeRequest(requestSender: (facade: FacadeType) => Promise): Promise { return Promise.race([this.closedPromise, requestSender(this.facade)]) diff --git a/src/desktop/config/ConfigFile.ts b/src/desktop/config/ConfigFile.ts index d221177f4cd..3b9af32b39f 100644 --- a/src/desktop/config/ConfigFile.ts +++ b/src/desktop/config/ConfigFile.ts @@ -27,7 +27,11 @@ export class ConfigFile { /** * @param filePath path to the file the json objects should be stored in **/ - constructor(private readonly filePath: string, private readonly fullpath: string, private readonly fs: FsExports) { + constructor( + private readonly filePath: string, + private readonly fullpath: string, + private readonly fs: FsExports, + ) { this.accessPromise = Promise.resolve() } diff --git a/src/desktop/credentials/DesktopNativeCredentialsFacade.ts b/src/desktop/credentials/DesktopNativeCredentialsFacade.ts index 420dcd8601a..fc2ea21b096 100644 --- a/src/desktop/credentials/DesktopNativeCredentialsFacade.ts +++ b/src/desktop/credentials/DesktopNativeCredentialsFacade.ts @@ -15,7 +15,7 @@ import { KeyPermanentlyInvalidatedError } from "../../api/common/error/KeyPerman /** the single source of truth for this configuration */ const SUPPORTED_MODES = Object.freeze([CredentialEncryptionMode.DEVICE_LOCK, CredentialEncryptionMode.APP_PASSWORD] as const) -export type DesktopCredentialsMode = typeof SUPPORTED_MODES[number] +export type DesktopCredentialsMode = (typeof SUPPORTED_MODES)[number] /** * @@ -102,9 +102,7 @@ export class DesktopNativeCredentialsFacade implements NativeCredentialsFacade { private async enrollForAppPass(): Promise { const newSalt = this.crypto.randomBytes(KEY_LENGTH_BYTES_AES_256) const commonNativeFacade = await this.getCurrentCommonNativeFacade() - const newPw = await this.tryWhileSaltNotChanged( - commonNativeFacade.promptForNewPassword(this.lang.get("credentialsEncryptionModeAppPassword_label"), null), - ) + const newPw = await this.tryWhileSaltNotChanged(commonNativeFacade.promptForNewPassword(this.lang.get("credentialsEncryptionModeAppPassword_label"), null)) const newAppPassSaltB64 = uint8ArrayToBase64(newSalt) await this.conf.setVar(DesktopConfigKey.appPassSalt, newAppPassSaltB64) return generateKeyFromPassphraseArgon2id(await this.argon2idFacade, newPw, newSalt) diff --git a/src/desktop/db/DesktopSqlCipher.ts b/src/desktop/db/DesktopSqlCipher.ts index 1fdf48ba6f0..b33ce8515f3 100644 --- a/src/desktop/db/DesktopSqlCipher.ts +++ b/src/desktop/db/DesktopSqlCipher.ts @@ -20,7 +20,11 @@ export class DesktopSqlCipher implements SqlCipherFacade { * @param dbPath the path to the database file to use * @param integrityCheck whether to check the integrity of the db file during initialization */ - constructor(private readonly nativeBindingPath: string, private readonly dbPath: string, private readonly integrityCheck: boolean) { + constructor( + private readonly nativeBindingPath: string, + private readonly dbPath: string, + private readonly integrityCheck: boolean, + ) { process.on("exit", () => this._db?.close()) } diff --git a/src/desktop/db/WorkerSqlCipher.ts b/src/desktop/db/WorkerSqlCipher.ts index 50805a52391..dbe1bb80a8b 100644 --- a/src/desktop/db/WorkerSqlCipher.ts +++ b/src/desktop/db/WorkerSqlCipher.ts @@ -14,7 +14,11 @@ export class WorkerSqlCipher implements SqlCipherFacade { private readonly dispatcher: MessageDispatcher private readonly worker: Worker - constructor(private readonly nativeBindingPath: string, private readonly dbPath: string, private readonly integrityCheck: boolean) { + constructor( + private readonly nativeBindingPath: string, + private readonly dbPath: string, + private readonly integrityCheck: boolean, + ) { // this is not ../sqlworker.js because this file is bundled into DesktopMain.js in the dev build // and the prod build dumps everything into the same dir anyway. const worker = new Worker(path.join(__dirname, "./sqlworker.js"), { diff --git a/src/desktop/files/TempFs.ts b/src/desktop/files/TempFs.ts index 6c7efca6c97..6686571f478 100644 --- a/src/desktop/files/TempFs.ts +++ b/src/desktop/files/TempFs.ts @@ -19,7 +19,11 @@ export class TempFs { /** we store all temporary files in a directory with a random name, so that the download location is not predictable */ private readonly randomDirectoryName: string - constructor(private readonly fs: FsExports, private readonly electron: ElectronExports, private readonly cryptoFunctions: CryptoFunctions) { + constructor( + private readonly fs: FsExports, + private readonly electron: ElectronExports, + private readonly cryptoFunctions: CryptoFunctions, + ) { this.randomDirectoryName = base64ToBase64Url(uint8ArrayToBase64(cryptoFunctions.randomBytes(16))) } diff --git a/src/desktop/integration/DesktopIntegratorLinux.ts b/src/desktop/integration/DesktopIntegratorLinux.ts index 37e82eb6781..7fb2deef846 100644 --- a/src/desktop/integration/DesktopIntegratorLinux.ts +++ b/src/desktop/integration/DesktopIntegratorLinux.ts @@ -145,11 +145,7 @@ export class DesktopIntegratorLinux implements DesktopIntegrator { if (process.env["XDG_CURRENT_DESKTOP"] !== "GNOME") return try { - this._childProcess.execFile( - "update-desktop-database", - [path.join(this._electron.app.getPath("home"), ".local/share/applications")], - logExecFile, - ) + this._childProcess.execFile("update-desktop-database", [path.join(this._electron.app.getPath("home"), ".local/share/applications")], logExecFile) } catch (e) {} }) } diff --git a/src/desktop/ipc/DesktopInterWindowEventFacade.ts b/src/desktop/ipc/DesktopInterWindowEventFacade.ts index 602b39ce1e1..ef6030b00f0 100644 --- a/src/desktop/ipc/DesktopInterWindowEventFacade.ts +++ b/src/desktop/ipc/DesktopInterWindowEventFacade.ts @@ -6,7 +6,10 @@ import { WindowManager } from "../DesktopWindowManager.js" * this receives inter window events and dispatches them to all other windows */ export class DesktopInterWindowEventFacade implements InterWindowEventFacade { - constructor(private readonly window: ApplicationWindow, private readonly wm: WindowManager) {} + constructor( + private readonly window: ApplicationWindow, + private readonly wm: WindowManager, + ) {} async localUserDataInvalidated(userId: string): Promise { await this.executeOnOthers((other) => other.interWindowEventSender.localUserDataInvalidated(userId)) diff --git a/src/desktop/ipc/ElectronWebContentsTransport.ts b/src/desktop/ipc/ElectronWebContentsTransport.ts index cd428cca558..e8334b8e677 100644 --- a/src/desktop/ipc/ElectronWebContentsTransport.ts +++ b/src/desktop/ipc/ElectronWebContentsTransport.ts @@ -17,7 +17,10 @@ export class ElectronWebContentsTransport< IncomingRequestType extends string, > implements Transport { - constructor(private readonly webContents: WebContents, private readonly config: IpcConfigType) {} + constructor( + private readonly webContents: WebContents, + private readonly config: IpcConfigType, + ) {} postMessage(message: Message): void { if (this.webContents.isDestroyed()) return diff --git a/src/desktop/ipc/RemoteBridge.ts b/src/desktop/ipc/RemoteBridge.ts index 5fe958d27db..e052225b94d 100644 --- a/src/desktop/ipc/RemoteBridge.ts +++ b/src/desktop/ipc/RemoteBridge.ts @@ -31,7 +31,10 @@ export type FacadeHandler = (message: Request<"facade">) => Promise export type FacadeHandlerFactory = (window: ApplicationWindow) => FacadeHandler export class RemoteBridge { - constructor(private readonly dispatcherFactory: DispatcherFactory, private readonly facadeHandlerFactory: FacadeHandlerFactory) {} + constructor( + private readonly dispatcherFactory: DispatcherFactory, + private readonly facadeHandlerFactory: FacadeHandlerFactory, + ) {} createBridge(window: ApplicationWindow): SendingFacades { const webContents = window._browserWindow.webContents diff --git a/src/desktop/sqlworker.ts b/src/desktop/sqlworker.ts index feb722290ea..44c105dc6e2 100644 --- a/src/desktop/sqlworker.ts +++ b/src/desktop/sqlworker.ts @@ -46,7 +46,6 @@ if (parentPort != null) { commands, "nodeworker-node", ) - ;(console as any).info = (...args: any[]) => workerTransport.postRequest(new Request("info", args)) ;(console as any).log = (...args: any[]) => workerTransport.postRequest(new Request("log", args)) ;(console as any).error = (...args: any[]) => workerTransport.postRequest(new Request("error", args)) diff --git a/src/desktop/sse/DesktopAlarmScheduler.ts b/src/desktop/sse/DesktopAlarmScheduler.ts index 6eead3a5997..c36800105ce 100644 --- a/src/desktop/sse/DesktopAlarmScheduler.ts +++ b/src/desktop/sse/DesktopAlarmScheduler.ts @@ -45,9 +45,7 @@ export class DesktopAlarmScheduler implements NativeAlarmScheduler { this.handleDeleteAlarm(an) } else { - console.warn( - `received AlarmNotification (alarmInfo identifier ${an.alarmInfo.alarmIdentifier}) with unsupported operation ${an.operation}, ignoring`, - ) + console.warn(`received AlarmNotification (alarmInfo identifier ${an.alarmInfo.alarmIdentifier}) with unsupported operation ${an.operation}, ignoring`) } } diff --git a/src/desktop/sse/DesktopSseClient.ts b/src/desktop/sse/DesktopSseClient.ts index 6e15bbd58b7..0b8c6dc0c7e 100644 --- a/src/desktop/sse/DesktopSseClient.ts +++ b/src/desktop/sse/DesktopSseClient.ts @@ -233,16 +233,17 @@ export class DesktopSseClient { res.setEncoding("utf8") let resData = "" - res.on("data", (d) => { - // add new data to the buffer - resData += d - const lines = resData.split("\n") - resData = lines.pop() ?? "" // put the last line back into the buffer - - for (const l of lines) { - this._processSseData(l, userId) - } - }) + res + .on("data", (d) => { + // add new data to the buffer + resData += d + const lines = resData.split("\n") + resData = lines.pop() ?? "" // put the last line back into the buffer + + for (const l of lines) { + this._processSseData(l, userId) + } + }) .on("close", () => { log.debug("sse response closed") @@ -504,9 +505,10 @@ export class DesktopSseClient { res.setEncoding("utf8") let resData = "" - res.on("data", (chunk) => { - resData += chunk - }) + res + .on("data", (chunk) => { + resData += chunk + }) .on("end", () => { try { resolve(JSON.parse(resData)) diff --git a/src/desktop/tray/DesktopTray.ts b/src/desktop/tray/DesktopTray.ts index 42df3af9c1d..881f1a018dd 100644 --- a/src/desktop/tray/DesktopTray.ts +++ b/src/desktop/tray/DesktopTray.ts @@ -36,7 +36,8 @@ export class DesktopTray { constructor(config: DesktopConfig) { this._conf = config this.getAppIcon() - app.on("will-quit", this.destroy) + app + .on("will-quit", this.destroy) .whenReady() .then(async () => { // Need this wrapper so that `create()` will be called diff --git a/src/file/FileController.ts b/src/file/FileController.ts index 7facd090b05..a7f366defc3 100644 --- a/src/file/FileController.ts +++ b/src/file/FileController.ts @@ -34,7 +34,10 @@ export type ProgressObserver = (somePromise: Promise, progress?: Stream): Promise { const downloadedFiles: Array = [] diff --git a/src/file/FileControllerNative.ts b/src/file/FileControllerNative.ts index 6b389152149..1a653f0dc39 100644 --- a/src/file/FileControllerNative.ts +++ b/src/file/FileControllerNative.ts @@ -17,7 +17,11 @@ assertMainOrNode() * coordinates downloads when we have access to native functionality */ export class FileControllerNative extends FileController { - constructor(blobFacade: BlobFacade, guiDownload: ProgressObserver, private readonly fileApp: NativeFileApp) { + constructor( + blobFacade: BlobFacade, + guiDownload: ProgressObserver, + private readonly fileApp: NativeFileApp, + ) { assert(isElectronClient() || isApp() || isTest(), "Don't make native file controller when not in native") super(blobFacade, guiDownload) } diff --git a/src/gui/AttachmentBubble.ts b/src/gui/AttachmentBubble.ts index d44706b0666..050e2b622f7 100644 --- a/src/gui/AttachmentBubble.ts +++ b/src/gui/AttachmentBubble.ts @@ -77,7 +77,11 @@ export class AttachmentDetailsPopup implements ModalComponent { return this.closeDefer.promise } - constructor(private readonly targetRect: PosRect, private readonly targetWidth: number, private readonly attrs: AttachmentBubbleAttrs) { + constructor( + private readonly targetRect: PosRect, + private readonly targetWidth: number, + private readonly attrs: AttachmentBubbleAttrs, + ) { this._shortcuts.push({ key: Keys.ESC, exec: () => this.onClose(), diff --git a/src/gui/MobileHeader.ts b/src/gui/MobileHeader.ts index 7d0a53206d3..08ce8487aba 100644 --- a/src/gui/MobileHeader.ts +++ b/src/gui/MobileHeader.ts @@ -44,14 +44,14 @@ export class MobileHeader implements Component { attrs.columnType === "first" ? m(MobileHeaderMenuButton, { newsModel: attrs.newsModel, backAction: attrs.backAction }) : styles.isSingleColumnLayout() - ? m(IconButton, { - title: "back_action", - icon: BootIcons.Back, - click: () => { - attrs.backAction() - }, - }) - : null, + ? m(IconButton, { + title: "back_action", + icon: BootIcons.Back, + click: () => { + attrs.backAction() + }, + }) + : null, center: firstVisibleColumn ? m(MobileHeaderTitle, { title: attrs.title, diff --git a/src/gui/ScopedRouter.ts b/src/gui/ScopedRouter.ts index 5b9aeab84b4..01ecd1496c0 100644 --- a/src/gui/ScopedRouter.ts +++ b/src/gui/ScopedRouter.ts @@ -27,7 +27,10 @@ export class ThrottledRouter implements Router { export class ScopedRouter implements Router { private readonly scope: string - constructor(private readonly router: Router, scope: Scope) { + constructor( + private readonly router: Router, + scope: Scope, + ) { if (!scope.startsWith("/")) { throw new ProgrammingError(`Scope must start with a forward slash! got: ${scope}`) } diff --git a/src/gui/ThemeController.ts b/src/gui/ThemeController.ts index d3b58e34b89..5e17e678afe 100644 --- a/src/gui/ThemeController.ts +++ b/src/gui/ThemeController.ts @@ -24,7 +24,11 @@ export class ThemeController { readonly observableThemeId: Stream readonly initialized: Promise - constructor(themeSingleton: {}, private readonly themeFacade: ThemeFacade, private readonly htmlSanitizer: () => Promise) { + constructor( + themeSingleton: {}, + private readonly themeFacade: ThemeFacade, + private readonly htmlSanitizer: () => Promise, + ) { // this will be overwritten quickly this._themeId = defaultThemeId this._themePreference = "auto:light|dark" @@ -224,10 +228,7 @@ export class ThemeController { return Object.assign({}, this.getBaseTheme(customizations.base), customizations) } else { const themeWithoutLogo = Object.assign({}, this.getBaseTheme(customizations.base), customizations) - const coloredTutanotaLogo = getLogoSvg( - themeWithoutLogo.content_accent, - customizations.base === "light" ? logo_text_dark_grey : logo_text_bright_grey, - ) + const coloredTutanotaLogo = getLogoSvg(themeWithoutLogo.content_accent, customizations.base === "light" ? logo_text_dark_grey : logo_text_bright_grey) return { ...themeWithoutLogo, ...{ logo: coloredTutanotaLogo } } } } diff --git a/src/gui/base/CalendarSwipeHandler.ts b/src/gui/base/CalendarSwipeHandler.ts index 3e6d89c23b3..4df3417c2a4 100644 --- a/src/gui/base/CalendarSwipeHandler.ts +++ b/src/gui/base/CalendarSwipeHandler.ts @@ -21,15 +21,13 @@ export class CalendarSwipeHandler extends SwipeHandler { onHorizontalGestureCompleted(delta: { x: number; y: number }): Promise { if (Math.abs(delta.x) > 100) { this._xoffset = 0 - return animations - .add(this.touchArea, transform(TransformEnum.TranslateX, delta.x, this.touchArea.offsetWidth * (delta.x > 0 ? 1 : -1))) - .then(() => { - this._onGestureCompleted(delta.x < 0) + return animations.add(this.touchArea, transform(TransformEnum.TranslateX, delta.x, this.touchArea.offsetWidth * (delta.x > 0 ? 1 : -1))).then(() => { + this._onGestureCompleted(delta.x < 0) - requestAnimationFrame(() => { - this.touchArea.style.transform = "" - }) + requestAnimationFrame(() => { + this.touchArea.style.transform = "" }) + }) } else { return this.reset(delta) } diff --git a/src/gui/base/Dialog.ts b/src/gui/base/Dialog.ts index 0addbe8740b..610d13eb6e6 100644 --- a/src/gui/base/Dialog.ts +++ b/src/gui/base/Dialog.ts @@ -469,8 +469,8 @@ export class Dialog implements ModalComponent { typeof infoToAppend === "string" ? m(".dialog-contentButtonsBottom.text-break.selectable", infoToAppend) : typeof infoToAppend === "function" - ? infoToAppend() - : null + ? infoToAppend() + : null return [lang.getMaybeLazy(messageIdOrMessageFunction), additionalChild] } @@ -910,10 +910,7 @@ export class Dialog implements ModalComponent { static largeDialog(headerBarAttrs: DialogHeaderBarAttrs, child: Component): Dialog { return new Dialog(DialogType.EditLarge, { view: () => { - return m("", [ - m(".dialog-header.plr-l", m(DialogHeaderBar, headerBarAttrs)), - m(".dialog-container.scroll", m(".fill-absolute.plr-l", m(child))), - ]) + return m("", [m(".dialog-header.plr-l", m(DialogHeaderBar, headerBarAttrs)), m(".dialog-container.scroll", m(".fill-absolute.plr-l", m(child)))]) }, }) } diff --git a/src/gui/base/Dropdown.ts b/src/gui/base/Dropdown.ts index 476ae4dc9d6..d79b229464c 100644 --- a/src/gui/base/Dropdown.ts +++ b/src/gui/base/Dropdown.ts @@ -591,12 +591,12 @@ class DropdownButton implements Component { }, }) : attrs.showingIcons - ? m(".icon-large", { - style: { - marginRight: px(12), - }, - }) - : null, + ? m(".icon-large", { + style: { + marginRight: px(12), + }, + }) + : null, m( ".text-ellipsis", { diff --git a/src/gui/base/ListSwipeHandler.ts b/src/gui/base/ListSwipeHandler.ts index 57071d58b5c..998d9a3f5c3 100644 --- a/src/gui/base/ListSwipeHandler.ts +++ b/src/gui/base/ListSwipeHandler.ts @@ -70,11 +70,7 @@ export class ListSwipeHandler> e virtualElement.domElement && animations.add( virtualElement.domElement, - transform(TransformEnum.TranslateX, this.xoffset, listTargetPosition).chain( - TransformEnum.TranslateY, - virtualElement.top, - virtualElement.top, - ), + transform(TransformEnum.TranslateX, this.xoffset, listTargetPosition).chain(TransformEnum.TranslateY, virtualElement.top, virtualElement.top), { easing: ease.inOut, duration: DefaultAnimationTime * 2, diff --git a/src/gui/base/PageView.ts b/src/gui/base/PageView.ts index e907b5e55f9..4c25e97e840 100644 --- a/src/gui/base/PageView.ts +++ b/src/gui/base/PageView.ts @@ -96,15 +96,13 @@ class PageSwipeHandler extends SwipeHandler { onHorizontalGestureCompleted(delta: { x: number; y: number }): Promise { if (Math.abs(delta.x) > 100) { this.xOffset = 0 - return animations - .add(this.touchArea, transform(TransformEnum.TranslateX, delta.x, this.touchArea.offsetWidth * (delta.x > 0 ? 1 : -1))) - .then(() => { - this.onGestureCompleted(delta.x < 0) + return animations.add(this.touchArea, transform(TransformEnum.TranslateX, delta.x, this.touchArea.offsetWidth * (delta.x > 0 ? 1 : -1))).then(() => { + this.onGestureCompleted(delta.x < 0) - requestAnimationFrame(() => { - this.touchArea.style.transform = "" - }) + requestAnimationFrame(() => { + this.touchArea.style.transform = "" }) + }) } else { return this.reset(delta) } diff --git a/src/gui/base/RichTextToolbar.ts b/src/gui/base/RichTextToolbar.ts index 2f0d1672e78..5032e83e32d 100644 --- a/src/gui/base/RichTextToolbar.ts +++ b/src/gui/base/RichTextToolbar.ts @@ -105,11 +105,7 @@ export class RichTextToolbar implements Component { title, icon, () => - editor.styles.listing === listing - ? editor.squire.removeList() - : listing === "ul" - ? editor.squire.makeUnorderedList() - : editor.squire.makeOrderedList(), + editor.styles.listing === listing ? editor.squire.removeList() : listing === "ul" ? editor.squire.makeUnorderedList() : editor.squire.makeOrderedList(), () => editor.styles.listing === listing, ) } diff --git a/src/gui/base/SwipeHandler.ts b/src/gui/base/SwipeHandler.ts index 7cf8c62d31a..bf098d465e0 100644 --- a/src/gui/base/SwipeHandler.ts +++ b/src/gui/base/SwipeHandler.ts @@ -53,10 +53,7 @@ export class SwipeHandler { let { x, y } = this.getDelta(e) // If we're either locked horizontally OR if we're not locked vertically but would like to lock horizontally, then lock horizontally - if ( - this.directionLock === DirectionLock.Horizontal || - (this.directionLock !== DirectionLock.Vertical && Math.abs(x) > Math.abs(y) && Math.abs(x) > 14) - ) { + if (this.directionLock === DirectionLock.Horizontal || (this.directionLock !== DirectionLock.Vertical && Math.abs(x) > Math.abs(y) && Math.abs(x) > 14)) { this.directionLock = DirectionLock.Horizontal // Do not scroll the list e.preventDefault() diff --git a/src/gui/base/Table.ts b/src/gui/base/Table.ts index c5b127a97af..5a85e7265b1 100644 --- a/src/gui/base/Table.ts +++ b/src/gui/base/Table.ts @@ -58,9 +58,7 @@ export class Table implements Component { const a = vnode.attrs const loading = !a.lines const alignments = a.columnAlignments || [] - const lineAttrs = a.lines - ? a.lines.map((lineAttrs) => this._createLine(lineAttrs, a.showActionButtonColumn, a.columnWidths, false, alignments, false)) - : [] + const lineAttrs = a.lines ? a.lines.map((lineAttrs) => this._createLine(lineAttrs, a.showActionButtonColumn, a.columnWidths, false, alignments, false)) : [] return m("", [ m(`table.table${a.columnHeading ? ".table-header-border" : ""}`, [ (a.columnHeading diff --git a/src/gui/base/WizardDialog.ts b/src/gui/base/WizardDialog.ts index 812507cdf0a..6acba5452b7 100644 --- a/src/gui/base/WizardDialog.ts +++ b/src/gui/base/WizardDialog.ts @@ -225,9 +225,7 @@ class WizardDialogAttrs { Object.assign(this._headerBarAttrs, { left: currentPageIndex >= 0 && this.allowedToVisitPage(currentPageIndex - 1, currentPageIndex) ? [backButtonAttrs] : [], right: () => - this.currentPage && - this.currentPage.attrs.isSkipAvailable() && - this._getEnabledPages().indexOf(this.currentPage) !== this._getEnabledPages().length - 1 + this.currentPage && this.currentPage.attrs.isSkipAvailable() && this._getEnabledPages().indexOf(this.currentPage) !== this._getEnabledPages().length - 1 ? [skipButtonAttrs] : [], middle: () => (this.currentPage ? this.currentPage.attrs.headerTitle() : ""), diff --git a/src/gui/editor/Editor.ts b/src/gui/editor/Editor.ts index c0dc3a806ea..bafe628e600 100644 --- a/src/gui/editor/Editor.ts +++ b/src/gui/editor/Editor.ts @@ -60,7 +60,10 @@ export class Editor implements ImageHandler, Component { */ private pasteListener: (e: ClipboardEvent) => void = (_: ClipboardEvent) => (this.userHasPasted = true) - constructor(private minHeight: number | null, private sanitizer: SanitizerFn) { + constructor( + private minHeight: number | null, + private sanitizer: SanitizerFn, + ) { this.onremove = this.onremove.bind(this) this.onbeforeupdate = this.onbeforeupdate.bind(this) this.view = this.view.bind(this) diff --git a/src/gui/editor/HtmlEditor.ts b/src/gui/editor/HtmlEditor.ts index 3cc6ff10343..cccb3bdc35d 100644 --- a/src/gui/editor/HtmlEditor.ts +++ b/src/gui/editor/HtmlEditor.ts @@ -29,7 +29,10 @@ export class HtmlEditor implements Component { private toolbarEnabled = false private toolbarAttrs: Omit = {} - constructor(private label?: TranslationText, private readonly injections?: () => Children) { + constructor( + private label?: TranslationText, + private readonly injections?: () => Children, + ) { this.editor = new Editor(null, (html) => htmlSanitizer.sanitizeFragment(html, { blockExternalContent: false }).fragment) this.view = this.view.bind(this) this.initializeEditorListeners() @@ -51,8 +54,7 @@ export class HtmlEditor implements Component { ".abs.text-ellipsis.noselect.z1.i.pr-s", { oncreate: (vnode) => (this.placeholderDomElement = vnode.dom as HTMLElement), - onclick: () => - this.mode === HtmlEditorMode.WYSIWYG ? assertNotNull(this.editor.domElement).focus() : assertNotNull(this.domTextArea).focus(), + onclick: () => (this.mode === HtmlEditorMode.WYSIWYG ? assertNotNull(this.editor.domElement).focus() : assertNotNull(this.domTextArea).focus()), }, this.placeholderId ? lang.get(this.placeholderId) : "", ) diff --git a/src/gui/main-styles.ts b/src/gui/main-styles.ts index 2deb5eba901..7b4bde9859a 100644 --- a/src/gui/main-styles.ts +++ b/src/gui/main-styles.ts @@ -14,17 +14,7 @@ assertMainOrNode() export function getFonts(): string { // see https://bitsofco.de/the-new-system-font-stack/ - const fonts: Array = [ - "-apple-system", - "system-ui", - "BlinkMacSystemFont", - "Segoe UI", - "Roboto", - "Helvetica Neue", - "Helvetica", - "Arial", - "sans-serif", - ] + const fonts: Array = ["-apple-system", "system-ui", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica Neue", "Helvetica", "Arial", "sans-serif"] // workaround for incorrect Japanese font see https://github.com/tutao/tutanota/issues/1909 if (env.platformId === "win32" && lang.code === "ja") fonts.push("SimHei", "黑体") fonts.push("Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol") diff --git a/src/knowledgebase/view/KnowledgeBaseDialogContent.ts b/src/knowledgebase/view/KnowledgeBaseDialogContent.ts index 85934faf77c..12d6d170d4a 100644 --- a/src/knowledgebase/view/KnowledgeBaseDialogContent.ts +++ b/src/knowledgebase/view/KnowledgeBaseDialogContent.ts @@ -92,22 +92,14 @@ export class KnowledgeBaseDialogContent implements Component { this._selectionChangedListener = model.selectedEntry.map( - makeListSelectionChangedScrollHandler( - vnode.dom as HTMLElement, - KNOWLEDGEBASE_LIST_ENTRY_HEIGHT, - model.getSelectedEntryIndex.bind(model), - ), + makeListSelectionChangedScrollHandler(vnode.dom as HTMLElement, KNOWLEDGEBASE_LIST_ENTRY_HEIGHT, model.getSelectedEntryIndex.bind(model)), ) }, onbeforeremove: () => { this._selectionChangedListener.end() }, }, - [ - model.containsResult() - ? model.filteredEntries().map((entry) => this._renderListEntry(model, entry)) - : m(".center", lang.get("noEntryFound_label")), - ], + [model.containsResult() ? model.filteredEntries().map((entry) => this._renderListEntry(model, entry)) : m(".center", lang.get("noEntryFound_label"))], ) } diff --git a/src/login/CredentialsMigrationViewModel.ts b/src/login/CredentialsMigrationViewModel.ts index 47262ee3ab9..74543ab9a22 100644 --- a/src/login/CredentialsMigrationViewModel.ts +++ b/src/login/CredentialsMigrationViewModel.ts @@ -20,7 +20,10 @@ export class CredentialsMigrationViewModel { private transport: CrossOriginTransport | null = null private dispatcher: MessageDispatcher | null = null - constructor(readonly logins: LoginViewModel, private readonly parentOrigin: string) { + constructor( + readonly logins: LoginViewModel, + private readonly parentOrigin: string, + ) { this.initPromise = this.logins.init().then(() => { this.migrationState = MigrationState.WaitingForInput m.redraw() diff --git a/src/login/LoginForm.ts b/src/login/LoginForm.ts index dd5c2db4f55..49dae179401 100644 --- a/src/login/LoginForm.ts +++ b/src/login/LoginForm.ts @@ -149,21 +149,19 @@ export class LoginForm implements Component { lang.get("recoverAccountAccess_action"), ) : a.accessExpired && a.accessExpired - ? m( - "a", - { - // We import the dialog directly rather than redirecting to /recover here in order to not pass the password in plaintext via the URL - href: "#", - onclick: (e: MouseEvent) => { - import("./recover/TakeOverDeletedAddressDialog").then(({ showTakeOverDialog }) => - showTakeOverDialog(a.mailAddress(), a.password()), - ) - e.preventDefault() + ? m( + "a", + { + // We import the dialog directly rather than redirecting to /recover here in order to not pass the password in plaintext via the URL + href: "#", + onclick: (e: MouseEvent) => { + import("./recover/TakeOverDeletedAddressDialog").then(({ showTakeOverDialog }) => showTakeOverDialog(a.mailAddress(), a.password())) + e.preventDefault() + }, }, - }, - lang.get("help_label"), - ) - : null, + lang.get("help_label"), + ) + : null, ]), ), ], diff --git a/src/login/NativeWebauthnView.ts b/src/login/NativeWebauthnView.ts index b2d9ff5fe69..f42d524a2f1 100644 --- a/src/login/NativeWebauthnView.ts +++ b/src/login/NativeWebauthnView.ts @@ -15,7 +15,10 @@ import { TopLevelView } from "../TopLevelView.js" * See DesktopWebauthnFacade. */ export class NativeWebauthnView implements TopLevelView { - constructor(private readonly webauthn: BrowserWebauthn, private readonly nativeTransport: WebauthnNativeBridge) { + constructor( + private readonly webauthn: BrowserWebauthn, + private readonly nativeTransport: WebauthnNativeBridge, + ) { this.view = this.view.bind(this) this.nativeTransport.init(this.webauthn) } diff --git a/src/login/recover/RecoverLoginDialog.ts b/src/login/recover/RecoverLoginDialog.ts index 7d9e149301a..4d6d818ed92 100644 --- a/src/login/recover/RecoverLoginDialog.ts +++ b/src/login/recover/RecoverLoginDialog.ts @@ -84,14 +84,14 @@ export function show(mailAddress?: string | null, resetAction?: ResetAction): Di selectedAction() == null ? null : selectedAction() === "password" - ? m(PasswordForm, { model: passwordModel }) - : m(TextField, { - label: "password_label", - type: TextFieldType.Password, - value: passwordValueStream(), - autocompleteAs: Autocomplete.currentPassword, - oninput: passwordValueStream, - }), + ? m(PasswordForm, { model: passwordModel }) + : m(TextField, { + label: "password_label", + type: TextFieldType.Password, + value: passwordValueStream(), + autocompleteAs: Autocomplete.currentPassword, + oninput: passwordValueStream, + }), ] }, }, diff --git a/src/mail/editor/MailEditorViewModel.ts b/src/mail/editor/MailEditorViewModel.ts index 8bc50416716..43ba479f0d1 100644 --- a/src/mail/editor/MailEditorViewModel.ts +++ b/src/mail/editor/MailEditorViewModel.ts @@ -58,9 +58,7 @@ export async function chooseAndAttachFile( } export function showFileChooserForAttachments(boundingRect: ClientRect, fileTypes?: Array): Promise | void> { - const fileSelector = [Mode.App, Mode.Desktop].includes(env.mode) - ? locator.fileApp.openFileChooser(boundingRect, fileTypes) - : showFileChooser(true, fileTypes) + const fileSelector = [Mode.App, Mode.Desktop].includes(env.mode) ? locator.fileApp.openFileChooser(boundingRect, fileTypes) : showFileChooser(true, fileTypes) return fileSelector .catch( ofClass(PermissionError, () => { diff --git a/src/mail/editor/SendMailModel.ts b/src/mail/editor/SendMailModel.ts index 56a8088244e..a130603e47a 100644 --- a/src/mail/editor/SendMailModel.ts +++ b/src/mail/editor/SendMailModel.ts @@ -795,9 +795,7 @@ export class SendMailModel { throw e } else { let invalidRecipients = e.message - throw new UserError( - () => lang.get("tutanotaAddressDoesNotExist_msg") + " " + lang.get("invalidRecipients_msg") + "\n" + invalidRecipients, - ) + throw new UserError(() => lang.get("tutanotaAddressDoesNotExist_msg") + " " + lang.get("invalidRecipients_msg") + "\n" + invalidRecipients) } }), ) @@ -1036,9 +1034,7 @@ export class SendMailModel { if (operation === OperationType.UPDATE) { this.entity.load(ContactTypeRef, contactId).then((contact) => { for (const fieldType of typedValues(RecipientField)) { - const matching = this.getRecipientList(fieldType).filter( - (recipient) => recipient.contact && isSameId(recipient.contact._id, contact._id), - ) + const matching = this.getRecipientList(fieldType).filter((recipient) => recipient.contact && isSameId(recipient.contact._id, contact._id)) for (const recipient of matching) { // if the mail address no longer exists on the contact then delete the recipient if (!contact.mailAddresses.some((ma) => cleanMatch(ma.address, recipient.address))) { diff --git a/src/mail/export/Exporter.ts b/src/mail/export/Exporter.ts index f6715970df9..7c4cc414359 100644 --- a/src/mail/export/Exporter.ts +++ b/src/mail/export/Exporter.ts @@ -32,9 +32,7 @@ export async function generateMailFile(bundle: MailBundle, fileName: string, mod export async function getMailExportMode(): Promise { if (isDesktop()) { const ConfigKeys = await import("../../desktop/config/ConfigKeys") - const mailExportMode = (await locator.desktopSettingsFacade - .getStringConfigValue(ConfigKeys.DesktopConfigKey.mailExportMode) - .catch(noOp)) as MailExportMode + const mailExportMode = (await locator.desktopSettingsFacade.getStringConfigValue(ConfigKeys.DesktopConfigKey.mailExportMode).catch(noOp)) as MailExportMode return mailExportMode ?? "eml" } else { return "eml" @@ -85,8 +83,7 @@ export async function exportMails( const errorMails: Mail[] = [] signal?.addEventListener("abort", onAbort) - const updateProgress = - operationId !== undefined ? () => locator.operationProgressTracker.onProgress(operationId, (++doneMails / totalMails) * 100) : noOp + const updateProgress = operationId !== undefined ? () => locator.operationProgressTracker.onProgress(operationId, (++doneMails / totalMails) * 100) : noOp //The only way to skip a Promise is throwing an error. //this throws just a CancelledError to be handled by the try/catch statement. @@ -158,9 +155,7 @@ export function mailToEml(mail: MailBundle): string { lines.push("From: " + mail.sender.address, "MIME-Version: 1.0") const formatRecipients = (key: string, recipients: MailBundleRecipient[]) => - `${key}: ${recipients - .map((recipient) => (recipient.name ? `${escapeSpecialCharacters(recipient.name)} ` : "") + `<${recipient.address}>`) - .join(",")}` + `${key}: ${recipients.map((recipient) => (recipient.name ? `${escapeSpecialCharacters(recipient.name)} ` : "") + `<${recipient.address}>`).join(",")}` if (mail.to.length > 0) { lines.push(formatRecipients("To", mail.to)) diff --git a/src/mail/model/InboxRuleHandler.ts b/src/mail/model/InboxRuleHandler.ts index 1a45cfbc73c..341edc8fa2a 100644 --- a/src/mail/model/InboxRuleHandler.ts +++ b/src/mail/model/InboxRuleHandler.ts @@ -93,7 +93,11 @@ export function getInboxRuleTypeName(type: string): string { } export class InboxRuleHandler { - constructor(private readonly mailFacade: MailFacade, private readonly entityClient: EntityClient, private readonly logins: LoginController) {} + constructor( + private readonly mailFacade: MailFacade, + private readonly entityClient: EntityClient, + private readonly logins: LoginController, + ) {} /** * Checks the mail for an existing inbox rule and moves the mail to the target folder of the rule. diff --git a/src/mail/view/ConversationViewer.ts b/src/mail/view/ConversationViewer.ts index c9a8aba24b1..4c2e82cfee4 100644 --- a/src/mail/view/ConversationViewer.ts +++ b/src/mail/view/ConversationViewer.ts @@ -92,8 +92,7 @@ export class ConversationViewer implements Component { private renderFooter() { // Having more room at the bottom allows the last email so it is (almost) always in the same place on the screen. // We reduce space by 100 for the header of the viewer and a bit more - const height = - document.body.offsetHeight - (styles.isUsingBottomNavigation() ? size.navbar_height_mobile + size.bottom_nav_bar : size.navbar_height) - 300 + const height = document.body.offsetHeight - (styles.isUsingBottomNavigation() ? size.navbar_height_mobile + size.bottom_nav_bar : size.navbar_height) - 300 return m(".mt-l.noprint", { style: { height: px(height), @@ -125,16 +124,16 @@ export class ConversationViewer implements Component { }), ) : !viewModel.isFinished() - ? m( - ".font-weight-600.center.mt-l" + "." + responsiveCardHMargin(), - { - style: { - color: theme.content_button, + ? m( + ".font-weight-600.center.mt-l" + "." + responsiveCardHMargin(), + { + style: { + color: theme.content_button, + }, }, - }, - lang.get("loading_msg"), - ) - : null + lang.get("loading_msg"), + ) + : null } private renderViewer(mailViewModel: MailViewerViewModel, isPrimary: boolean, position: number | null): Children { diff --git a/src/mail/view/EventBanner.ts b/src/mail/view/EventBanner.ts index 86390b6091e..70789bcd244 100644 --- a/src/mail/view/EventBanner.ts +++ b/src/mail/view/EventBanner.ts @@ -52,9 +52,7 @@ export class EventBanner implements Component { { label: "viewEvent_action", click: (e, dom) => - import("../../calendar/view/CalendarInvites.js").then(({ showEventDetails }) => - showEventDetails(event, dom.getBoundingClientRect(), mail), - ), + import("../../calendar/view/CalendarInvites.js").then(({ showEventDetails }) => showEventDetails(event, dom.getBoundingClientRect(), mail)), }, ], } satisfies InfoBannerAttrs), diff --git a/src/mail/view/MailGuiUtils.ts b/src/mail/view/MailGuiUtils.ts index 387eb916b63..2183478d254 100644 --- a/src/mail/view/MailGuiUtils.ts +++ b/src/mail/view/MailGuiUtils.ts @@ -212,10 +212,7 @@ export function replaceCidsWithInlineImages( const touch = e.touches[0] if (!touch || !startCoords || !timeoutId) return - if ( - Math.abs(touch.clientX - startCoords.x) > PinchZoom.DRAG_THRESHOLD || - Math.abs(touch.clientY - startCoords.y) > PinchZoom.DRAG_THRESHOLD - ) { + if (Math.abs(touch.clientX - startCoords.x) > PinchZoom.DRAG_THRESHOLD || Math.abs(touch.clientY - startCoords.y) > PinchZoom.DRAG_THRESHOLD) { clearTimeout(timeoutId) timeoutId = null } diff --git a/src/mail/view/MailListView.ts b/src/mail/view/MailListView.ts index 567220e71cb..f067760875d 100644 --- a/src/mail/view/MailListView.ts +++ b/src/mail/view/MailListView.ts @@ -270,14 +270,7 @@ export class MailListView implements Component { const key = mapKey(mail) const downloadPromise = Promise.resolve().then(async () => { const { htmlSanitizer } = await import("../../misc/HtmlSanitizer") - const bundle = await makeMailBundle( - mail, - locator.mailFacade, - locator.entityClient, - locator.fileController, - htmlSanitizer, - locator.cryptoFacade, - ) + const bundle = await makeMailBundle(mail, locator.mailFacade, locator.entityClient, locator.fileController, htmlSanitizer, locator.cryptoFacade) progressMonitor.workDone(1) const file = await generateMailFile(bundle, name, exportMode) progressMonitor.workDone(1) @@ -452,8 +445,8 @@ export class MailListView implements Component { this.showingSpamOrTrash ? lang.get("recover_label") // show "recover" if this is the trash/spam folder : this.showingArchive // otherwise show "inbox" or "archive" depending on the folder - ? lang.get("received_action") - : lang.get("archive_label"), + ? lang.get("received_action") + : lang.get("archive_label"), ), ] } diff --git a/src/mail/view/MailRow.ts b/src/mail/view/MailRow.ts index 6d6001d4677..975adf2fa12 100644 --- a/src/mail/view/MailRow.ts +++ b/src/mail/view/MailRow.ts @@ -55,7 +55,10 @@ export class MailRow implements VirtualRow { private checkboxWasVisible = shouldAlwaysShowMultiselectCheckbox() private selectionSetter!: SelectableRowSelectedSetter - constructor(private readonly showFolderIcon: boolean, private readonly onSelected: (mail: Mail, selected: boolean) => unknown) { + constructor( + private readonly showFolderIcon: boolean, + private readonly onSelected: (mail: Mail, selected: boolean) => unknown, + ) { this.top = 0 this.entity = null this.folderIconsDom = {} as Record diff --git a/src/mail/view/MailView.ts b/src/mail/view/MailView.ts index 6da02ece4e1..fe54d7a69d5 100644 --- a/src/mail/view/MailView.ts +++ b/src/mail/view/MailView.ts @@ -112,8 +112,7 @@ export class MailView extends BaseTopLevelView implements TopLevelView - m(DesktopListToolbar, m(SelectAllCheckbox, selectionAttrsForList(this.mailViewModel.listModel)), this.renderFilterButton()), + desktopToolbar: () => m(DesktopListToolbar, m(SelectAllCheckbox, selectionAttrsForList(this.mailViewModel.listModel)), this.renderFilterButton()), columnLayout: listId ? m( "", @@ -147,9 +146,7 @@ export class MailView extends BaseTopLevelView implements TopLevelView - lang.get("confirmDeleteFinallySystemFolder_msg", { "{1}": getFolderName(folder) }), - ) + const confirmed = await Dialog.confirm(() => lang.get("confirmDeleteFinallySystemFolder_msg", { "{1}": getFolderName(folder) })) if (confirmed) { showProgressDialog("progressDeleting_msg", this.mailViewModel.finallyDeleteAllMailsInSelectedFolder(folder)) } @@ -302,8 +299,8 @@ export class MailView extends BaseTopLevelView implements TopLevelView) => getMailSelectionMessage(selected), }), }) @@ -328,13 +325,9 @@ export class MailView extends BaseTopLevelView implements TopLevelView { mailbox && - newMailEditorFromTemplate( - mailbox, - {}, - "", - appendEmailSignature("", locator.logins.getUserController().props), - dataFiles, - ).then((dialog) => dialog.show()) + newMailEditorFromTemplate(mailbox, {}, "", appendEmailSignature("", locator.logins.getUserController().props), dataFiles).then((dialog) => + dialog.show(), + ) }) .catch(ofClass(PermissionError, noOp)) .catch(ofClass(UserError, showUserError)) @@ -362,12 +355,12 @@ export class MailView extends BaseTopLevelView implements TopLevelView this.mailViewModel.listModel?.selectNone(), - mailModel: locator.mailModel, - }) - : m(BottomNav), + ? m(MobileMailMultiselectionActionBar, { + mails: this.mailViewModel.listModel.getSelectedAsArray(), + selectNone: () => this.mailViewModel.listModel?.selectNone(), + mailModel: locator.mailModel, + }) + : m(BottomNav), }), ) } @@ -547,11 +540,11 @@ export class MailView extends BaseTopLevelView implements TopLevelView this.showNewMailDialog().catch(ofClass(PermissionError, noOp)), - } - : null, + ? { + label: "newMail_action", + click: () => this.showNewMailDialog().catch(ofClass(PermissionError, noOp)), + } + : null, content: this.renderFolders(editingFolderForMailGroup), ariaLabel: "folderTitle_label", }) @@ -618,14 +611,12 @@ export class MailView extends BaseTopLevelView implements TopLevelView 5) { let url = location.hash.substring(5) let decodedUrl = decodeURIComponent(url) - Promise.all([locator.mailModel.getUserMailboxDetails(), import("../editor/MailEditor")]).then( - ([mailboxDetails, { newMailtoUrlMailEditor }]) => { - newMailtoUrlMailEditor(decodedUrl, false, mailboxDetails) - .then((editor) => editor.show()) - .catch(ofClass(CancelledError, noOp)) - history.pushState("", document.title, window.location.pathname) // remove # from url - }, - ) + Promise.all([locator.mailModel.getUserMailboxDetails(), import("../editor/MailEditor")]).then(([mailboxDetails, { newMailtoUrlMailEditor }]) => { + newMailtoUrlMailEditor(decodedUrl, false, mailboxDetails) + .then((editor) => editor.show()) + .catch(ofClass(CancelledError, noOp)) + history.pushState("", document.title, window.location.pathname) // remove # from url + }) } } else if (args.action === "supportMail" && locator.logins.isGlobalAdminUserLoggedIn()) { import("../editor/MailEditor").then(({ writeSupportMail }) => writeSupportMail()) @@ -633,9 +624,7 @@ export class MailView extends BaseTopLevelView implements TopLevelView alias.mailAddress).concat(userGroupInfo.mailAddress || []), - ) + locator.pushService.closePushNotification(userGroupInfo.mailAddressAliases.map((alias) => alias.mailAddress).concat(userGroupInfo.mailAddress || [])) } this.mailViewModel.showMail(args.listId, args.mailId) diff --git a/src/mail/view/MailViewerHeader.ts b/src/mail/view/MailViewerHeader.ts index b8b1594f3eb..0389b94d10b 100644 --- a/src/mail/view/MailViewerHeader.ts +++ b/src/mail/view/MailViewerHeader.ts @@ -245,9 +245,7 @@ export class MailViewerHeader implements Component { return [ m( "." + responsiveCardHMargin(), - this.renderPhishingWarning(viewModel) || - this.renderHardAuthenticationFailWarning(viewModel) || - this.renderSoftAuthenticationFailWarning(viewModel), + this.renderPhishingWarning(viewModel) || this.renderHardAuthenticationFailWarning(viewModel) || this.renderSoftAuthenticationFailWarning(viewModel), ), m("." + responsiveCardHMargin(), this.renderExternalContentBanner(attrs)), m("hr.hr.mt-xs." + responsiveCardHMargin()), @@ -489,8 +487,7 @@ export class MailViewerHeader implements Component { this.renderAttachmentContainer(viewModel, attachments) : // Otherwise, we show the number of attachments and its total size along with a show all button m(ExpanderButton, { - label: () => - lang.get("attachmentAmount_label", { "{amount}": attachmentCount + "" }) + ` (${formatStorageSize(totalAttachmentSize)})`, + label: () => lang.get("attachmentAmount_label", { "{amount}": attachmentCount + "" }) + ` (${formatStorageSize(totalAttachmentSize)})`, style: { "padding-top": "inherit", height: "inherit", @@ -716,8 +713,7 @@ export class MailViewerHeader implements Component { }) actionButtons.push({ label: "move_action", - click: (_: MouseEvent, dom: HTMLElement) => - showMoveMailsDropdown(viewModel.mailModel, dom.getBoundingClientRect(), [viewModel.mail]), + click: (_: MouseEvent, dom: HTMLElement) => showMoveMailsDropdown(viewModel.mailModel, dom.getBoundingClientRect(), [viewModel.mail]), icon: Icons.Folder, }) } diff --git a/src/mail/view/MailViewerToolbar.ts b/src/mail/view/MailViewerToolbar.ts index 3fe296dc04c..35fe24821a3 100644 --- a/src/mail/view/MailViewerToolbar.ts +++ b/src/mail/view/MailViewerToolbar.ts @@ -154,15 +154,7 @@ export class MailViewerActions implements Component { "{current}": Math.round((operation.progress() / 100) * attrs.mails.length).toFixed(0), "{total}": attrs.mails.length, }), - exportMails( - attrs.mails, - locator.mailFacade, - locator.entityClient, - locator.fileController, - locator.cryptoFacade, - operation.id, - ac.signal, - ) + exportMails(attrs.mails, locator.mailFacade, locator.entityClient, locator.fileController, locator.cryptoFacade, operation.id, ac.signal) .then((result) => this.handleExportEmailsResult(result.failed)) .finally(operation.done), operation.progress, @@ -189,8 +181,7 @@ export class MailViewerActions implements Component { m(".pt-m", lang.get("failedToExport_msg")), m(".flex-start.items-center", [ m(ExpanderButton, { - label: () => - `${lang.get(expanded() ? "hide_action" : "show_action")} ${lang.get("failedToExport_label", { "{0}": mailList.length })}`, + label: () => `${lang.get(expanded() ? "hide_action" : "show_action")} ${lang.get("failedToExport_label", { "{0}": mailList.length })}`, expanded: expanded(), onExpandedChange: expanded, }), diff --git a/src/mail/view/MailViewerViewModel.ts b/src/mail/view/MailViewerViewModel.ts index 626aab0bf8c..6dbda2f2fbd 100644 --- a/src/mail/view/MailViewerViewModel.ts +++ b/src/mail/view/MailViewerViewModel.ts @@ -652,10 +652,10 @@ export class MailViewerViewModel { externalImageRule === ExternalImageRule.Block ? ContentBlockingStatus.AlwaysBlock : isAllowedAndAuthenticatedExternalSender - ? ContentBlockingStatus.AlwaysShow - : this.sanitizeResult.blockedExternalContent > 0 - ? ContentBlockingStatus.Block - : ContentBlockingStatus.NoExternalContent + ? ContentBlockingStatus.AlwaysShow + : this.sanitizeResult.blockedExternalContent > 0 + ? ContentBlockingStatus.Block + : ContentBlockingStatus.NoExternalContent m.redraw() this.renderedMail = this.mail return this.sanitizeResult.inlineImageCids @@ -1045,8 +1045,7 @@ export class MailViewerViewModel { canReplyAll(): boolean { return ( - this.logins.getUserController().isInternalUser() && - this.getToRecipients().length + this.getCcRecipients().length + this.getBccRecipients().length > 1 + this.logins.getUserController().isInternalUser() && this.getToRecipients().length + this.getCcRecipients().length + this.getBccRecipients().length > 1 ) } diff --git a/src/mail/view/MinimizedEditorOverlay.ts b/src/mail/view/MinimizedEditorOverlay.ts index 187d451d6e1..0751859380a 100644 --- a/src/mail/view/MinimizedEditorOverlay.ts +++ b/src/mail/view/MinimizedEditorOverlay.ts @@ -70,10 +70,7 @@ export class MinimizedEditorOverlay implements Component viewModel.reopenMinimizedEditor(minimizedEditor), }, - [ - m(".b.text-ellipsis", subject ? subject : lang.get("newMail_action")), - m(".small.text-ellipsis", getStatusMessage(minimizedEditor.saveStatus())), - ], + [m(".b.text-ellipsis", subject ? subject : lang.get("newMail_action")), m(".small.text-ellipsis", getStatusMessage(minimizedEditor.saveStatus()))], ), m(".flex.items-center.justify-right", [ !styles.isSingleColumnLayout() diff --git a/src/mail/view/MultiItemViewer.ts b/src/mail/view/MultiItemViewer.ts index 530ed83121c..51744c0751f 100644 --- a/src/mail/view/MultiItemViewer.ts +++ b/src/mail/view/MultiItemViewer.ts @@ -52,25 +52,25 @@ export class MultiItemViewer implements Component> { m(".flex.items-center.plr-button", progressIcon()), ]) : selectedEntities.length === 0 - ? null - : m(".flex", [ - m(Button, { - label: "cancel_action", - type: ButtonType.Secondary, - click: () => { - selectNone() - }, - }), - loadingAll === "can_load" - ? m(Button, { - label: "loadAll_action", - type: ButtonType.Secondary, - click: () => { - loadAll() - }, - }) - : null, - ]) + ? null + : m(".flex", [ + m(Button, { + label: "cancel_action", + type: ButtonType.Secondary, + click: () => { + selectNone() + }, + }), + loadingAll === "can_load" + ? m(Button, { + label: "loadAll_action", + type: ButtonType.Secondary, + click: () => { + loadAll() + }, + }) + : null, + ]) } } diff --git a/src/misc/2fa/SecondFactorAuthDialog.ts b/src/misc/2fa/SecondFactorAuthDialog.ts index 50ec5c5a1fc..e2d8cf773cb 100644 --- a/src/misc/2fa/SecondFactorAuthDialog.ts +++ b/src/misc/2fa/SecondFactorAuthDialog.ts @@ -80,9 +80,7 @@ export class SecondFactorAuthDialog { } private async show() { - const u2fChallenge = this.authData.challenges.find( - (challenge) => challenge.type === SecondFactorType.u2f || challenge.type === SecondFactorType.webauthn, - ) + const u2fChallenge = this.authData.challenges.find((challenge) => challenge.type === SecondFactorType.u2f || challenge.type === SecondFactorType.webauthn) const otpChallenge = this.authData.challenges.find((challenge) => challenge.type === SecondFactorType.totp) const u2fSupported = await this.webauthnClient.isSupported() @@ -123,11 +121,11 @@ export class SecondFactorAuthDialog { doWebauthn: () => this.doWebauthn(assertNotNull(u2fChallenge)), } : otherDomainLoginUrl - ? { - canLogin: false, - otherDomainLoginUrl: otherDomainLoginUrl, - } - : null, + ? { + canLogin: false, + otherDomainLoginUrl: otherDomainLoginUrl, + } + : null, otp: otpChallenge ? { codeFieldValue: this.otpState.code, diff --git a/src/misc/2fa/SecondFactorHandler.ts b/src/misc/2fa/SecondFactorHandler.ts index 6bc187d8652..ac1b0fb6da7 100644 --- a/src/misc/2fa/SecondFactorHandler.ts +++ b/src/misc/2fa/SecondFactorHandler.ts @@ -91,11 +91,7 @@ export class SecondFactorHandler { continue } - if ( - session.state !== SessionState.SESSION_STATE_PENDING && - this.otherLoginDialog && - isSameId(neverNull(this.otherLoginSessionId), sessionId) - ) { + if (session.state !== SessionState.SESSION_STATE_PENDING && this.otherLoginDialog && isSameId(neverNull(this.otherLoginSessionId), sessionId)) { this.otherLoginDialog.close() this.otherLoginSessionId = null diff --git a/src/misc/2fa/webauthn/BrowserWebauthn.ts b/src/misc/2fa/webauthn/BrowserWebauthn.ts index 47cc9f2c9be..3ac981881c0 100644 --- a/src/misc/2fa/webauthn/BrowserWebauthn.ts +++ b/src/misc/2fa/webauthn/BrowserWebauthn.ts @@ -23,7 +23,10 @@ export class BrowserWebauthn implements WebAuthnFacade { private readonly appId: string private currentOperationSignal: AbortController | null = null - constructor(private readonly api: CredentialsContainer, domainConfig: DomainConfig) { + constructor( + private readonly api: CredentialsContainer, + domainConfig: DomainConfig, + ) { this.rpId = domainConfig.webauthnRpId this.appId = domainConfig.u2fAppId } diff --git a/src/misc/2fa/webauthn/WebauthnClient.ts b/src/misc/2fa/webauthn/WebauthnClient.ts index 1b4a2ccbb78..99e854257c1 100644 --- a/src/misc/2fa/webauthn/WebauthnClient.ts +++ b/src/misc/2fa/webauthn/WebauthnClient.ts @@ -10,7 +10,11 @@ import { DomainConfigProvider } from "../../../api/common/DomainConfigProvider.j /** Web authentication entry point for the rest of the app. */ export class WebauthnClient { - constructor(private readonly webauthn: WebAuthnFacade, private readonly domainConfigProvider: DomainConfigProvider, private readonly isApp: boolean) {} + constructor( + private readonly webauthn: WebAuthnFacade, + private readonly domainConfigProvider: DomainConfigProvider, + private readonly isApp: boolean, + ) {} isSupported(): Promise { return this.webauthn.isSupported() diff --git a/src/misc/DeviceConfig.ts b/src/misc/DeviceConfig.ts index a83873e56c9..4ec0838081b 100644 --- a/src/misc/DeviceConfig.ts +++ b/src/misc/DeviceConfig.ts @@ -52,7 +52,10 @@ export class DeviceConfig implements CredentialsStorage, UsageTestStorage, NewsI private config!: ConfigObject - constructor(private readonly _version: number, private readonly localStorage: Storage | null) { + constructor( + private readonly _version: number, + private readonly localStorage: Storage | null, + ) { this.init() } diff --git a/src/misc/ErrorHandlerImpl.ts b/src/misc/ErrorHandlerImpl.ts index cc2fdfb2a59..dcd7694efc4 100644 --- a/src/misc/ErrorHandlerImpl.ts +++ b/src/misc/ErrorHandlerImpl.ts @@ -74,12 +74,7 @@ export async function handleUncaughtErrorImpl(e: Error) { invalidSoftwareVersionActive = true Dialog.message("outdatedClient_msg").then(() => (invalidSoftwareVersionActive = false)) } - } else if ( - e instanceof NotAuthenticatedError || - e instanceof AccessBlockedError || - e instanceof AccessDeactivatedError || - e instanceof AccessExpiredError - ) { + } else if (e instanceof NotAuthenticatedError || e instanceof AccessBlockedError || e instanceof AccessDeactivatedError || e instanceof AccessExpiredError) { // If the session is closed (e.g. password is changed) we log user out forcefully so we reload the page if (logins.isUserLoggedIn()) { logoutIfNoPasswordPrompt() diff --git a/src/misc/ListModel.ts b/src/misc/ListModel.ts index fa9eede67bb..bc6181182a2 100644 --- a/src/misc/ListModel.ts +++ b/src/misc/ListModel.ts @@ -294,9 +294,7 @@ export class ListModel { !this.rawState.inMultiselect ) { newActiveElement = - entity === last(this.state.items) - ? this.state.items[this.state.items.length - 2] - : this.state.items[this.state.items.indexOf(entity) + 1] + entity === last(this.state.items) ? this.state.items[this.state.items.length - 2] : this.state.items[this.state.items.indexOf(entity) + 1] selectedItems.add(newActiveElement) } @@ -464,8 +462,8 @@ export class ListModel { oldActiveItem == null ? first(this.state.items) : lastItem && this.config.sortCompare(lastItem, oldActiveItem) <= 0 - ? lastItem - : this.state.items.find((el) => this.config.sortCompare(el, oldActiveItem) > 0) ?? first(this.state.items) + ? lastItem + : this.state.items.find((el) => this.config.sortCompare(el, oldActiveItem) > 0) ?? first(this.state.items) if (newActiveItem != null) { if (!multiselect) { diff --git a/src/misc/RecipientsSearchModel.ts b/src/misc/RecipientsSearchModel.ts index 061c682c471..92f93ce235b 100644 --- a/src/misc/RecipientsSearchModel.ts +++ b/src/misc/RecipientsSearchModel.ts @@ -63,8 +63,8 @@ export class RecipientsSearchModel { ]) if (query === this.currentQuery) { this.searchResults = [ - ...newContactListSuggestions.map((value) => ({ type: "contactlist", value } satisfies RecipientSearchResultItem)), - ...newContactSuggestions.map((value) => ({ type: "recipient", value } satisfies RecipientSearchResultItem)), + ...newContactListSuggestions.map((value) => ({ type: "contactlist", value }) satisfies RecipientSearchResultItem), + ...newContactSuggestions.map((value) => ({ type: "recipient", value }) satisfies RecipientSearchResultItem), ].filter(this.filter ?? ((_) => true)) this.previousQuery = query } diff --git a/src/misc/SanitizedTextViewModel.ts b/src/misc/SanitizedTextViewModel.ts index 3fd0519b932..dd6f8028d41 100644 --- a/src/misc/SanitizedTextViewModel.ts +++ b/src/misc/SanitizedTextViewModel.ts @@ -4,7 +4,11 @@ import { noOp } from "@tutao/tutanota-utils" export class SanitizedTextViewModel { private sanitizedText: string | null = null - constructor(private text: string, private readonly sanitizer: HtmlSanitizer, private readonly uiUpdateCallback: () => void = noOp) {} + constructor( + private text: string, + private readonly sanitizer: HtmlSanitizer, + private readonly uiUpdateCallback: () => void = noOp, + ) {} set content(v: string) { this.sanitizedText = null diff --git a/src/misc/SimpleTextViewModel.ts b/src/misc/SimpleTextViewModel.ts index ad80608f68a..9ba42a420a2 100644 --- a/src/misc/SimpleTextViewModel.ts +++ b/src/misc/SimpleTextViewModel.ts @@ -4,7 +4,10 @@ import { noOp } from "@tutao/tutanota-utils" * Text view model suitable for data entry that isn't rendered as HTML */ export class SimpleTextViewModel { - constructor(private text: string, private readonly uiUpdateCallback: () => void = noOp) {} + constructor( + private text: string, + private readonly uiUpdateCallback: () => void = noOp, + ) {} set content(text: string) { this.text = text diff --git a/src/misc/SubscriptionDialogs.ts b/src/misc/SubscriptionDialogs.ts index 613a41fa80f..8be935137f1 100644 --- a/src/misc/SubscriptionDialogs.ts +++ b/src/misc/SubscriptionDialogs.ts @@ -24,8 +24,7 @@ export async function showNotAvailableForFreeDialog(acceptedPlans: AvailablePlan const customerInfo = await locator.logins.getUserController().loadCustomerInfo() const businessPlanRequired = - acceptedPlans.filter((plan) => NewBusinessPlans.includes(plan)).length === acceptedPlans.length && - NewPersonalPlans.includes(downcast(customerInfo.plan)) + acceptedPlans.filter((plan) => NewBusinessPlans.includes(plan)).length === acceptedPlans.length && NewPersonalPlans.includes(downcast(customerInfo.plan)) const msg = businessPlanRequired ? "pricing.notSupportedByPersonalPlan_msg" : "newPaidPlanRequired_msg" await wizard.showUpgradeWizard(locator.logins, acceptedPlans, msg) diff --git a/src/misc/UsageTestModel.ts b/src/misc/UsageTestModel.ts index b1a73917559..06181ee56f0 100644 --- a/src/misc/UsageTestModel.ts +++ b/src/misc/UsageTestModel.ts @@ -74,9 +74,7 @@ export async function showExperienceSamplingDialog(stage: Stage, experienceSampl if (experienceSamplingOptions.explanationText) { const explanationTextLines = lang.getMaybeLazy(experienceSamplingOptions.explanationText).split("\n") - children.push( - m("#dialog-message.text-break.text-prewrap.selectable.scroll", [explanationTextLines.map((line) => m(".text-break.selectable", line))]), - ) + children.push(m("#dialog-message.text-break.text-prewrap.selectable.scroll", [explanationTextLines.map((line) => m(".text-break.selectable", line))])) } for (let likertMetricConfig of likertMetrics) { diff --git a/src/misc/news/NewsDialog.ts b/src/misc/news/NewsDialog.ts index 329971cda4e..fe251dc286a 100644 --- a/src/misc/news/NewsDialog.ts +++ b/src/misc/news/NewsDialog.ts @@ -41,10 +41,7 @@ export function showNewsDialog(newsModel: NewsModel) { liveNewsIds: newsModel.liveNewsIds, liveNewsListItems: newsModel.liveNewsListItems, }) - : m( - ".flex-center.mt-l", - m(".flex-v-center", [m(".full-width.flex-center", progressIcon()), m("p", lang.getMaybeLazy("pleaseWait_msg"))]), - ), + : m(".flex-center.mt-l", m(".flex-v-center", [m(".full-width.flex-center", progressIcon()), m("p", lang.getMaybeLazy("pleaseWait_msg"))])), ]), ] }, diff --git a/src/misc/news/items/NewPlansNews.ts b/src/misc/news/items/NewPlansNews.ts index d15601d2bea..26a3a3d22b1 100644 --- a/src/misc/news/items/NewPlansNews.ts +++ b/src/misc/news/items/NewPlansNews.ts @@ -11,7 +11,10 @@ import { showUpgradeWizardOrSwitchSubscriptionDialog } from "../../SubscriptionD * News item that informs admin users about the new pricing model. */ export class NewPlansNews implements NewsListItem { - constructor(private readonly newsModel: NewsModel, private readonly userController: UserController) {} + constructor( + private readonly newsModel: NewsModel, + private readonly userController: UserController, + ) {} async isShown(): Promise { if (!this.userController.isGlobalAdmin()) { diff --git a/src/misc/news/items/NewPlansOfferEndingNews.ts b/src/misc/news/items/NewPlansOfferEndingNews.ts index 2cb2e8667b7..a4e7530fa61 100644 --- a/src/misc/news/items/NewPlansOfferEndingNews.ts +++ b/src/misc/news/items/NewPlansOfferEndingNews.ts @@ -11,7 +11,10 @@ import { showUpgradeWizardOrSwitchSubscriptionDialog } from "../../SubscriptionD * News item that informs admin users that the new pricing offer is ending soon. */ export class NewPlansOfferEndingNews implements NewsListItem { - constructor(private readonly newsModel: NewsModel, private readonly userController: UserController) {} + constructor( + private readonly newsModel: NewsModel, + private readonly userController: UserController, + ) {} async isShown(): Promise { if (!this.userController.isGlobalAdmin()) { diff --git a/src/misc/news/items/PinBiometricsNews.ts b/src/misc/news/items/PinBiometricsNews.ts index 0a7fd7b1e79..443d8f94c3d 100644 --- a/src/misc/news/items/PinBiometricsNews.ts +++ b/src/misc/news/items/PinBiometricsNews.ts @@ -18,7 +18,11 @@ const appstoreLink = "https://apps.apple.com/app/tutanota/id922429609" * News item that reminds the user of configuring pin/ biometrics */ export class PinBiometricsNews implements NewsListItem { - constructor(private readonly newsModel: NewsModel, private readonly credentialsProvider: CredentialsProvider, private readonly userId: Id) {} + constructor( + private readonly newsModel: NewsModel, + private readonly credentialsProvider: CredentialsProvider, + private readonly userId: Id, + ) {} isShown(newsId: NewsId): Promise { return Promise.resolve((isIOSApp() || isAndroidApp()) && !this.newsModel.hasAcknowledgedNewsForDevice(newsId.newsItemId)) diff --git a/src/misc/news/items/ReferralLinkNews.ts b/src/misc/news/items/ReferralLinkNews.ts index 2397acefba4..5bf951953f4 100644 --- a/src/misc/news/items/ReferralLinkNews.ts +++ b/src/misc/news/items/ReferralLinkNews.ts @@ -19,7 +19,11 @@ const REFERRAL_NEWS_DISPLAY_THRESHOLD_DAYS = 7 export class ReferralLinkNews implements NewsListItem { private referralLink: string = "" - constructor(private readonly newsModel: NewsModel, private readonly dateProvider: DateProvider, private readonly userController: UserController) {} + constructor( + private readonly newsModel: NewsModel, + private readonly dateProvider: DateProvider, + private readonly userController: UserController, + ) {} async isShown(): Promise { // Do not show this for business customers yet (not allowed to create referral links) diff --git a/src/misc/news/items/UsageOptInNews.ts b/src/misc/news/items/UsageOptInNews.ts index b31e566d5f0..ec118b32381 100644 --- a/src/misc/news/items/UsageOptInNews.ts +++ b/src/misc/news/items/UsageOptInNews.ts @@ -13,7 +13,10 @@ import { MoreInfoLink } from "../MoreInfoLink.js" * News item that informs users about the usage data opt-in. */ export class UsageOptInNews implements NewsListItem { - constructor(private readonly newsModel: NewsModel, private readonly usageTestModel: UsageTestModel) {} + constructor( + private readonly newsModel: NewsModel, + private readonly usageTestModel: UsageTestModel, + ) {} isShown(): Promise { return Promise.resolve(locator.usageTestModel.showOptInIndicator()) diff --git a/src/misc/passwords/PasswordGenerator.ts b/src/misc/passwords/PasswordGenerator.ts index ea4700af654..ec1da8a9f1a 100644 --- a/src/misc/passwords/PasswordGenerator.ts +++ b/src/misc/passwords/PasswordGenerator.ts @@ -10,7 +10,10 @@ export const NUMBER_OF_BYTES: number = 2 export const BYTE_RANGE: number = Math.pow(2, 8 * NUMBER_OF_BYTES) export class PasswordGenerator { - constructor(private randomizer: WorkerRandomizer, private dictionary: Array) {} + constructor( + private randomizer: WorkerRandomizer, + private dictionary: Array, + ) {} async generateRandomPassphrase(): Promise { const usedWords = new Set() diff --git a/src/native/common/FileApp.ts b/src/native/common/FileApp.ts index f81a85cce70..2cad2494061 100644 --- a/src/native/common/FileApp.ts +++ b/src/native/common/FileApp.ts @@ -13,7 +13,10 @@ import { ProgrammingError } from "../../api/common/error/ProgrammingError.js" export type FileUri = string export class NativeFileApp { - constructor(private readonly fileFacade: FileFacade, private readonly exportFacade: ExportFacade) {} + constructor( + private readonly fileFacade: FileFacade, + private readonly exportFacade: ExportFacade, + ) {} /** * Open the file diff --git a/src/native/main/WebInterWindowEventFacade.ts b/src/native/main/WebInterWindowEventFacade.ts index 8418ccdab72..b87a71d0bc3 100644 --- a/src/native/main/WebInterWindowEventFacade.ts +++ b/src/native/main/WebInterWindowEventFacade.ts @@ -7,7 +7,11 @@ import { DeviceConfig } from "../../misc/DeviceConfig.js" * receiving side of the InterWindowEventBus */ export class WebInterWindowEventFacade implements InterWindowEventFacade { - constructor(private readonly logins: LoginController, private readonly windowFacade: WindowFacade, private readonly deviceConfig: DeviceConfig) {} + constructor( + private readonly logins: LoginController, + private readonly windowFacade: WindowFacade, + private readonly deviceConfig: DeviceConfig, + ) {} async localUserDataInvalidated(userId: string): Promise { if (this.logins.isUserLoggedIn() && userId === this.logins.getUserController().userId) { diff --git a/src/native/main/WebMobileFacade.ts b/src/native/main/WebMobileFacade.ts index dbf435dcd2a..09749bdc7f7 100644 --- a/src/native/main/WebMobileFacade.ts +++ b/src/native/main/WebMobileFacade.ts @@ -20,7 +20,10 @@ assertMainOrNode() export class WebMobileFacade implements MobileFacade { private disconnectTimeoutId: TimeoutID | null - constructor(private readonly connectivityModel: WebsocketConnectivityModel, private readonly mailModel: MailModel) {} + constructor( + private readonly connectivityModel: WebsocketConnectivityModel, + private readonly mailModel: MailModel, + ) {} async handleBackPress(): Promise { await Promise.resolve() diff --git a/src/native/worker/AesApp.ts b/src/native/worker/AesApp.ts index 89da41e4404..8f12aa685df 100644 --- a/src/native/worker/AesApp.ts +++ b/src/native/worker/AesApp.ts @@ -4,7 +4,10 @@ import { NativeCryptoFacade } from "../common/generatedipc/NativeCryptoFacade" import { EncryptedFileInfo } from "../common/generatedipc/EncryptedFileInfo" export class AesApp { - constructor(private readonly nativeCryptoFacade: NativeCryptoFacade, private readonly random: Randomizer) {} + constructor( + private readonly nativeCryptoFacade: NativeCryptoFacade, + private readonly random: Randomizer, + ) {} /** * Encrypts a file with the provided key diff --git a/src/native/worker/RsaApp.ts b/src/native/worker/RsaApp.ts index dc9f5a37709..2c4222cae63 100644 --- a/src/native/worker/RsaApp.ts +++ b/src/native/worker/RsaApp.ts @@ -4,7 +4,10 @@ import type { RsaImplementation } from "../../api/worker/crypto/RsaImplementatio import { NativeCryptoFacade } from "../common/generatedipc/NativeCryptoFacade" export class RsaApp implements RsaImplementation { - constructor(private readonly nativeCryptoFacade: NativeCryptoFacade, private readonly rng: Randomizer) {} + constructor( + private readonly nativeCryptoFacade: NativeCryptoFacade, + private readonly rng: Randomizer, + ) {} async generateKey(): Promise { const seed = this.rng.generateRandomData(512) diff --git a/src/search/model/SearchModel.ts b/src/search/model/SearchModel.ts index 1f701c0793c..a79d19c668e 100644 --- a/src/search/model/SearchModel.ts +++ b/src/search/model/SearchModel.ts @@ -32,7 +32,10 @@ export class SearchModel { _lastSearchPromise: Promise cancelSignal: Stream - constructor(searchFacade: SearchFacade, private readonly calendarModel: lazyAsync) { + constructor( + searchFacade: SearchFacade, + private readonly calendarModel: lazyAsync, + ) { this._searchFacade = searchFacade this.result = stream() this.lastQueryString = stream("") diff --git a/src/search/view/SearchListView.ts b/src/search/view/SearchListView.ts index 8087746a0dd..dc46806074f 100644 --- a/src/search/view/SearchListView.ts +++ b/src/search/view/SearchListView.ts @@ -49,8 +49,7 @@ export class SearchListView implements Component { return attrs.listModel.isEmptyAndDone() ? m(ColumnEmptyMessageBox, { icon, - message: () => - lang.get("searchNoResults_msg") + "\n" + (attrs.isFreeAccount ? lang.get("goPremium_msg") : lang.get("switchSearchInMenu_label")), + message: () => lang.get("searchNoResults_msg") + "\n" + (attrs.isFreeAccount ? lang.get("goPremium_msg") : lang.get("switchSearchInMenu_label")), color: theme.list_message_bg, }) : m(List, { @@ -120,9 +119,7 @@ export class SearchListView implements Component { multiselectionAllowed: MultiselectMode.Enabled, swipe: null, createElement: (dom) => { - const row: SearchResultListRow = new SearchResultListRow( - new MailRow(true, () => row.entity && this.listModel.onSingleExclusiveSelection(row.entity)), - ) + const row: SearchResultListRow = new SearchResultListRow(new MailRow(true, () => row.entity && this.listModel.onSingleExclusiveSelection(row.entity))) m.render(dom, row.render()) return row }, diff --git a/src/search/view/SearchView.ts b/src/search/view/SearchView.ts index a9a785ace43..75fa770d8e3 100644 --- a/src/search/view/SearchView.ts +++ b/src/search/view/SearchView.ts @@ -413,11 +413,7 @@ export class SearchView extends BaseTopLevelView implements TopLevelView this.searchViewModel.loadAll(), stopLoadAll: () => this.searchViewModel.stopLoadAll(), loadingAll: - this.searchViewModel.loadingAllForSearchResult != null - ? "loading" - : this.searchViewModel.listModel?.isLoadedCompletely() - ? "loaded" - : "can_load", + this.searchViewModel.loadingAllForSearchResult != null ? "loading" : this.searchViewModel.listModel?.isLoadedCompletely() ? "loaded" : "can_load", getSelectionMessage: (selected: ReadonlyArray) => getMailSelectionMessage(selected), }), }) @@ -472,8 +468,8 @@ export class SearchView extends BaseTopLevelView implements TopLevelView - isSameId([calendar.value.groupRoot.longEvents, calendar.value.groupRoot.shortEvents], this.searchViewModel.selectedCalendar), - )?.value ?? null + items.find((calendar) => isSameId([calendar.value.groupRoot.longEvents, calendar.value.groupRoot.shortEvents], this.searchViewModel.selectedCalendar)) + ?.value ?? null return m( ".mlr-button", diff --git a/src/settings/AboutDialog.ts b/src/settings/AboutDialog.ts index 6077d5c39a2..ec0ea11908a 100644 --- a/src/settings/AboutDialog.ts +++ b/src/settings/AboutDialog.ts @@ -51,14 +51,7 @@ export class AboutDialog implements Component { .join("") try { - const editor = await newMailEditorFromTemplate( - mailboxDetails, - {}, - `Device logs v${env.versionNumber} - ${type} - ${client}`, - message, - attachments, - true, - ) + const editor = await newMailEditorFromTemplate(mailboxDetails, {}, `Device logs v${env.versionNumber} - ${type} - ${client}`, message, attachments, true) editor.show() } catch (e) { if (e instanceof UserError) { diff --git a/src/settings/AddSpamRuleDialog.ts b/src/settings/AddSpamRuleDialog.ts index 67e0cedb95d..9569ed0e745 100644 --- a/src/settings/AddSpamRuleDialog.ts +++ b/src/settings/AddSpamRuleDialog.ts @@ -39,8 +39,7 @@ export function showAddSpamRuleDialog(existingSpamRuleOrTemplate: EmailSenderLis label: "emailSenderPlaceholder_label", value: valueFieldValue(), oninput: valueFieldValue, - helpLabel: () => - lang.get(validate(selectedType(), valueFieldValue(), selectedField(), loadedData, existingSpamRuleOrTemplate) ?? "emptyString_msg"), + helpLabel: () => lang.get(validate(selectedType(), valueFieldValue(), selectedField(), loadedData, existingSpamRuleOrTemplate) ?? "emptyString_msg"), }), m(DropDownSelector, { items: typeItems, diff --git a/src/settings/AddUserDialog.ts b/src/settings/AddUserDialog.ts index e33474bfa8b..906cf47a0ea 100644 --- a/src/settings/AddUserDialog.ts +++ b/src/settings/AddUserDialog.ts @@ -94,14 +94,7 @@ export async function show(): Promise { ).then(async (accepted) => { if (accepted) { const operation = locator.operationProgressTracker.startNewOperation() - const p = locator.userManagementFacade.createUser( - userName.trim(), - assertNotNull(emailAddress), - passwordModel.getNewPassword(), - 0, - 1, - operation.id, - ) + const p = locator.userManagementFacade.createUser(userName.trim(), assertNotNull(emailAddress), passwordModel.getNewPassword(), 0, 1, operation.id) showProgressDialog( () => lang.get("createActionStatus_msg", { diff --git a/src/settings/DesktopSettingsViewer.ts b/src/settings/DesktopSettingsViewer.ts index f4dad97129d..445ccad8b05 100644 --- a/src/settings/DesktopSettingsViewer.ts +++ b/src/settings/DesktopSettingsViewer.ts @@ -272,17 +272,15 @@ export class DesktopSettingsViewer implements UpdatableSettingsViewer { private async requestDesktopConfig() { this.defaultDownloadPath = stream(lang.get("alwaysAsk_action")) - const [integrationInfo, defaultDownloadPath, runAsTrayApp, showAutoUpdateOption, enableAutoUpdate, mailExportMode, spellcheckLabel] = await Promise.all( - [ - locator.desktopSettingsFacade.getIntegrationInfo(), - locator.desktopSettingsFacade.getStringConfigValue(DesktopConfigKey.defaultDownloadPath), - locator.desktopSettingsFacade.getBooleanConfigValue(DesktopConfigKey.runAsTrayApp), - locator.desktopSettingsFacade.getBooleanConfigValue(DesktopConfigKey.showAutoUpdateOption), - locator.desktopSettingsFacade.getBooleanConfigValue(DesktopConfigKey.enableAutoUpdate), - locator.desktopSettingsFacade.getStringConfigValue(DesktopConfigKey.mailExportMode), - getCurrentSpellcheckLanguageLabel(), - ], - ) + const [integrationInfo, defaultDownloadPath, runAsTrayApp, showAutoUpdateOption, enableAutoUpdate, mailExportMode, spellcheckLabel] = await Promise.all([ + locator.desktopSettingsFacade.getIntegrationInfo(), + locator.desktopSettingsFacade.getStringConfigValue(DesktopConfigKey.defaultDownloadPath), + locator.desktopSettingsFacade.getBooleanConfigValue(DesktopConfigKey.runAsTrayApp), + locator.desktopSettingsFacade.getBooleanConfigValue(DesktopConfigKey.showAutoUpdateOption), + locator.desktopSettingsFacade.getBooleanConfigValue(DesktopConfigKey.enableAutoUpdate), + locator.desktopSettingsFacade.getStringConfigValue(DesktopConfigKey.mailExportMode), + getCurrentSpellcheckLanguageLabel(), + ]) const { isMailtoHandler, isAutoLaunchEnabled, isIntegrated, isUpdateAvailable } = integrationInfo this.isDefaultMailtoHandler(isMailtoHandler) diff --git a/src/settings/EditNotificationEmailDialog.ts b/src/settings/EditNotificationEmailDialog.ts index ad501948867..e3d388096dc 100644 --- a/src/settings/EditNotificationEmailDialog.ts +++ b/src/settings/EditNotificationEmailDialog.ts @@ -33,9 +33,7 @@ export function showAddOrEditNotificationEmailDialog(userController: UserControl .getAsync() .then((loadedCustomerProperties) => { if (selectedNotificationLanguage != null) { - existingTemplate = loadedCustomerProperties.notificationMailTemplates.find( - (template) => template.language === selectedNotificationLanguage, - ) + existingTemplate = loadedCustomerProperties.notificationMailTemplates.find((template) => template.language === selectedNotificationLanguage) } }) .then(() => { @@ -91,15 +89,9 @@ export function show(existingTemplate: NotificationMailTemplate | null, customer template = existingTemplate } - const editor = new HtmlEditor() - .setMinHeight(400) - .showBorders() - .setModeSwitcher("mailBody_label") - .setValue(template.body) - .enableToolbar() - .setToolbarOptions({ - imageButtonClickHandler: insertInlineImageB64ClickHandler, - }) + const editor = new HtmlEditor().setMinHeight(400).showBorders().setModeSwitcher("mailBody_label").setValue(template.body).enableToolbar().setToolbarOptions({ + imageButtonClickHandler: insertInlineImageB64ClickHandler, + }) const editSegment = { name: lang.get("edit_action"), value: "edit", diff --git a/src/settings/EditOutOfOfficeNotificationDialog.ts b/src/settings/EditOutOfOfficeNotificationDialog.ts index e976f462110..59fff3645cc 100644 --- a/src/settings/EditOutOfOfficeNotificationDialog.ts +++ b/src/settings/EditOutOfOfficeNotificationDialog.ts @@ -30,11 +30,7 @@ export function showEditOutOfOfficeNotificationDialog(outOfOfficeNotification: O lang, locator.serviceExecutor, ) - const organizationMessageEditor = new HtmlEditor("message_label") - .setMinHeight(100) - .showBorders() - .setValue(dialogModel.organizationMessage()) - .enableToolbar() + const organizationMessageEditor = new HtmlEditor("message_label").setMinHeight(100).showBorders().setValue(dialogModel.organizationMessage()).enableToolbar() const defaultMessageEditor = new HtmlEditor("message_label").setMinHeight(100).showBorders().setValue(dialogModel.defaultMessage()).enableToolbar() const saveOutOfOfficeNotification = () => { diff --git a/src/settings/EditOutOfOfficeNotificationDialogModel.ts b/src/settings/EditOutOfOfficeNotificationDialogModel.ts index c3ae9df13cc..c37c544337a 100644 --- a/src/settings/EditOutOfOfficeNotificationDialogModel.ts +++ b/src/settings/EditOutOfOfficeNotificationDialogModel.ts @@ -162,15 +162,12 @@ export class EditOutOfOfficeNotificationDialogModel { } isOrganizationMessageEnabled(): boolean { - return ( - this.recipientMessageTypes() === RecipientMessageType.INTERNAL_ONLY || this.recipientMessageTypes() === RecipientMessageType.INTERNAL_AND_EXTERNAL - ) + return this.recipientMessageTypes() === RecipientMessageType.INTERNAL_ONLY || this.recipientMessageTypes() === RecipientMessageType.INTERNAL_AND_EXTERNAL } isDefaultMessageEnabled(): boolean { return ( - this.recipientMessageTypes() === RecipientMessageType.EXTERNAL_TO_EVERYONE || - this.recipientMessageTypes() === RecipientMessageType.INTERNAL_AND_EXTERNAL + this.recipientMessageTypes() === RecipientMessageType.EXTERNAL_TO_EVERYONE || this.recipientMessageTypes() === RecipientMessageType.INTERNAL_AND_EXTERNAL ) } diff --git a/src/settings/GlobalSettingsViewer.ts b/src/settings/GlobalSettingsViewer.ts index d23cfee0556..dbd16171e37 100644 --- a/src/settings/GlobalSettingsViewer.ts +++ b/src/settings/GlobalSettingsViewer.ts @@ -422,22 +422,20 @@ export class GlobalSettingsViewer implements UpdatableSettingsViewer { .then((customer) => { this.customer = customer - return locator.entityClient - .loadRange(AuditLogEntryTypeRef, neverNull(customer.auditLog).items, GENERATED_MAX_ID, 200, true) - .then((auditLog) => { - this.auditLogLoaded = true // indicate that we do not need to reload the list again when we expand - this.auditLogLines = auditLog.map((auditLogEntry) => { - return { - cells: [auditLogEntry.action, auditLogEntry.modifiedEntity, formatDateTimeFromYesterdayOn(auditLogEntry.date)], - actionButtonAttrs: { - title: "showMore_action", - icon: Icons.More, - click: () => this.showAuditLogDetails(auditLogEntry, customer), - size: ButtonSize.Compact, - }, - } - }) + return locator.entityClient.loadRange(AuditLogEntryTypeRef, neverNull(customer.auditLog).items, GENERATED_MAX_ID, 200, true).then((auditLog) => { + this.auditLogLoaded = true // indicate that we do not need to reload the list again when we expand + this.auditLogLines = auditLog.map((auditLogEntry) => { + return { + cells: [auditLogEntry.action, auditLogEntry.modifiedEntity, formatDateTimeFromYesterdayOn(auditLogEntry.date)], + actionButtonAttrs: { + title: "showMore_action", + icon: Icons.More, + click: () => this.showAuditLogDetails(auditLogEntry, customer), + size: ButtonSize.Compact, + }, + } }) + }) }) } @@ -498,12 +496,7 @@ export class GlobalSettingsViewer implements UpdatableSettingsViewer { groupInfoValue ? m("tr", [ m("td", lang.get("group_label")), - m( - "td.pl", - customer.adminGroup === groupInfoValue.group - ? lang.get("globalAdmin_label") - : this.getGroupInfoDisplayText(groupInfoValue), - ), + m("td.pl", customer.adminGroup === groupInfoValue.group ? lang.get("globalAdmin_label") : this.getGroupInfoDisplayText(groupInfoValue)), ]) : null, m("tr", [m("td", lang.get("time_label")), m("td.pl", formatDateTime(entry.date))]), @@ -673,8 +666,7 @@ export class GlobalSettingsViewer implements UpdatableSettingsViewer { .removeDomain(domainInfo.domain) .catch( ofClass(PreconditionFailedError, () => { - let registrationDomains = - this.props() != null ? this.props().whitelabelRegistrationDomains.map((domainWrapper) => domainWrapper.value) : [] + let registrationDomains = this.props() != null ? this.props().whitelabelRegistrationDomains.map((domainWrapper) => domainWrapper.value) : [] if (registrationDomains.indexOf(domainInfo.domain) !== -1) { Dialog.message(() => diff --git a/src/settings/IdentifierListViewer.ts b/src/settings/IdentifierListViewer.ts index d591950e4bd..208ae74bb73 100644 --- a/src/settings/IdentifierListViewer.ts +++ b/src/settings/IdentifierListViewer.ts @@ -129,10 +129,7 @@ export class IdentifierListViewer { }, } return [ - m(".flex-space-between.items-center.mt-l.mb-s", [ - m(".h4", lang.get("notificationSettings_action")), - m(ExpanderButton, pushIdentifiersExpanderAttrs), - ]), + m(".flex-space-between.items-center.mt-l.mb-s", [m(".h4", lang.get("notificationSettings_action")), m(ExpanderButton, pushIdentifiersExpanderAttrs)]), m( ExpanderPanel, { diff --git a/src/settings/KnowledgeBaseListView.ts b/src/settings/KnowledgeBaseListView.ts index 09e8a39874e..3c1cc632c1f 100644 --- a/src/settings/KnowledgeBaseListView.ts +++ b/src/settings/KnowledgeBaseListView.ts @@ -236,7 +236,10 @@ export class KnowledgeBaseRow implements VirtualRow { } export class KnowledgeBaseSettingsDetailsViewer implements UpdatableSettingsDetailsViewer { - constructor(private readonly entry: KnowledgeBaseEntry, private readonly readonly: boolean) {} + constructor( + private readonly entry: KnowledgeBaseEntry, + private readonly readonly: boolean, + ) {} renderView(): Children { return m( diff --git a/src/settings/OfflineStorageSettings.ts b/src/settings/OfflineStorageSettings.ts index 57768c62839..2f01bce5568 100644 --- a/src/settings/OfflineStorageSettings.ts +++ b/src/settings/OfflineStorageSettings.ts @@ -20,7 +20,10 @@ export class OfflineStorageSettingsModel { // Native interfaces are lazy to allow us to unconditionally construct the SettingsModel // If we are not in a native context, then they should never be accessed - constructor(private readonly userController: UserController, private readonly deviceConfig: DeviceConfig) {} + constructor( + private readonly userController: UserController, + private readonly deviceConfig: DeviceConfig, + ) {} available(): boolean { return this._isInitialized && isOfflineStorageAvailable() && !!this.isEnabled diff --git a/src/settings/SelectMailAddressForm.ts b/src/settings/SelectMailAddressForm.ts index dbf09c6027a..6c329e8b3a9 100644 --- a/src/settings/SelectMailAddressForm.ts +++ b/src/settings/SelectMailAddressForm.ts @@ -110,8 +110,8 @@ export class SelectMailAddressForm implements Component - constructor(private readonly template: EmailTemplate, private readonly entityClient: EntityClient, readonly isReadOnly: lazy) { + constructor( + private readonly template: EmailTemplate, + private readonly entityClient: EntityClient, + readonly isReadOnly: lazy, + ) { this.sanitizedContents = template.contents.map((emailTemplateContent) => ({ text: htmlSanitizer.sanitizeHTML(emailTemplateContent.text, { blockExternalContent: false, allowRelativeLinks: true }).html, languageCodeTextId: languageByCode[getLanguageCode(emailTemplateContent)].textId, diff --git a/src/settings/UserViewer.ts b/src/settings/UserViewer.ts index 673372c61dc..52aeace68a5 100644 --- a/src/settings/UserViewer.ts +++ b/src/settings/UserViewer.ts @@ -46,7 +46,10 @@ export class UserViewer implements UpdatableSettingsDetailsViewer { private mailAddressTableModel: MailAddressTableModel | null = null private mailAddressTableExpanded: boolean - constructor(public userGroupInfo: GroupInfo, private isAdmin: boolean) { + constructor( + public userGroupInfo: GroupInfo, + private isAdmin: boolean, + ) { this.userGroupInfo = userGroupInfo this.mailAddressTableExpanded = false diff --git a/src/settings/groups/GroupDetailsModel.ts b/src/settings/groups/GroupDetailsModel.ts index 03d469109ab..a4e2cf69758 100644 --- a/src/settings/groups/GroupDetailsModel.ts +++ b/src/settings/groups/GroupDetailsModel.ts @@ -36,7 +36,11 @@ export class GroupDetailsModel { private senderName!: LazyLoaded - constructor(groupInfo: GroupInfo, private readonly entityClient: EntityClient, private readonly updateViewCallback: () => void) { + constructor( + groupInfo: GroupInfo, + private readonly entityClient: EntityClient, + private readonly updateViewCallback: () => void, + ) { this.entityClient = entityClient this.groupInfo = groupInfo this.group = new LazyLoaded(() => this.entityClient.load(GroupTypeRef, this.groupInfo.group)) diff --git a/src/settings/groups/GroupDetailsView.ts b/src/settings/groups/GroupDetailsView.ts index 4fe81c34c13..4e6d235452a 100644 --- a/src/settings/groups/GroupDetailsView.ts +++ b/src/settings/groups/GroupDetailsView.ts @@ -45,13 +45,7 @@ export class GroupDetailsView implements UpdatableSettingsDetailsViewer { * @private */ private renderCommonInfo(): ChildArray { - return [ - this.renderCreatedTextField(), - this.renderNameField(), - this.renderAdministratedByDropdown(), - this.renderStatusSelector(), - this.renderMembersTable(), - ] + return [this.renderCreatedTextField(), this.renderNameField(), this.renderAdministratedByDropdown(), this.renderStatusSelector(), this.renderMembersTable()] } private renderCreatedTextField(): Children { diff --git a/src/settings/groups/GroupListView.ts b/src/settings/groups/GroupListView.ts index 82abec0f63d..60aba095a20 100644 --- a/src/settings/groups/GroupListView.ts +++ b/src/settings/groups/GroupListView.ts @@ -51,7 +51,10 @@ export class GroupListView implements UpdatableSettingsViewer { private localAdminGroupMemberships: GroupMembership[] private listStateSubscription: Stream | null = null - constructor(private readonly updateDetailsViewer: (viewer: GroupDetailsView | null) => unknown, private readonly focusDetailsViewer: () => unknown) { + constructor( + private readonly updateDetailsViewer: (viewer: GroupDetailsView | null) => unknown, + private readonly focusDetailsViewer: () => unknown, + ) { this.listModel = this.makeListModel() this.listId = new LazyLoaded(() => { return locator.logins diff --git a/src/settings/login/LoginSettingsViewer.ts b/src/settings/login/LoginSettingsViewer.ts index 34e5da8e4ac..f758a8552f4 100644 --- a/src/settings/login/LoginSettingsViewer.ts +++ b/src/settings/login/LoginSettingsViewer.ts @@ -168,9 +168,7 @@ export class LoginSettingsViewer implements UpdatableSettingsViewer { ), m(".small", lang.get("sessionsWillBeDeleted_msg")), m(".small", lang.get("sessionsInfo_msg")), - this._usageTestModel.isCustomerOptedOut() - ? null - : m("", [m(".h4.mt-l", lang.get("usageData_label")), m(DropDownSelector, usageDataOptInAttrs)]), + this._usageTestModel.isCustomerOptedOut() ? null : m("", [m(".h4.mt-l", lang.get("usageData_label")), m(DropDownSelector, usageDataOptInAttrs)]), ]), ]) } else { @@ -311,11 +309,7 @@ export class LoginSettingsViewer implements UpdatableSettingsViewer { .filter((session) => session.state !== SessionState.SESSION_STATE_ACTIVE) .map((session) => { return { - cells: [ - session.clientIdentifier, - formatDateTimeFromYesterdayOn(session.lastAccessTime), - session.loginIpAddress ? session.loginIpAddress : "", - ], + cells: [session.clientIdentifier, formatDateTimeFromYesterdayOn(session.lastAccessTime), session.loginIpAddress ? session.loginIpAddress : ""], } }) return m(Table, { diff --git a/src/settings/login/secondfactor/SecondFactorEditModel.ts b/src/settings/login/secondfactor/SecondFactorEditModel.ts index 4001f25425d..6bf7a64df0b 100644 --- a/src/settings/login/secondfactor/SecondFactorEditModel.ts +++ b/src/settings/login/secondfactor/SecondFactorEditModel.ts @@ -232,9 +232,7 @@ export class SecondFactorEditModel { */ private updateNameValidation(): void { this.nameValidationStatus = - this.selectedType !== SecondFactorType.webauthn || validateWebauthnDisplayName(this.name) - ? NameValidationStatus.Valid - : NameValidationStatus.Invalid + this.selectedType !== SecondFactorType.webauthn || validateWebauthnDisplayName(this.name) ? NameValidationStatus.Valid : NameValidationStatus.Invalid } /** diff --git a/src/settings/login/secondfactor/SecondFactorsEditForm.ts b/src/settings/login/secondfactor/SecondFactorsEditForm.ts index 79f6e4bd76f..d9cb9300722 100644 --- a/src/settings/login/secondfactor/SecondFactorsEditForm.ts +++ b/src/settings/login/secondfactor/SecondFactorsEditForm.ts @@ -27,7 +27,10 @@ assertMainOrNode() export class SecondFactorsEditForm { _2FALineAttrs: TableLineAttrs[] - constructor(private readonly user: LazyLoaded, private readonly domainConfigProvider: DomainConfigProvider) { + constructor( + private readonly user: LazyLoaded, + private readonly domainConfigProvider: DomainConfigProvider, + ) { this._2FALineAttrs = [] this._updateSecondFactors() diff --git a/src/settings/mailaddress/AddAliasDialog.ts b/src/settings/mailaddress/AddAliasDialog.ts index 298530122d7..5691a1962b1 100644 --- a/src/settings/mailaddress/AddAliasDialog.ts +++ b/src/settings/mailaddress/AddAliasDialog.ts @@ -56,19 +56,17 @@ export function showAddAliasDialog(model: MailAddressTableModel, isNewPaidPlan: if (!domain.isPaid || isNewPaidPlan) { formDomain = domain } else { - Dialog.confirm(() => `${lang.get("paidEmailDomainLegacy_msg")}\n${lang.get("changePaidPlan_msg")}`).then( - async (confirmed) => { - if (confirmed) { - isNewPaidPlan = await showPlanUpgradeRequiredDialog([ - PlanType.Revolutionary, - PlanType.Legend, - PlanType.Essential, - PlanType.Advanced, - PlanType.Unlimited, - ]) - } - }, - ) + Dialog.confirm(() => `${lang.get("paidEmailDomainLegacy_msg")}\n${lang.get("changePaidPlan_msg")}`).then(async (confirmed) => { + if (confirmed) { + isNewPaidPlan = await showPlanUpgradeRequiredDialog([ + PlanType.Revolutionary, + PlanType.Legend, + PlanType.Essential, + PlanType.Advanced, + PlanType.Unlimited, + ]) + } + }) } }, }), diff --git a/src/settings/mailaddress/AnotherUserMailAddressNameChanger.ts b/src/settings/mailaddress/AnotherUserMailAddressNameChanger.ts index 296e34b52a4..6076298dcda 100644 --- a/src/settings/mailaddress/AnotherUserMailAddressNameChanger.ts +++ b/src/settings/mailaddress/AnotherUserMailAddressNameChanger.ts @@ -7,7 +7,11 @@ import { assertNotNull } from "@tutao/tutanota-utils" * We can't normally update instances for the groups we are not member of so we do it via a service. */ export class AnotherUserMailAddressNameChanger implements MailAddressNameChanger { - constructor(private readonly mailAddressFacade: MailAddressFacade, private readonly mailGroupId: Id, private readonly userId: Id) {} + constructor( + private readonly mailAddressFacade: MailAddressFacade, + private readonly mailGroupId: Id, + private readonly userId: Id, + ) {} getSenderNames(): Promise { return this.mailAddressFacade.getSenderNames(this.mailGroupId, this.userId) diff --git a/src/settings/mailaddress/OwnMailAddressNameChanger.ts b/src/settings/mailaddress/OwnMailAddressNameChanger.ts index d6db0c48e00..0f6a19171a6 100644 --- a/src/settings/mailaddress/OwnMailAddressNameChanger.ts +++ b/src/settings/mailaddress/OwnMailAddressNameChanger.ts @@ -6,7 +6,10 @@ import { findAndRemove } from "@tutao/tutanota-utils" /** Name changer for personal mailbox of the currently logged-in user. */ export class OwnMailAddressNameChanger implements MailAddressNameChanger { - constructor(private readonly mailModel: MailModel, private readonly entityClient: EntityClient) {} + constructor( + private readonly mailModel: MailModel, + private readonly entityClient: EntityClient, + ) {} async getSenderNames(): Promise { const mailboxProperties = await this.getMailboxProperties() diff --git a/src/sharing/view/GroupSharingDialog.ts b/src/sharing/view/GroupSharingDialog.ts index 8c2b80ba553..81ff553757c 100644 --- a/src/sharing/view/GroupSharingDialog.ts +++ b/src/sharing/view/GroupSharingDialog.ts @@ -191,8 +191,7 @@ async function showAddParticipantDialog(model: GroupSharingModel, texts: GroupSh ], onRecipientAdded: (address, name, contact) => recipients.push(recipientsModel.resolve({ address, name, contact }, ResolveMode.Eager).whenResolved(() => m.redraw())), - onRecipientRemoved: (address) => - findAndRemove(recipients, (recipient) => cleanMailAddress(recipient.address) === cleanMailAddress(address)), + onRecipientRemoved: (address) => findAndRemove(recipients, (recipient) => cleanMailAddress(recipient.address) === cleanMailAddress(address)), onTextChanged: recipientsText, search, maxSuggestionsToShow: 3, diff --git a/src/subscription/BuyDialog.ts b/src/subscription/BuyDialog.ts index bc8058bcd3c..38261a6f9e0 100644 --- a/src/subscription/BuyDialog.ts +++ b/src/subscription/BuyDialog.ts @@ -49,9 +49,7 @@ async function prepareDialog({ featureType, count, reactivate }: BookingParams): const price = await locator.bookingFacade.getPrice(featureType, count, reactivate) const priceChangeModel = new PriceChangeModel(price, featureType) const customerInfo = await locator.logins.getUserController().loadCustomerInfo() - const accountingInfo = await locator.entityClient - .load(AccountingInfoTypeRef, customerInfo.accountingInfo) - .catch(ofClass(NotAuthorizedError, () => null)) + const accountingInfo = await locator.entityClient.load(AccountingInfoTypeRef, customerInfo.accountingInfo).catch(ofClass(NotAuthorizedError, () => null)) if (accountingInfo && accountingInfo.paymentMethod == null) { const confirm = await Dialog.confirm("enterPaymentDataFirst_msg") if (confirm) { @@ -168,7 +166,10 @@ class PriceChangeModel { readonly futurePrice: number readonly additionalFeatures: ReadonlySet - constructor(private readonly price: PriceServiceReturn, readonly featureType: BookingItemFeatureType) { + constructor( + private readonly price: PriceServiceReturn, + readonly featureType: BookingItemFeatureType, + ) { this.currentItem = getPriceItem(price.currentPriceNextPeriod, featureType) this.futureItem = getPriceItem(price.futurePriceNextPeriod, featureType) this.currentPrice = this.getPriceFromPriceData(price.currentPriceNextPeriod, featureType) diff --git a/src/subscription/InvoiceDataInput.ts b/src/subscription/InvoiceDataInput.ts index 347867ca7d6..310189db3aa 100644 --- a/src/subscription/InvoiceDataInput.ts +++ b/src/subscription/InvoiceDataInput.ts @@ -25,7 +25,11 @@ export class InvoiceDataInput implements Component { private vatNumber: string = "" private __paymentPaypalTest?: UsageTest - constructor(private businessUse: boolean, invoiceData: InvoiceData, private readonly location = InvoiceDataInputLocation.Other) { + constructor( + private businessUse: boolean, + invoiceData: InvoiceData, + private readonly location = InvoiceDataInputLocation.Other, + ) { this.__paymentPaypalTest = locator.usageTestController.getTest("payment.paypal") this.invoiceAddressComponent = new HtmlEditor() diff --git a/src/subscription/SignupForm.ts b/src/subscription/SignupForm.ts index 500e55ce190..484736aabda 100644 --- a/src/subscription/SignupForm.ts +++ b/src/subscription/SignupForm.ts @@ -53,9 +53,8 @@ export class SignupForm implements Component { private __signupFreeTest?: UsageTest private __signupPaidTest?: UsageTest - private readonly availableDomains: readonly EmailDomainData[] = (locator.domainConfigProvider().getCurrentDomainConfig().firstPartyDomain - ? TUTANOTA_MAIL_ADDRESS_SIGNUP_DOMAINS - : getWhitelabelRegistrationDomains() + private readonly availableDomains: readonly EmailDomainData[] = ( + locator.domainConfigProvider().getCurrentDomainConfig().firstPartyDomain ? TUTANOTA_MAIL_ADDRESS_SIGNUP_DOMAINS : getWhitelabelRegistrationDomains() ) .map((domain) => ({ domain, isPaid: isPaidPlanDomain(domain) })) // hide paid domains for iOS @@ -144,8 +143,7 @@ export class SignupForm implements Component { return a.onComplete(null) } - const errorMessage = - this._mailAddressFormErrorId || this.passwordModel.getErrorMessageId() || (!this._confirmTerms() ? "termsAcceptedNeutral_msg" : null) + const errorMessage = this._mailAddressFormErrorId || this.passwordModel.getErrorMessageId() || (!this._confirmTerms() ? "termsAcceptedNeutral_msg" : null) if (errorMessage) { Dialog.message(errorMessage) @@ -157,16 +155,11 @@ export class SignupForm implements Component { if (confirmed) { this.__completePreviousStages() - return signup( - this._mailAddress, - this.passwordModel.getNewPassword(), - this._code(), - a.isBusinessUse(), - a.isPaidSubscription(), - a.campaign(), - ).then((newAccountData) => { - a.onComplete(newAccountData ? newAccountData : null) - }) + return signup(this._mailAddress, this.passwordModel.getNewPassword(), this._code(), a.isBusinessUse(), a.isPaidSubscription(), a.campaign()).then( + (newAccountData) => { + a.onComplete(newAccountData ? newAccountData : null) + }, + ) } }) } @@ -184,9 +177,7 @@ export class SignupForm implements Component { : [ m(SelectMailAddressForm, mailAddressFormAttrs), // Leave as is a.isPaidSubscription() - ? m(".small.mt-s", lang.get("configureCustomDomainAfterSignup_msg"), [ - m(ExternalLink, { href: faqCustomDomainLink, isCompanySite: true }), - ]) + ? m(".small.mt-s", lang.get("configureCustomDomainAfterSignup_msg"), [m(ExternalLink, { href: faqCustomDomainLink, isCompanySite: true })]) : null, m(PasswordForm, { model: this.passwordModel, diff --git a/src/subscription/SimplifiedCreditCardInputModel.ts b/src/subscription/SimplifiedCreditCardInputModel.ts index 3e6c9e370a9..bff851ab60e 100644 --- a/src/subscription/SimplifiedCreditCardInputModel.ts +++ b/src/subscription/SimplifiedCreditCardInputModel.ts @@ -230,7 +230,6 @@ function inferNormalizedExpirationDate(value: string, oldDate: string): string { // we need a slash ret += separator } - // we have a month + slash + potentially first year digit // rest contains only the part of the input that is relevant to the year ;({ rest, ret } = nomDigitsUntilLength(rest, ret, "xx/xx".length)) @@ -240,7 +239,6 @@ function inferNormalizedExpirationDate(value: string, oldDate: string): string { // means we can assume two-digit year and return. return ret.replace(separator, niceSeparator) } - ;({ ret } = nomDigitsUntilLength(rest, ret, "xx/xxxx".length)) return ret.replace(separator, niceSeparator) @@ -331,8 +329,7 @@ export class SimplifiedCreditCardViewModel implements CCViewModel { set creditCardNumber(value: string) { let cleanedNumber = stripNonDigits(stripWhitespace(value)) this.creditCardType = getCardTypeRange(cleanedNumber) - this._creditCardNumber = - this.creditCardType === CardType.Amex ? groupCreditCardNumber(cleanedNumber, [4, 6, 5, 5]) : groupCreditCardNumber(cleanedNumber) + this._creditCardNumber = this.creditCardType === CardType.Amex ? groupCreditCardNumber(cleanedNumber, [4, 6, 5, 5]) : groupCreditCardNumber(cleanedNumber) } get cardHolderName(): string { diff --git a/src/subscription/SubscriptionViewer.ts b/src/subscription/SubscriptionViewer.ts index 7a12c07875d..5c935ed4577 100644 --- a/src/subscription/SubscriptionViewer.ts +++ b/src/subscription/SubscriptionViewer.ts @@ -125,17 +125,17 @@ export class SubscriptionViewer implements UpdatableSettingsViewer { size: ButtonSize.Compact, }) : !this._isCancelled - ? m(IconButton, { - title: "subscription_label", - click: () => { - if (this._accountingInfo && this._customer && this._customerInfo && this._lastBooking) { - showSwitchDialog(this._customer, this._customerInfo, this._accountingInfo, this._lastBooking, AvailablePlans, null) - } - }, - icon: Icons.Edit, - size: ButtonSize.Compact, - }) - : null, + ? m(IconButton, { + title: "subscription_label", + click: () => { + if (this._accountingInfo && this._customer && this._customerInfo && this._lastBooking) { + showSwitchDialog(this._customer, this._customerInfo, this._accountingInfo, this._lastBooking, AvailablePlans, null) + } + }, + icon: Icons.Edit, + size: ButtonSize.Compact, + }) + : null, }), this.showOrderAgreement() ? this.renderAgreement() : null, this.showPriceData() ? this.renderIntervals() : null, diff --git a/src/subscription/SwitchSubscriptionDialog.ts b/src/subscription/SwitchSubscriptionDialog.ts index 1cd5ae1fd52..ac6be46f716 100644 --- a/src/subscription/SwitchSubscriptionDialog.ts +++ b/src/subscription/SwitchSubscriptionDialog.ts @@ -109,7 +109,7 @@ export async function showSwitchDialog( ({ label: "pricing.select_action", onclick: () => cancelSubscription(dialog, currentPlanInfo, deferred, customer), - } as LoginButtonAttrs), + }) as LoginButtonAttrs, [PlanType.Revolutionary]: createPlanButton(dialog, PlanType.Revolutionary, currentPlanInfo, deferred, paymentInterval, accountingInfo), [PlanType.Legend]: createPlanButton(dialog, PlanType.Legend, currentPlanInfo, deferred, paymentInterval, accountingInfo), @@ -153,10 +153,7 @@ function createPlanButton( ) { return } - await showProgressDialog( - "pleaseWait_msg", - doSwitchPlan(accountingInfo, newPaymentInterval(), targetSubscription, dialog, currentPlanInfo, deferredPlan), - ) + await showProgressDialog("pleaseWait_msg", doSwitchPlan(accountingInfo, newPaymentInterval(), targetSubscription, dialog, currentPlanInfo, deferredPlan)) }, }) } diff --git a/src/subscription/UpgradeConfirmSubscriptionPage.ts b/src/subscription/UpgradeConfirmSubscriptionPage.ts index 2a966ecc790..9c2b7c95a67 100644 --- a/src/subscription/UpgradeConfirmSubscriptionPage.ts +++ b/src/subscription/UpgradeConfirmSubscriptionPage.ts @@ -68,8 +68,7 @@ export class UpgradeConfirmSubscriptionPage implements WizardPageN { Dialog.message( () => - lang.get(getPreconditionFailedPaymentMsg(e.data)) + - (data.upgradeType === UpgradeType.Signup ? " " + lang.get("accountWasStillCreated_msg") : ""), + lang.get(getPreconditionFailedPaymentMsg(e.data)) + (data.upgradeType === UpgradeType.Signup ? " " + lang.get("accountWasStillCreated_msg") : ""), ) }), ) @@ -77,8 +76,7 @@ export class UpgradeConfirmSubscriptionPage implements WizardPageN { Dialog.message( () => - lang.get("paymentProviderNotAvailableError_msg") + - (data.upgradeType === UpgradeType.Signup ? " " + lang.get("accountWasStillCreated_msg") : ""), + lang.get("paymentProviderNotAvailableError_msg") + (data.upgradeType === UpgradeType.Signup ? " " + lang.get("accountWasStillCreated_msg") : ""), ) }), ) @@ -115,9 +113,7 @@ export class UpgradeConfirmSubscriptionPage implements WizardPageN title, ), m(".flex.badge-line-height.text-ellipsis", [ - tag - ? m(".small.keyword-bubble-no-padding.pl-s.pr-s.border-radius.no-wrap.small.min-content", TEMPLATE_SHORTCUT_PREFIX + tag.toLowerCase()) - : null, + tag ? m(".small.keyword-bubble-no-padding.pl-s.pr-s.border-radius.no-wrap.small.min-content", TEMPLATE_SHORTCUT_PREFIX + tag.toLowerCase()) : null, ]), ], ) diff --git a/src/templates/view/TemplateShortcutListener.ts b/src/templates/view/TemplateShortcutListener.ts index 4921225ef7a..571f69e84c7 100644 --- a/src/templates/view/TemplateShortcutListener.ts +++ b/src/templates/view/TemplateShortcutListener.ts @@ -36,11 +36,7 @@ class TemplateShortcutListener { const templateShortcutStartIndex = text.lastIndexOf(TEMPLATE_SHORTCUT_PREFIX) const lastWhiteSpaceIndex = text.search(/\s\S*$/) - if ( - templateShortcutStartIndex !== -1 && - templateShortcutStartIndex < cursorEndPos.startOffset && - templateShortcutStartIndex > lastWhiteSpaceIndex - ) { + if (templateShortcutStartIndex !== -1 && templateShortcutStartIndex < cursorEndPos.startOffset && templateShortcutStartIndex > lastWhiteSpaceIndex) { // stopPropagation & preventDefault to prevent tabbing to "close" button or tabbing into background event.stopPropagation() event.preventDefault() diff --git a/test/tests/api/main/EntropyCollectorTest.ts b/test/tests/api/main/EntropyCollectorTest.ts index c432bc7073e..f86623102b4 100644 --- a/test/tests/api/main/EntropyCollectorTest.ts +++ b/test/tests/api/main/EntropyCollectorTest.ts @@ -8,7 +8,7 @@ import { getFromMap, remove } from "@tutao/tutanota-utils" class FakeWindow { listeners: Map unknown)[]> = new Map() - addEventListener: typeof Window.prototype["addEventListener"] = (event, listener) => { + addEventListener: (typeof Window.prototype)["addEventListener"] = (event, listener) => { this.getListeners(event).push(listener) } @@ -16,7 +16,7 @@ class FakeWindow { return getFromMap(this.listeners, event, () => []) } - removeEventListener: typeof Window.prototype["removeEventListener"] = (event, listener) => { + removeEventListener: (typeof Window.prototype)["removeEventListener"] = (event, listener) => { remove(this.getListeners(event), listener) } @@ -26,7 +26,7 @@ class FakeWindow { } } - crypto: Partial = { + crypto: Partial<(typeof Window.prototype)["crypto"]> = { getRandomValues(array: T): T { if (array) { array[0] = 32 diff --git a/test/tests/api/worker/crypto/CryptoFacadeTest.ts b/test/tests/api/worker/crypto/CryptoFacadeTest.ts index e998d6a08db..14e5bd9ef7c 100644 --- a/test/tests/api/worker/crypto/CryptoFacadeTest.ts +++ b/test/tests/api/worker/crypto/CryptoFacadeTest.ts @@ -320,13 +320,7 @@ o.spec("CryptoFacadeTest", function () { let value = "this is a string value" let encryptedValue = neverNull(encryptValue("test", valueType, value, sk)) let expected = uint8ArrayToBase64( - aesEncrypt( - sk, - stringToUtf8Uint8Array(value), - base64ToUint8Array(encryptedValue).slice(ENABLE_MAC ? 1 : 0, ENABLE_MAC ? 17 : 16), - true, - ENABLE_MAC, - ), + aesEncrypt(sk, stringToUtf8Uint8Array(value), base64ToUint8Array(encryptedValue).slice(ENABLE_MAC ? 1 : 0, ENABLE_MAC ? 17 : 16), true, ENABLE_MAC), ) o(encryptedValue).equals(expected) o(decryptValue("test", valueType, encryptedValue, sk)).equals(value) @@ -478,9 +472,7 @@ o.spec("CryptoFacadeTest", function () { sender: { _id: "senderId", address: "hello@tutao.de", - name: uint8ArrayToBase64( - aesEncrypt(sessionKey, stringToUtf8Uint8Array(senderName), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC), - ), + name: uint8ArrayToBase64(aesEncrypt(sessionKey, stringToUtf8Uint8Array(senderName), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC)), }, bccRecipients: [], ccRecipients: [], @@ -488,18 +480,14 @@ o.spec("CryptoFacadeTest", function () { { _id: "recipientId", address: "support@yahoo.com", - name: uint8ArrayToBase64( - aesEncrypt(sessionKey, stringToUtf8Uint8Array(recipientName), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC), - ), + name: uint8ArrayToBase64(aesEncrypt(sessionKey, stringToUtf8Uint8Array(recipientName), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC)), }, ], replyTos: [], bucketKey: null, attachmentCount: "0", authStatus: "0", - listUnsubscribe: uint8ArrayToBase64( - aesEncrypt(sessionKey, stringToUtf8Uint8Array(""), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC), - ), + listUnsubscribe: uint8ArrayToBase64(aesEncrypt(sessionKey, stringToUtf8Uint8Array(""), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC)), method: uint8ArrayToBase64(aesEncrypt(sessionKey, stringToUtf8Uint8Array(""), random.generateRandomData(IV_BYTE_LENGTH), true, ENABLE_MAC)), phishingStatus: "0", recipientCount: "0", @@ -1848,15 +1836,7 @@ o.spec("CryptoFacadeTest", function () { let sk = aes256RandomKey() let bk = aes256RandomKey() - const mailLiteral = createMailLiteral( - recipientUser.mailGroupKey, - sk, - subject, - confidential, - senderName, - recipientUser.name, - recipientUser.mailGroup._id, - ) + const mailLiteral = createMailLiteral(recipientUser.mailGroupKey, sk, subject, confidential, senderName, recipientUser.name, recipientUser.mailGroup._id) // @ts-ignore mailLiteral._ownerEncSessionKey = null diff --git a/test/tests/api/worker/facades/BlobFacadeTest.ts b/test/tests/api/worker/facades/BlobFacadeTest.ts index 747b358112b..1ab756927bd 100644 --- a/test/tests/api/worker/facades/BlobFacadeTest.ts +++ b/test/tests/api/worker/facades/BlobFacadeTest.ts @@ -152,14 +152,7 @@ o.spec("BlobFacade test", function () { const referenceTokens = await blobFacade.encryptAndUploadNative(archiveDataType, uploadedFileUri, ownerGroup, sessionKey) o(referenceTokens).deepEquals(expectedReferenceTokens) - verify( - fileAppMock.upload( - encryptedFileInfo.uri, - `http://w1.api.tuta.com${BLOB_SERVICE_REST_PATH}?test=theseAreTheParamsIPromise`, - HttpMethod.POST, - {}, - ), - ) + verify(fileAppMock.upload(encryptedFileInfo.uri, `http://w1.api.tuta.com${BLOB_SERVICE_REST_PATH}?test=theseAreTheParamsIPromise`, HttpMethod.POST, {})) }) }) @@ -220,12 +213,7 @@ o.spec("BlobFacade test", function () { when(fileAppMock.getSize(decryptedUri)).thenResolve(size) env.mode = Mode.Desktop - const decryptedFileReference = await blobFacade.downloadAndDecryptNative( - archiveDataType, - wrapTutanotaFile(file), - file.name, - neverNull(file.mimeType), - ) + const decryptedFileReference = await blobFacade.downloadAndDecryptNative(archiveDataType, wrapTutanotaFile(file), file.name, neverNull(file.mimeType)) const expectedFileReference: FileReference = { _type: "FileReference", diff --git a/test/tests/api/worker/facades/CalendarFacadeTest.ts b/test/tests/api/worker/facades/CalendarFacadeTest.ts index 82a759f7338..c18881397cd 100644 --- a/test/tests/api/worker/facades/CalendarFacadeTest.ts +++ b/test/tests/api/worker/facades/CalendarFacadeTest.ts @@ -287,9 +287,7 @@ o.spec("CalendarFacadeTest", function () { const typeRef = instances[0]?._type if (isSameTypeRef(typeRef, CalendarEventTypeRef)) { if (listId === listId1) { - return Promise.reject( - new SetupMultipleError("could not save event", [new Error("failed"), new ConnectionError("no connection")], instances), - ) + return Promise.reject(new SetupMultipleError("could not save event", [new Error("failed"), new ConnectionError("no connection")], instances)) } else if (listId === listId2) { return Promise.resolve(["eventId2"]) } else { diff --git a/test/tests/api/worker/facades/LoginFacadeTest.ts b/test/tests/api/worker/facades/LoginFacadeTest.ts index 780d8bd2963..7e8616fccd4 100644 --- a/test/tests/api/worker/facades/LoginFacadeTest.ts +++ b/test/tests/api/worker/facades/LoginFacadeTest.ts @@ -247,9 +247,7 @@ o.spec("LoginFacadeTest", function () { o("when resuming a session and the offline initialization has created a new database, we do synchronous login", async function () { usingOfflineStorage = true user.accountType = AccountType.PAID - when( - cacheStorageInitializerMock.initialize({ type: "offline", databaseKey: dbKey, userId, timeRangeDays, forceNewDatabase: false }), - ).thenResolve({ + when(cacheStorageInitializerMock.initialize({ type: "offline", databaseKey: dbKey, userId, timeRangeDays, forceNewDatabase: false })).thenResolve({ isPersistent: true, isNewOfflineDb: true, }) @@ -262,9 +260,7 @@ o.spec("LoginFacadeTest", function () { usingOfflineStorage = true user.accountType = AccountType.PAID - when( - cacheStorageInitializerMock.initialize({ type: "offline", databaseKey: dbKey, userId, timeRangeDays, forceNewDatabase: false }), - ).thenResolve({ + when(cacheStorageInitializerMock.initialize({ type: "offline", databaseKey: dbKey, userId, timeRangeDays, forceNewDatabase: false })).thenResolve({ isPersistent: true, isNewOfflineDb: false, }) @@ -442,11 +438,9 @@ o.spec("LoginFacadeTest", function () { return JSON.stringify({ user: userId, accessKey: keyToBase64(accessKey) }) }) - await facade - .resumeSession(credentials, user.salt == null ? null : { salt: user.salt, kdfType: DEFAULT_KDF_TYPE }, dbKey, timeRangeDays) - .finally(() => { - calls.push("return") - }) + await facade.resumeSession(credentials, user.salt == null ? null : { salt: user.salt, kdfType: DEFAULT_KDF_TYPE }, dbKey, timeRangeDays).finally(() => { + calls.push("return") + }) o(calls).deepEquals(["sessionService", "setUser", "return"]) } @@ -456,9 +450,7 @@ o.spec("LoginFacadeTest", function () { throw new ConnectionError("Oopsie 3") }) - await o(() => facade.resumeSession(credentials, { salt: user.salt!, kdfType: DEFAULT_KDF_TYPE }, dbKey, timeRangeDays)).asyncThrows( - ConnectionError, - ) + await o(() => facade.resumeSession(credentials, { salt: user.salt!, kdfType: DEFAULT_KDF_TYPE }, dbKey, timeRangeDays)).asyncThrows(ConnectionError) o(calls).deepEquals(["sessionService"]) } }) @@ -595,9 +587,7 @@ o.spec("LoginFacadeTest", function () { when(entityClientMock.load(UserTypeRef, userId)).thenResolve(user) - when(serviceExecutor.get(SaltService, anything()), { ignoreExtraArgs: true }).thenResolve( - createSaltReturn({ salt: SALT, kdfVersion: KdfType.Bcrypt }), - ) + when(serviceExecutor.get(SaltService, anything()), { ignoreExtraArgs: true }).thenResolve(createSaltReturn({ salt: SALT, kdfVersion: KdfType.Bcrypt })) // // The call to /sys/session/... // when(restClientMock.request(anything(), HttpMethod.GET, anything())) diff --git a/test/tests/api/worker/facades/RsaPqPerformanceTest.ts b/test/tests/api/worker/facades/RsaPqPerformanceTest.ts index e903a43f239..9f654d28b20 100644 --- a/test/tests/api/worker/facades/RsaPqPerformanceTest.ts +++ b/test/tests/api/worker/facades/RsaPqPerformanceTest.ts @@ -45,9 +45,7 @@ o.spec("RsaPqPerformanceTest", function () { let pubEncBucketKey for (let i = 0; i < iterations; i++) { const ephemeralKeyPair = generateEccKeyPair() - pubEncBucketKey = encodePQMessage( - await pqFacade.encapsulate(senderIdentityKeyPair, ephemeralKeyPair, pqKeyPairsToPublicKeys(recipientKeys), bucketKey), - ) + pubEncBucketKey = encodePQMessage(await pqFacade.encapsulate(senderIdentityKeyPair, ephemeralKeyPair, pqKeyPairsToPublicKeys(recipientKeys), bucketKey)) } let end = window.performance.now() console.log(formatNumber((end - start) / iterations) + "ms per pq encryption") diff --git a/test/tests/api/worker/offline/OfflineStorageTest.ts b/test/tests/api/worker/offline/OfflineStorageTest.ts index 0d2cf589b8c..fa517012211 100644 --- a/test/tests/api/worker/offline/OfflineStorageTest.ts +++ b/test/tests/api/worker/offline/OfflineStorageTest.ts @@ -97,9 +97,7 @@ o.spec("OfflineStorage", function () { let preparedQuery switch (typeModel.type) { case TypeId.Element.valueOf(): - preparedQuery = sql`insert into element_entities values (${type}, ${(entity as ElementEntity)._id}, ${entity._ownerGroup}, ${encode( - entity, - )})` + preparedQuery = sql`insert into element_entities values (${type}, ${(entity as ElementEntity)._id}, ${entity._ownerGroup}, ${encode(entity)})` break case TypeId.ListElement.valueOf(): const [listId, elementId] = (entity as ListElementEntity)._id @@ -107,9 +105,7 @@ o.spec("OfflineStorage", function () { break case TypeId.BlobElement.valueOf(): const [archiveId, blobElementId] = (entity as BlobElementEntity)._id - preparedQuery = sql`INSERT INTO blob_element_entities VALUES (${type}, ${archiveId}, ${blobElementId}, ${entity._ownerGroup}, ${encode( - entity, - )})` + preparedQuery = sql`INSERT INTO blob_element_entities VALUES (${type}, ${archiveId}, ${blobElementId}, ${entity._ownerGroup}, ${encode(entity)})` break default: throw new Error("must be a persistent type") @@ -257,9 +253,7 @@ o.spec("OfflineStorage", function () { o.beforeEach(async function () { await storage.init({ userId, databaseKey, timeRangeDays, forceNewDatabase: false }) - await insertEntity( - createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", spamFolderId], mails: spamListId, folderType: MailFolderType.SPAM }), - ) + await insertEntity(createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", spamFolderId], mails: spamListId, folderType: MailFolderType.SPAM })) await insertEntity( createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", trashFolderId], mails: trashListId, folderType: MailFolderType.TRASH }), ) @@ -433,9 +427,7 @@ o.spec("OfflineStorage", function () { const mailBefore = createTestEntity(MailTypeRef, { _id: [inboxMailList, offsetId(-2)], body: beforeMailBodyId }) const mailAfter = createTestEntity(MailTypeRef, { _id: [inboxMailList, offsetId(2)], body: afterMailBodyId }) - await insertEntity( - createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", "folderId"], mails: inboxMailList, folderType: MailFolderType.INBOX }), - ) + await insertEntity(createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", "folderId"], mails: inboxMailList, folderType: MailFolderType.INBOX })) await insertEntity(mailBefore) await insertEntity(mailAfter) await insertEntity(createTestEntity(MailBodyTypeRef, { _id: beforeMailBodyId })) @@ -458,9 +450,7 @@ o.spec("OfflineStorage", function () { const mail1 = createTestEntity(MailTypeRef, { _id: [inboxMailList, offsetId(-2)], body: mailBodyId1 }) const mail2 = createTestEntity(MailTypeRef, { _id: [inboxMailList, offsetId(-3)], body: mailBodyId2 }) - await insertEntity( - createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", "folderId"], mails: inboxMailList, folderType: MailFolderType.INBOX }), - ) + await insertEntity(createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", "folderId"], mails: inboxMailList, folderType: MailFolderType.INBOX })) await insertEntity(mail1) await insertEntity(mail2) await insertEntity(createTestEntity(MailBodyTypeRef, { _id: mailBodyId1 })) @@ -484,9 +474,7 @@ o.spec("OfflineStorage", function () { const mailBefore = createTestEntity(MailTypeRef, { _id: [inboxMailList, offsetId(-2)], body: beforeMailBodyId, attachments: [fileBefore._id] }) const mailAfter = createTestEntity(MailTypeRef, { _id: [inboxMailList, offsetId(2)], body: afterMailBodyId, attachments: [fileAfter._id] }) - await insertEntity( - createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", "folderId"], mails: inboxMailList, folderType: MailFolderType.INBOX }), - ) + await insertEntity(createTestEntity(MailFolderTypeRef, { _id: ["mailFolderList", "folderId"], mails: inboxMailList, folderType: MailFolderType.INBOX })) await insertEntity(mailBefore) await insertEntity(mailAfter) await insertEntity(fileBefore) diff --git a/test/tests/api/worker/rest/CustomCacheHandlerTest.ts b/test/tests/api/worker/rest/CustomCacheHandlerTest.ts index dd574486186..42027155ee9 100644 --- a/test/tests/api/worker/rest/CustomCacheHandlerTest.ts +++ b/test/tests/api/worker/rest/CustomCacheHandlerTest.ts @@ -52,26 +52,17 @@ o.spec("Custom calendar events handler", function () { verify(offlineStorageMock.setNewRangeForList(CalendarEventTypeRef, listId, CUSTOM_MIN_ID, CUSTOM_MAX_ID)) }) - o( - "result of server request is inserted into cache and the range is set. Loads more than 100, but only count elements are returned.", - async function () { - when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, CUSTOM_MIN_ID, LOAD_MULTIPLE_LIMIT, false)).thenResolve( - bigList.slice(0, 100), - ) - when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, bigListIds[99], LOAD_MULTIPLE_LIMIT, false)).thenResolve( - bigList.slice(100, 200), - ) - when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, bigListIds[199], LOAD_MULTIPLE_LIMIT, false)).thenResolve( - bigList.slice(200, 300), - ) - when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, bigListIds[299], LOAD_MULTIPLE_LIMIT, false)).thenResolve([]) - const res = await cacheHandler.loadRange(offlineStorageMock, bigListId, bigListIds[0], 3, false) - o(res.map(toElementId)).deepEquals(allList.map(toElementId).slice(1, 4))("count elements are returned") - verify(offlineStorageMock.put(matchers.anything()), { times: bigList.length }) - verify(offlineStorageMock.setNewRangeForList(CalendarEventTypeRef, bigListId, CUSTOM_MIN_ID, CUSTOM_MAX_ID)) - verify(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, matchers.anything(), LOAD_MULTIPLE_LIMIT, false), { times: 4 }) - }, - ) + o("result of server request is inserted into cache and the range is set. Loads more than 100, but only count elements are returned.", async function () { + when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, CUSTOM_MIN_ID, LOAD_MULTIPLE_LIMIT, false)).thenResolve(bigList.slice(0, 100)) + when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, bigListIds[99], LOAD_MULTIPLE_LIMIT, false)).thenResolve(bigList.slice(100, 200)) + when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, bigListIds[199], LOAD_MULTIPLE_LIMIT, false)).thenResolve(bigList.slice(200, 300)) + when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, bigListIds[299], LOAD_MULTIPLE_LIMIT, false)).thenResolve([]) + const res = await cacheHandler.loadRange(offlineStorageMock, bigListId, bigListIds[0], 3, false) + o(res.map(toElementId)).deepEquals(allList.map(toElementId).slice(1, 4))("count elements are returned") + verify(offlineStorageMock.put(matchers.anything()), { times: bigList.length }) + verify(offlineStorageMock.setNewRangeForList(CalendarEventTypeRef, bigListId, CUSTOM_MIN_ID, CUSTOM_MAX_ID)) + verify(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, matchers.anything(), LOAD_MULTIPLE_LIMIT, false), { times: 4 }) + }) o("result of server request is inserted into cache and the range is set. No elements on the server. No elements are returned.", async function () { when(entityRestClientMock.loadRange(CalendarEventTypeRef, bigListId, CUSTOM_MIN_ID, LOAD_MULTIPLE_LIMIT, false)).thenResolve([]) diff --git a/test/tests/api/worker/rest/EntityRestCacheTest.ts b/test/tests/api/worker/rest/EntityRestCacheTest.ts index 055490d198e..82196f5716d 100644 --- a/test/tests/api/worker/rest/EntityRestCacheTest.ts +++ b/test/tests/api/worker/rest/EntityRestCacheTest.ts @@ -708,10 +708,7 @@ export function testEntityRestCache(name: string, getStorage: (userId: Id) => Pr // Move mail event: we don't try to load the mail again, we just update our cached mail await cache.entityEventsReceived( - makeBatch([ - createUpdate(MailTypeRef, "listId1", "id3", OperationType.DELETE), - createUpdate(MailTypeRef, "listId2", "id3", OperationType.CREATE), - ]), + makeBatch([createUpdate(MailTypeRef, "listId1", "id3", OperationType.DELETE), createUpdate(MailTypeRef, "listId2", "id3", OperationType.CREATE)]), ) // id3 was moved to another list, which means it is no longer cached, which means we should try to load it again when requested (causing NotFoundError) @@ -1398,17 +1395,11 @@ export function testEntityRestCache(name: string, getStorage: (userId: Id) => Pr await storage.put(mails[98]) await storage.put(mails[99]) - when(clientMock.loadRange(anything(), listId, getElementId(mails[98]), EXTEND_RANGE_MIN_CHUNK_SIZE, true)).thenResolve( - mails.slice(58, 98).reverse(), - ) + when(clientMock.loadRange(anything(), listId, getElementId(mails[98]), EXTEND_RANGE_MIN_CHUNK_SIZE, true)).thenResolve(mails.slice(58, 98).reverse()) - when(clientMock.loadRange(anything(), listId, getElementId(mails[58]), EXTEND_RANGE_MIN_CHUNK_SIZE, true)).thenResolve( - mails.slice(18, 58).reverse(), - ) + when(clientMock.loadRange(anything(), listId, getElementId(mails[58]), EXTEND_RANGE_MIN_CHUNK_SIZE, true)).thenResolve(mails.slice(18, 58).reverse()) - when(clientMock.loadRange(anything(), listId, getElementId(mails[18]), EXTEND_RANGE_MIN_CHUNK_SIZE, true)).thenResolve( - mails.slice(0, 18).reverse(), - ) + when(clientMock.loadRange(anything(), listId, getElementId(mails[18]), EXTEND_RANGE_MIN_CHUNK_SIZE, true)).thenResolve(mails.slice(0, 18).reverse()) const result = await cache.loadRange(MailTypeRef, listId, GENERATED_MIN_ID, 2, false) @@ -1422,36 +1413,33 @@ export function testEntityRestCache(name: string, getStorage: (userId: Id) => Pr }, ) - o( - "When there is a reverse range request that loads in the direction of the existing range, the range will grow to include the startId", - async function () { - const clientMock = object() - const cache = new DefaultEntityRestCache(clientMock, storage) + o("When there is a reverse range request that loads in the direction of the existing range, the range will grow to include the startId", async function () { + const clientMock = object() + const cache = new DefaultEntityRestCache(clientMock, storage) - const listId = "listId1" - const mails = arrayOf(100, (idx) => createMailInstance(listId, createId(`${idx}`), `hola ${idx}`)) + const listId = "listId1" + const mails = arrayOf(100, (idx) => createMailInstance(listId, createId(`${idx}`), `hola ${idx}`)) - await storage.setNewRangeForList(MailTypeRef, listId, getElementId(mails[0]), getElementId(mails[1])) - await storage.put(mails[0]) - await storage.put(mails[1]) + await storage.setNewRangeForList(MailTypeRef, listId, getElementId(mails[0]), getElementId(mails[1])) + await storage.put(mails[0]) + await storage.put(mails[1]) - when(clientMock.loadRange(anything(), listId, getElementId(mails[1]), EXTEND_RANGE_MIN_CHUNK_SIZE, false)).thenResolve(mails.slice(2, 42)) + when(clientMock.loadRange(anything(), listId, getElementId(mails[1]), EXTEND_RANGE_MIN_CHUNK_SIZE, false)).thenResolve(mails.slice(2, 42)) - when(clientMock.loadRange(anything(), listId, getElementId(mails[41]), EXTEND_RANGE_MIN_CHUNK_SIZE, false)).thenResolve(mails.slice(42, 82)) + when(clientMock.loadRange(anything(), listId, getElementId(mails[41]), EXTEND_RANGE_MIN_CHUNK_SIZE, false)).thenResolve(mails.slice(42, 82)) - when(clientMock.loadRange(anything(), listId, getElementId(mails[81]), EXTEND_RANGE_MIN_CHUNK_SIZE, false)).thenResolve(mails.slice(82)) + when(clientMock.loadRange(anything(), listId, getElementId(mails[81]), EXTEND_RANGE_MIN_CHUNK_SIZE, false)).thenResolve(mails.slice(82)) - const result = await cache.loadRange(MailTypeRef, listId, GENERATED_MAX_ID, 2, true) + const result = await cache.loadRange(MailTypeRef, listId, GENERATED_MAX_ID, 2, true) - o(result).deepEquals([mails[mails.length - 1], mails[mails.length - 2]]) + o(result).deepEquals([mails[mails.length - 1], mails[mails.length - 2]]) - o((await storage.getRangeForList(MailTypeRef, listId))!).deepEquals({ - lower: getElementId(mails[0]), - upper: GENERATED_MAX_ID, - }) - o(await storage.getIdsInRange(MailTypeRef, listId)).deepEquals(mails.map(getElementId)) - }, - ) + o((await storage.getRangeForList(MailTypeRef, listId))!).deepEquals({ + lower: getElementId(mails[0]), + upper: GENERATED_MAX_ID, + }) + o(await storage.getIdsInRange(MailTypeRef, listId)).deepEquals(mails.map(getElementId)) + }) o( "The range request starts on one end of the existing range, and would finish on the other end, so it loads from either direction of the range", diff --git a/test/tests/api/worker/search/ContactIndexerTest.ts b/test/tests/api/worker/search/ContactIndexerTest.ts index dd0d8447ae9..8dbd107597c 100644 --- a/test/tests/api/worker/search/ContactIndexerTest.ts +++ b/test/tests/api/worker/search/ContactIndexerTest.ts @@ -221,10 +221,7 @@ o.spec("ContactIndexer test", () => { const [[{ groupId, indexTimestamp }], indexUpdate] = core.writeIndexUpdate.args o(indexTimestamp).equals(FULL_INDEXED_TIMESTAMP) o(groupId).equals(contactList._ownerGroup) - let expectedKeys = [ - encryptIndexKeyBase64(core.db.key, contacts[0]._id[1], fixedIv), - encryptIndexKeyBase64(core.db.key, contacts[1]._id[1], fixedIv), - ] + let expectedKeys = [encryptIndexKeyBase64(core.db.key, contacts[0]._id[1], fixedIv), encryptIndexKeyBase64(core.db.key, contacts[1]._id[1], fixedIv)] o(Array.from(indexUpdate.create.encInstanceIdToElementData.keys())).deepEquals(expectedKeys) o(suggestionFacadeMock.addSuggestions.callCount).equals(contacts.length) o(suggestionFacadeMock.store.callCount).equals(1) diff --git a/test/tests/calendar/CalendarModelTest.ts b/test/tests/calendar/CalendarModelTest.ts index 893ede361f2..c57c3d2badf 100644 --- a/test/tests/calendar/CalendarModelTest.ts +++ b/test/tests/calendar/CalendarModelTest.ts @@ -201,8 +201,7 @@ o.spec("CalendarModel", function () { const existingEvent = createTestEntity(CalendarEventTypeRef, { uid }) const calendarFacade = makeCalendarFacade( { - getEventsByUid: (loadUid) => - uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null), + getEventsByUid: (loadUid) => (uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null)), }, restClientMock, ) @@ -262,8 +261,7 @@ o.spec("CalendarModel", function () { const workerClient = makeWorkerClient() const calendarFacade = makeCalendarFacade( { - getEventsByUid: (loadUid) => - uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null), + getEventsByUid: (loadUid) => (uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null)), }, restClientMock, ) @@ -387,8 +385,7 @@ o.spec("CalendarModel", function () { const workerClient = makeWorkerClient() const calendarFacade = makeCalendarFacade( { - getEventsByUid: (loadUid) => - uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null), + getEventsByUid: (loadUid) => (uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null)), }, restClientMock, ) @@ -461,8 +458,7 @@ o.spec("CalendarModel", function () { const workerClient = makeWorkerClient() const calendarFacade = makeCalendarFacade( { - getEventsByUid: (loadUid) => - uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null), + getEventsByUid: (loadUid) => (uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null)), }, restClientMock, ) @@ -530,8 +526,7 @@ o.spec("CalendarModel", function () { const workerClient = makeWorkerClient() const calendarFacade = makeCalendarFacade( { - getEventsByUid: (loadUid) => - uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null), + getEventsByUid: (loadUid) => (uid === loadUid ? Promise.resolve({ progenitor: existingEvent, alteredInstances: [] }) : Promise.resolve(null)), }, restClientMock, ) @@ -623,9 +618,7 @@ o.spec("CalendarModel", function () { const eventControllerMock = makeEventController() fileControllerMock.getAsDataFile = func() - when(fileControllerMock.getAsDataFile(matchers.anything())).thenResolve( - createDataFile("event.ics", "ical", stringToUtf8Uint8Array("UID: " + uid), "cid"), - ) + when(fileControllerMock.getAsDataFile(matchers.anything())).thenResolve(createDataFile("event.ics", "ical", stringToUtf8Uint8Array("UID: " + uid), "cid")) const actuallyErase = restClientMock.erase restClientMock.erase = func() diff --git a/test/tests/calendar/CalendarParserTest.ts b/test/tests/calendar/CalendarParserTest.ts index 84b6c51c110..ecd3d0e24a7 100644 --- a/test/tests/calendar/CalendarParserTest.ts +++ b/test/tests/calendar/CalendarParserTest.ts @@ -26,12 +26,7 @@ o.spec("CalendarParser", function () { }) o("simple value, property parameter", function () { - o(propertySequenceParser(new StringIterator("DTSTART;VALUE=DATE:20190607"))).deepEquals([ - "DTSTART", - [";", [["VALUE", "=", "DATE"]]], - ":", - "20190607", - ]) + o(propertySequenceParser(new StringIterator("DTSTART;VALUE=DATE:20190607"))).deepEquals(["DTSTART", [";", [["VALUE", "=", "DATE"]]], ":", "20190607"]) }) o("simple value, multiple property parameters", function () { diff --git a/test/tests/calendar/CalendarUtilsTest.ts b/test/tests/calendar/CalendarUtilsTest.ts index d51191a810a..276ae5fe243 100644 --- a/test/tests/calendar/CalendarUtilsTest.ts +++ b/test/tests/calendar/CalendarUtilsTest.ts @@ -1328,9 +1328,7 @@ o.spec("calendar utils tests", function () { addDaysForEventInstance(eventsForDays, alteredEvent, getMonthRange(getDateInZone("2023-07-01"), zone), zone) addDaysForRecurringEvent(eventsForDays, event, getMonthRange(getDateInZone("2023-07-01"), zone), zone) - o(eventsForDays.get(getDateInZone("2023-07-13").getTime())).deepEquals([alteredEvent])( - "altered instance is on the day it occurs, but event is excluded", - ) + o(eventsForDays.get(getDateInZone("2023-07-13").getTime())).deepEquals([alteredEvent])("altered instance is on the day it occurs, but event is excluded") const eventsOn14th = eventsForDays.get(getDateInZone("2023-07-14").getTime()) ?? [] o(eventsOn14th.length).equals(1)("one event on 14th") o(eventsOn14th[0].summary).equals("summary")("occurrence of original series on 14th") diff --git a/test/tests/calendar/eventeditor/CalendarEventModelTest.ts b/test/tests/calendar/eventeditor/CalendarEventModelTest.ts index 9d1b548bfbd..091e238dc8a 100644 --- a/test/tests/calendar/eventeditor/CalendarEventModelTest.ts +++ b/test/tests/calendar/eventeditor/CalendarEventModelTest.ts @@ -213,13 +213,7 @@ o.spec("CalendarEventModelTest", function () { false, "different address, same name", ], - [ - "organizer", - fixedOrganizer, - createTestEntity(EncryptedMailAddressTypeRef, { address: "moo@d.io", name: "bla" }), - true, - "same name, different address", - ], + ["organizer", fixedOrganizer, createTestEntity(EncryptedMailAddressTypeRef, { address: "moo@d.io", name: "bla" }), true, "same name, different address"], ["attendees", [], [], false, "no attendees in either event"], [ "attendees", @@ -236,13 +230,7 @@ o.spec("CalendarEventModelTest", function () { "only address case changed", ], ["attendees", [att("b@c.d", "b", CalendarAttendeeStatus.NEEDS_ACTION)], [], true, "attendee changed"], - [ - "attendees", - [att("b@c.d", "b", CalendarAttendeeStatus.NEEDS_ACTION)], - [att("b@c.d", "b", CalendarAttendeeStatus.ACCEPTED)], - true, - "status changed", - ], + ["attendees", [att("b@c.d", "b", CalendarAttendeeStatus.NEEDS_ACTION)], [att("b@c.d", "b", CalendarAttendeeStatus.ACCEPTED)], true, "status changed"], // repeat rule is tested with areRepeatRulesEqual ] as const diff --git a/test/tests/contacts/VCardImporterTest.ts b/test/tests/contacts/VCardImporterTest.ts index 28b127fcd22..15346e7a65f 100644 --- a/test/tests/contacts/VCardImporterTest.ts +++ b/test/tests/contacts/VCardImporterTest.ts @@ -347,12 +347,7 @@ END:VCARD` }) o("base64 implicit utf-8", function () { let vcards = - "BEGIN:VCARD\n" + - "VERSION:2.1\n" + - "N:Mustermann;Max;;;\n" + - "FN:Max Mustermann\n" + - "ADR;HOME;ENCODING=BASE64:;;w4TDpMOkaGhtbQ==;;;;\n" + - "END:VCARD" + "BEGIN:VCARD\n" + "VERSION:2.1\n" + "N:Mustermann;Max;;;\n" + "FN:Max Mustermann\n" + "ADR;HOME;ENCODING=BASE64:;;w4TDpMOkaGhtbQ==;;;;\n" + "END:VCARD" let contacts = vCardListToContacts(neverNull(vCardFileToVCards(vcards)), "") o(neverNull(contacts[0].addresses[0].address)).equals("Ääähhmm") }) diff --git a/test/tests/desktop/DesktopCryptoFacadeTest.ts b/test/tests/desktop/DesktopCryptoFacadeTest.ts index 1c005c2a121..3b540c61b9f 100644 --- a/test/tests/desktop/DesktopCryptoFacadeTest.ts +++ b/test/tests/desktop/DesktopCryptoFacadeTest.ts @@ -39,9 +39,7 @@ o.spec("DesktopCryptoFacadeTest", () => { const setupSubject = () => { const cryptoFnsMock: CryptoFunctions = object() when(cryptoFnsMock.aesEncrypt(aes128Key, matchers.anything(), matchers.anything(), matchers.anything(), matchers.anything())).thenReturn(decryptedUint8) - when(cryptoFnsMock.aesEncrypt(aes256Key, aes256DecryptedKey, matchers.anything(), matchers.anything(), matchers.anything())).thenReturn( - aes256EncryptedKey, - ) + when(cryptoFnsMock.aesEncrypt(aes256Key, aes256DecryptedKey, matchers.anything(), matchers.anything(), matchers.anything())).thenReturn(aes256EncryptedKey) when(cryptoFnsMock.aesDecrypt(aes128Key, matchers.anything(), matchers.anything())).thenReturn(decryptedUint8) when(cryptoFnsMock.aesDecrypt(aes256Key, aes256EncryptedKey, matchers.anything())).thenReturn(aes256DecryptedKey) diff --git a/test/tests/desktop/PathUtilsTest.ts b/test/tests/desktop/PathUtilsTest.ts index a238ad8b029..93da98dff50 100644 --- a/test/tests/desktop/PathUtilsTest.ts +++ b/test/tests/desktop/PathUtilsTest.ts @@ -49,9 +49,7 @@ o.spec("PathUtils", function () { o(nonClobberingFilename(["hello-1.ext"], "hello-1.ext")).equals("hello-1-1.ext") }) o("intermediate value", function () { - o(nonClobberingFilename(["hello.ext", "hello-3.ext", "hello-1.ext", "hello-undefined.ext", "hello-Infinity.ext"], "hello.ext")).equals( - "hello-2.ext", - ) + o(nonClobberingFilename(["hello.ext", "hello-3.ext", "hello-1.ext", "hello-undefined.ext", "hello-Infinity.ext"], "hello.ext")).equals("hello-2.ext") o(nonClobberingFilename(["hello-0.ext", "hello.ext", "hello-3.ext", "hello-1.ext"], "hello.ext")).equals("hello-2.ext") o(nonClobberingFilename(["hello--2.ext", "hello-0.ext", "hello-3.ext", "hello-1.ext"], "hello.ext")).equals("hello.ext") }) diff --git a/test/tests/desktop/credentials/DesktopCredentialsFacadeTest.ts b/test/tests/desktop/credentials/DesktopCredentialsFacadeTest.ts index 7629b1bd58d..c9ff2f2f1cb 100644 --- a/test/tests/desktop/credentials/DesktopCredentialsFacadeTest.ts +++ b/test/tests/desktop/credentials/DesktopCredentialsFacadeTest.ts @@ -106,9 +106,7 @@ o.spec("DesktopNativeCredentialsFacade", () => { const pwPromise = defer() when(mocks.commonNativeFacade.promptForPassword(matchers.anything())).thenReturn(pwPromise.promise) - await assertThrows(KeyPermanentlyInvalidatedError, () => - subject.decryptUsingKeychain(Uint8Array.from([1, 2, 3, 4]), CredentialEncryptionMode.APP_PASSWORD), - ) + await assertThrows(KeyPermanentlyInvalidatedError, () => subject.decryptUsingKeychain(Uint8Array.from([1, 2, 3, 4]), CredentialEncryptionMode.APP_PASSWORD)) }) o("does not throw when using right encryption mode, device lock", async function () { diff --git a/test/tests/login/LoginViewModelTest.ts b/test/tests/login/LoginViewModelTest.ts index 84e6fd1199f..25137ec545d 100644 --- a/test/tests/login/LoginViewModelTest.ts +++ b/test/tests/login/LoginViewModelTest.ts @@ -457,9 +457,7 @@ o.spec("LoginViewModelTest", () => { }) o("should handle KeyPermanentlyInvalidatedError and clear credentials", async function () { await credentialsProviderMock.store({ credentials: testCredentials, databaseKey: null }) - when(credentialsProviderMock.store({ credentials: testCredentials, databaseKey: anything() })).thenReject( - new KeyPermanentlyInvalidatedError("oops"), - ) + when(credentialsProviderMock.store({ credentials: testCredentials, databaseKey: anything() })).thenReject(new KeyPermanentlyInvalidatedError("oops")) when(loginControllerMock.createSession(anything(), anything(), anything())).thenResolve({ credentials: testCredentials }) const viewModel = await getViewModel() diff --git a/test/tests/mail/SendMailModelTest.ts b/test/tests/mail/SendMailModelTest.ts index 184dfce2ede..0d7f66b1765 100644 --- a/test/tests/mail/SendMailModelTest.ts +++ b/test/tests/mail/SendMailModelTest.ts @@ -326,10 +326,7 @@ o.spec("SendMailModel", function () { replyTos: [], conversationEntry: testIdGenerator.newIdTuple(), }) - const mailWrapper = MailWrapper.details( - draftMail, - createTestEntity(MailDetailsTypeRef, { body: createTestEntity(BodyTypeRef, { text: BODY_TEXT_1 }) }), - ) + const mailWrapper = MailWrapper.details(draftMail, createTestEntity(MailDetailsTypeRef, { body: createTestEntity(BodyTypeRef, { text: BODY_TEXT_1 }) })) when(entity.load(ConversationEntryTypeRef, draftMail.conversationEntry)).thenResolve( createTestEntity(ConversationEntryTypeRef, { conversationType: ConversationType.FORWARD }), diff --git a/test/tests/mail/export/BundlerTest.ts b/test/tests/mail/export/BundlerTest.ts index 2d060b9584a..c3b97b62c03 100644 --- a/test/tests/mail/export/BundlerTest.ts +++ b/test/tests/mail/export/BundlerTest.ts @@ -98,9 +98,7 @@ o.spec("Bundler", function () { ).thenReturn({ html: sanitizedBodyText }) const attachmentsCaptor = matchers.captor() - when(cryptoMock.enforceSessionKeyUpdateIfNeeded(mail, attachmentsCaptor.capture())).thenDo((mail: Mail, attachments: File) => - Promise.resolve(attachments), - ) + when(cryptoMock.enforceSessionKeyUpdateIfNeeded(mail, attachmentsCaptor.capture())).thenDo((mail: Mail, attachments: File) => Promise.resolve(attachments)) const bundle = await makeMailBundle(mail, mailFacadeMock, entityClientMock, fileControllerMock, sanitizerMock, cryptoMock) verify(cryptoMock.enforceSessionKeyUpdateIfNeeded(mail, attachments.map((a) => `file ${a.name}`) as any)) diff --git a/test/tests/mail/view/ConversationViewModelTest.ts b/test/tests/mail/view/ConversationViewModelTest.ts index 612d1f1d574..0ea93ffb84d 100644 --- a/test/tests/mail/view/ConversationViewModelTest.ts +++ b/test/tests/mail/view/ConversationViewModelTest.ts @@ -143,9 +143,7 @@ o.spec("ConversationViewModel", function () { await loadingDefer.promise const numMailsDisplayed = viewModel.conversationItems().filter((i) => i.type === "mail").length - o(numMailsDisplayed).equals(conversation.length)( - `Wrong number of mails in conversationItems, got ${numMailsDisplayed} should be ${conversation.length}`, - ) + o(numMailsDisplayed).equals(conversation.length)(`Wrong number of mails in conversationItems, got ${numMailsDisplayed} should be ${conversation.length}`) }) o("when the option is off it only shows selected mail", async function () { @@ -168,9 +166,7 @@ o.spec("ConversationViewModel", function () { await loadingDefer.promise const numMailsDisplayed = viewModel.conversationItems().filter((i) => i.type === "mail").length - o(numMailsDisplayed).equals(conversation.length)( - `Wrong number of mails in conversationItems, got ${numMailsDisplayed} should be ${conversation.length}`, - ) + o(numMailsDisplayed).equals(conversation.length)(`Wrong number of mails in conversationItems, got ${numMailsDisplayed} should be ${conversation.length}`) }) o("when draft is in trash folder, it should not be included in the conversation", async function () { diff --git a/test/tests/mail/view/MailViewerViewModelTest.ts b/test/tests/mail/view/MailViewerViewModelTest.ts index d751f07696e..7791b7f189f 100644 --- a/test/tests/mail/view/MailViewerViewModelTest.ts +++ b/test/tests/mail/view/MailViewerViewModelTest.ts @@ -131,10 +131,7 @@ o.spec("MailViewerViewModel", function () { await testHeaderUnsubscribe(headers, [headers]) }) o("with POST", async function () { - const headers = [ - "List-Unsubscribe: , ", - "List-Unsubscribe-Post: List-Unsubscribe=One-Click", - ] + const headers = ["List-Unsubscribe: , ", "List-Unsubscribe-Post: List-Unsubscribe=One-Click"] await testHeaderUnsubscribe(headers.join("\r\n"), headers) }) o("with whitespace", async function () { diff --git a/test/tests/misc/HtmlSanitizerTest.ts b/test/tests/misc/HtmlSanitizerTest.ts index 4368f7cbf2d..097b4d68b82 100644 --- a/test/tests/misc/HtmlSanitizerTest.ts +++ b/test/tests/misc/HtmlSanitizerTest.ts @@ -377,9 +377,7 @@ o.spec( ), ).equals(false) o( - cleanHtml.html.includes( - 'draft-srcset="https://tutanota.com/image1.jpg 1x, https://tutanota.com/image2.jpg 2x, https://tutanota.com/image3.jpg 3x', - ), + cleanHtml.html.includes('draft-srcset="https://tutanota.com/image1.jpg 1x, https://tutanota.com/image2.jpg 2x, https://tutanota.com/image3.jpg 3x'), ).equals(true) o(cleanHtml.html.includes('src="data:image/svg+xml;utf8,')).equals(true) }) @@ -401,12 +399,9 @@ o.spec( o(result.html.includes('draft-src="https://tutanota.com')).equals(true) }) o("detect video posters", function () { - let result = htmlSanitizer.sanitizeHTML( - '', - { - blockExternalContent: true, - }, - ) + let result = htmlSanitizer.sanitizeHTML('', { + blockExternalContent: true, + }) o(result.blockedExternalContent).equals(1) o(result.html.includes('poster="data:image/svg+xml;utf8,')).equals(true) }) diff --git a/test/tests/misc/ListModelTest.ts b/test/tests/misc/ListModelTest.ts index 99fcc6e0694..0363e15501e 100644 --- a/test/tests/misc/ListModelTest.ts +++ b/test/tests/misc/ListModelTest.ts @@ -670,16 +670,13 @@ o.spec("ListModel", function () { o(listModel.state.activeIndex).equals(2) }) - o( - "when not in multiselect it will not select both previous single selection and the newly selected item if in one column layout", - async function () { - await setItems(items) - listModel.onSingleSelection(itemA) - listModel.onSingleInclusiveSelection(itemC, true) - o(getSortedSelection()).deepEquals([itemC]) - o(listModel.state.inMultiselect).equals(true) - }, - ) + o("when not in multiselect it will not select both previous single selection and the newly selected item if in one column layout", async function () { + await setItems(items) + listModel.onSingleSelection(itemA) + listModel.onSingleInclusiveSelection(itemC, true) + o(getSortedSelection()).deepEquals([itemC]) + o(listModel.state.inMultiselect).equals(true) + }) o("when in multiselect it will add newly selected item to the selection", async function () { await setItems(items) diff --git a/test/tests/misc/PasswordUtilsTest.ts b/test/tests/misc/PasswordUtilsTest.ts index a02c267f4bd..d4fe8a49a8d 100644 --- a/test/tests/misc/PasswordUtilsTest.ts +++ b/test/tests/misc/PasswordUtilsTest.ts @@ -10,9 +10,7 @@ import { o.spec("PasswordUtilsTest", function () { function checkStrength(pw, min, max) { // console.log(pw, min, max, getPasswordStrength(pw)); - o(min <= getPasswordStrength(pw, [])).equals(true)( - "Passphrase " + pw + " strength: " + getPasswordStrength(pw, []) + " is smaller than expected " + min, - ) + o(min <= getPasswordStrength(pw, [])).equals(true)("Passphrase " + pw + " strength: " + getPasswordStrength(pw, []) + " is smaller than expected " + min) o(getPasswordStrength(pw, []) <= max).equals(true)("Passphrase " + pw + " strength: " + getPasswordStrength(pw, []) + " is bigger than expected " + max) } diff --git a/test/tests/misc/RecipientsModelTest.ts b/test/tests/misc/RecipientsModelTest.ts index 477498b1ae4..b59a4a6028e 100644 --- a/test/tests/misc/RecipientsModelTest.ts +++ b/test/tests/misc/RecipientsModelTest.ts @@ -88,10 +88,7 @@ o.spec("RecipientsModel", function () { o("prioritises name that was passed in", async function () { const recipient = await model - .resolve( - { address: tutanotaAddress, name: "Pizza Tonno", contact: makeContactStub(contactId, tutanotaAddress, "Pizza", "Hawaii") }, - ResolveMode.Eager, - ) + .resolve({ address: tutanotaAddress, name: "Pizza Tonno", contact: makeContactStub(contactId, tutanotaAddress, "Pizza", "Hawaii") }, ResolveMode.Eager) .resolved() o(recipient.name).equals("Pizza Tonno") }) diff --git a/test/tests/misc/webauthn/WebauthnClientTest.ts b/test/tests/misc/webauthn/WebauthnClientTest.ts index 75bf717d437..17cb61479d0 100644 --- a/test/tests/misc/webauthn/WebauthnClientTest.ts +++ b/test/tests/misc/webauthn/WebauthnClientTest.ts @@ -99,10 +99,7 @@ o.spec("WebauthnClient", function () { ...domainConfigStub, legacyWebauthnUrl: tutanotaWebauthnUrl, }) - const result = await testSelectedKey( - ["https://tutanota.com/u2f-appid.json", "https://legacy.another.domain/u2f-appid.json"], - tutanotaWebauthnUrl, - ) + const result = await testSelectedKey(["https://tutanota.com/u2f-appid.json", "https://legacy.another.domain/u2f-appid.json"], tutanotaWebauthnUrl) o(result.apiBaseUrl).equals(tutanotaApiBaseUrl) }) diff --git a/test/tests/nodemocker.ts b/test/tests/nodemocker.ts index 31a39e8e1ac..b07bd0edbbc 100644 --- a/test/tests/nodemocker.ts +++ b/test/tests/nodemocker.ts @@ -144,10 +144,13 @@ function deepAssign(obj: T, adder: B): T & B { if (typeof adder !== "object" || typeof obj !== "object" || adder == null || obj == null) { ret = adder } else { - ret = Object.keys(adder).reduce((newObj, key) => { - ;(newObj as any)[key] = deepAssign((newObj as any)[key], (adder as any)[key]) - return newObj - }, Object.assign({}, obj)) + ret = Object.keys(adder).reduce( + (newObj, key) => { + ;(newObj as any)[key] = deepAssign((newObj as any)[key], (adder as any)[key]) + return newObj + }, + Object.assign({}, obj), + ) } return downcast(ret) } diff --git a/test/tests/translations/TranslationKeysTest.ts b/test/tests/translations/TranslationKeysTest.ts index 5c3e329b9c5..2d490c5fbc2 100644 --- a/test/tests/translations/TranslationKeysTest.ts +++ b/test/tests/translations/TranslationKeysTest.ts @@ -1,5 +1,5 @@ import o from "@tutao/otest" -import {difference} from "@tutao/tutanota-utils" +import { difference } from "@tutao/tutanota-utils" // @ts-ignore[untyped-import] import en from "../../../src/translations/en.js" // @ts-ignore[untyped-import] @@ -7,17 +7,17 @@ import de from "../../../src/translations/de.js" // @ts-ignore[untyped-import] import de_sie from "../../../src/translations/de_sie.js" o.spec("synchronisation of translation keys", function () { - o("en, de and de_sie have exactly the same keys", async function () { - const enKeys = Object.keys(en.keys) - const deKeys = Object.keys(de.keys) - const deSieKeys = Object.keys(de_sie.keys) - const extraKeysInEn = difference(enKeys, deKeys) - const extraKeysInDe = difference(deKeys, enKeys) - const extraKeysInDeSie = difference(deSieKeys, deKeys) - const keysNotInDeSie = difference(deKeys, deSieKeys) - o(extraKeysInEn).deepEquals([])("extra keys in en") - o(extraKeysInDe).deepEquals([])("extra keys in de") - o(extraKeysInDeSie).deepEquals([])("extra keys in de_sie") - o(keysNotInDeSie).deepEquals([])("keys not in de_sie") - }) -}) \ No newline at end of file + o("en, de and de_sie have exactly the same keys", async function () { + const enKeys = Object.keys(en.keys) + const deKeys = Object.keys(de.keys) + const deSieKeys = Object.keys(de_sie.keys) + const extraKeysInEn = difference(enKeys, deKeys) + const extraKeysInDe = difference(deKeys, enKeys) + const extraKeysInDeSie = difference(deSieKeys, deKeys) + const keysNotInDeSie = difference(deKeys, deSieKeys) + o(extraKeysInEn).deepEquals([])("extra keys in en") + o(extraKeysInDe).deepEquals([])("extra keys in de") + o(extraKeysInDeSie).deepEquals([])("extra keys in de_sie") + o(keysNotInDeSie).deepEquals([])("keys not in de_sie") + }) +}) diff --git a/test/tsconfig.json b/test/tsconfig.json index d1588d4c411..a26f6bec3d2 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig_common.json", + "extends": "../tsconfig_common.json5", "compilerOptions": { "declaration": false, "noEmit": true, diff --git a/tsconfig.json b/tsconfig.json index b049d276e7b..bc4dfa02950 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig_common.json", + "extends": "./tsconfig_common.json5", "compilerOptions": { "removeComments": false, "declaration": false, diff --git a/tsconfig_common.json b/tsconfig_common.json5 similarity index 100% rename from tsconfig_common.json rename to tsconfig_common.json5