From 4afbec0268130277a768c64ba011543169eed705 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 19 Jan 2024 12:58:09 -0500 Subject: [PATCH 01/16] Switch to ESM https://www.electronjs.org/docs/latest/tutorial/esm --- .eslintrc.js | 48 - .eslintrc.json | 23 + bin/dev-runner.js | 29 +- package-lock.json | 3048 ++++++++++++------- package.json | 18 +- src/lib/package.js | 28 +- src/lib/prefs.js | 63 +- src/lib/saver-factory.js | 8 +- src/lib/saver-list.js | 72 +- src/lib/saver.js | 10 +- src/main/assets/{grabber.js => grabber.mjs} | 0 src/main/assets/{preload.js => preload.mjs} | 0 src/main/assets/shim.js | 2 +- src/main/autostarter.js | 10 +- src/main/bootstrap.js | 87 +- src/main/dock.js | 9 +- src/main/index.js | 150 +- src/main/menus.js | 27 +- src/main/power.js | 8 +- src/main/release_check.js | 6 +- src/main/screen.js | 7 +- src/main/state_manager.js | 2 +- src/main/windows.js | 19 +- test/helpers.js | 126 +- test/lib/package.js | 72 +- test/lib/prefs.js | 80 +- test/lib/saver-factory.js | 20 +- test/lib/saver-list.js | 43 +- test/lib/saver.js | 10 +- test/main/power.js | 36 +- test/main/release_check.js | 23 +- test/main/state_manager.js | 22 +- test/ui/about.js | 10 +- test/ui/bootstrap.js | 21 +- test/ui/editor.js | 10 +- test/ui/new.js | 16 +- test/ui/prefs.js | 6 +- test/ui/settings.js | 8 +- test/ui/tray.js | 4 +- webpack.config.js | 7 +- webpack.main.config.js | 34 +- webpack.renderer.config.js | 28 +- 42 files changed, 2550 insertions(+), 1700 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 .eslintrc.json rename src/main/assets/{grabber.js => grabber.mjs} (100%) rename src/main/assets/{preload.js => preload.mjs} (100%) diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 10d29482..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,48 +0,0 @@ -module.exports = { - root: true, - parser: "@babel/eslint-parser", - parserOptions: { - ecmaVersion: 2022, - ecmaFeatures: { - "spread": true - }, - sourceType: "module" - }, - env: { - browser: true, - node: true, - mocha: true, - es6: true - }, - extends: [ - "eslint:recommended", - "plugin:svelte/recommended" - ], - globals: { - }, - plugins: [ - ], - overrides: [ - { - files: ["*.svelte"], - parser: "svelte-eslint-parser" - } - ], - "rules": { - "global-require": 0, - "import/no-unresolved": 0, - "no-param-reassign": 0, - "no-shadow": 0, - "import/extensions": 0, - "import/newline-after-import": 0, - "no-multi-assign": 0, - "semi": 1, - "strict": 0, - "eqeqeq": "off", - "curly": "warn", - "quotes": ["warn", "double"], - - // allow debugger during development - "no-debugger": process.env.NODE_ENV === "production" ? 2 : 0 - } -}; diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..0b142d8c --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,23 @@ +{ + "env": { + "browser": true, + "es2021": true, + "node": true, + "mocha": true, + "es6": true + }, + "extends": [ + "eslint:recommended", + "plugin:svelte/recommended", + "plugin:mocha/recommended" + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "rules": { + }, + "plugins": [ + "mocha" + ] +} diff --git a/bin/dev-runner.js b/bin/dev-runner.js index c5711c42..95da63ba 100644 --- a/bin/dev-runner.js +++ b/bin/dev-runner.js @@ -1,18 +1,28 @@ "use strict"; -const electron = require("electron"); -const path = require("path"); -const { spawn } = require("child_process"); -const webpack = require("webpack"); -const WebpackDevServer = require("webpack-dev-server"); +import electron from "electron"; +import * as path from "path"; +import { spawn } from "child_process"; +import webpack from "webpack"; +import WebpackDevServer from "webpack-dev-server"; -const mainConfig = require("../webpack.main.config"); -const rendererConfig = require("../webpack.renderer.config"); +import { readFile } from 'fs/promises'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); let devPort; +import mainConfig from "../webpack.main.config.js"; +import rendererConfig from "../webpack.renderer.config.js"; + try { - let packageJSON = require("../package.json"); + const packageJSON = JSON.parse( + await readFile( + new URL('../package.json', import.meta.url) + ) + ); + devPort = packageJSON.devport; } catch(e) { @@ -98,7 +108,8 @@ function startRenderer () { } function startElectron () { - electronProcess = spawn(electron, ["--inspect=5858", path.join(__dirname, "../src/main/index.dev.js")]); + // @todo set environment here + electronProcess = spawn(electron, ["--inspect=5858", path.join(__dirname, "../src/main/index.js")]); electronProcess.stdout.on("data", data => { process.stdout.write(data.toString()); diff --git a/package-lock.json b/package-lock.json index 93701bf2..53693430 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "before-dawn", - "version": "0.27.0", + "version": "0.28.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "before-dawn", - "version": "0.27.0", + "version": "0.28.0", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@sentry/electron": "^4.0.2", + "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", "detect-fullscreen": "^0.0.8", "electron-is-dev": "^2.0.0", - "electron-log": "^5.0.3", + "electron-log": "^5.1.0-beta.1", "forcefocus": "github:muffinista/forcefocus", "fs-extra": "^11.1.0", "glob": "^9.3.5", @@ -46,10 +46,13 @@ "dotenv": "^16.0.0", "electron": "^28.1.1", "electron-builder": "^24.9.1", - "eslint": "^8.44.0", - "eslint-config-standard": "^17.0.0", + "eslint": "^8.56.0", "eslint-friendly-formatter": "^4.0.1", "eslint-plugin-html": "^7.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-mocha": "^10.2.0", + "eslint-plugin-n": "^16.6.2", + "eslint-plugin-promise": "^6.1.1", "eslint-plugin-svelte": "^2.32.2", "eslint-webpack-plugin": "^4.0.1", "html-webpack-plugin": "^5.0.0", @@ -74,7 +77,7 @@ "svelte-loader": "^3.1.8", "tmp": "^0.2.1", "url-loader": "^4.1.0", - "webpack": "^5.82.1", + "webpack": "^5.90.0", "webpack-cli": "^5.1.1", "webpack-dev-server": "^4.15.0", "webpack-hot-middleware": "^2.25.3", @@ -2449,18 +2452,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "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, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2497,9 +2500,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2530,9 +2533,9 @@ } }, "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==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2545,13 +2548,13 @@ "dev": true }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -2572,9 +2575,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -3371,9 +3374,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "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, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -3387,13 +3390,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "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, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3808,24 +3811,47 @@ "node": ">=14" } }, - "node_modules/@sentry/browser": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.13.0.tgz", - "integrity": "sha512-WbgClHPYe8TKsdVVbuzd6alxwh3maFQNuljMkSTnYvPx2P+NT0wHljTs37D39FGfSmAwaqn7D/1ZHAtC+6mWxA==", + "node_modules/@sentry-internal/feedback": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.92.0.tgz", + "integrity": "sha512-/jEALRtVqboxB9kcK2tag8QCO6XANTlGBb9RV3oeGXJe0DDNJXRq6wVZbfgztXJRrfgx4XVDcNt1pRVoGGG++g==", + "dependencies": { + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", + "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", "dependencies": { - "@sentry/core": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "tslib": "^1.9.3" + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@sentry/browser": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.92.0.tgz", + "integrity": "sha512-loMr02/zQ38u8aQhYLtIBg0i5n3ps2e3GUXrt3CdsJQdkRYfa62gcrE7SzvoEpMVHTk7VOI4fWGht8cWw/1k3A==", + "dependencies": { + "@sentry-internal/feedback": "7.92.0", + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/replay": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/@sentry/cli": { "version": "2.1.0", @@ -3849,105 +3875,79 @@ } }, "node_modules/@sentry/core": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.13.0.tgz", - "integrity": "sha512-hB46fklmKrSDMEvZOF8qBHhys7PONBFyxQtbNDZUlv/kabs4gF3VEg1ftCaXnjx4lLNlsUl/ScFdM6194RvISg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", + "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", "dependencies": { - "@sentry/hub": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "tslib": "^1.9.3" + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@sentry/electron": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-4.0.3.tgz", - "integrity": "sha512-b1/dkbKRHwgQ1jKj6q/Z9b6N4LN3Jrs68JKAH/+3Ig8SwZk16oMIJtyuVvBeD4spsQHXeJ1ABsuQ8+NZzrwEdA==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-4.17.0.tgz", + "integrity": "sha512-1ThTHtn80E6h6mtt+V7tH03YW/vxwNfWrT8CxWSEUmtPQ/CPDpGZ8NN86lUwOPHjlSGBIYF4N33WVsGNhl+iAg==", "dependencies": { - "@sentry/browser": "7.13.0", - "@sentry/core": "7.13.0", - "@sentry/hub": "7.13.0", - "@sentry/node": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "deepmerge": "4.2.2", - "tslib": "^2.3.1" + "@sentry/browser": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/node": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0", + "deepmerge": "4.3.0", + "tslib": "^2.5.0" } }, - "node_modules/@sentry/hub": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.13.0.tgz", - "integrity": "sha512-88/GsD1BoyrBwRKJCmVHZtSH5rizOsImUHWEXc1AOa1aR8nanfn56JdAbd6tC55pA+nT4R4H4vN/PrUaomTbtg==", + "node_modules/@sentry/node": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.92.0.tgz", + "integrity": "sha512-LZeQL1r6kikEoOzA9K61OmMl32/lK/6PzmFNDH6z7UYwQopCZgVA6IP+CZuln8K2ys5c9hCyF7ICQMysXfpNJA==", "dependencies": { - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "tslib": "^1.9.3" + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0", + "https-proxy-agent": "^5.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@sentry/node": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.13.0.tgz", - "integrity": "sha512-uP3bPAIRHPilnOEiYGQQDLaQphc/c7d87wm91bZrTJ+WPnMW4D/NmT7fna5zGGDQIr/KTdQ/LEpDeZOILbkCqQ==", - "dependencies": { - "@sentry/core": "7.13.0", - "@sentry/hub": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" + "node_modules/@sentry/replay": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.92.0.tgz", + "integrity": "sha512-G1t9Uvc9cR8VpNkElwvHIMGzykjIKikb10n0tfVd3e+rBPMCCjCPWOduwG6jZYxcvCjTpqmJh6NSLXxL/Mt4JA==", + "dependencies": { + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@sentry/node/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@sentry/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.13.0.tgz", - "integrity": "sha512-ttckM1XaeyHRLMdr79wmGA5PFbTGx2jio9DCD/mkEpSfk6OGfqfC7gpwy7BNstDH/VKyQj/lDCJPnwvWqARMoQ==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.13.0.tgz", - "integrity": "sha512-jnR85LgRLSk7IQe2OhKOPMY4fasJCNQNW0iCXsH+S2R1qnsF+N4ksNkQ+7JyyM9E7F03YpI2qd76bKY0VIn5iA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "dependencies": { - "@sentry/types": "7.13.0", - "tslib": "^1.9.3" + "@sentry/types": "7.92.0" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@sentry/webpack-plugin": { "version": "1.18.9", "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.18.9.tgz", @@ -4254,9 +4254,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "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 }, "node_modules/@types/express": { @@ -4355,9 +4355,8 @@ "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true, - "peer": true + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "node_modules/@types/keyv": { "version": "4.2.0", @@ -4500,6 +4499,12 @@ "@types/node": "*" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -4751,6 +4756,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -5052,6 +5066,19 @@ "dequal": "^2.0.3" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -5059,16 +5086,15 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -5087,16 +5113,74 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "peer": true, "dependencies": { + "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5189,6 +5273,18 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -5511,26 +5607,35 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer": { @@ -5704,22 +5809,32 @@ "node": ">=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, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/builtins": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz", - "integrity": "sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "peer": true, "dependencies": { "semver": "^7.0.0" } }, "node_modules/builtins/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -5924,13 +6039,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5965,9 +6081,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001554", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz", - "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==", + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", "dev": true, "funding": [ { @@ -6233,12 +6349,6 @@ "color-support": "bin.js" } }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -6457,14 +6567,6 @@ "safe-buffer": "~5.1.1" } }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "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", @@ -6759,9 +6861,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "engines": { "node": ">=0.10.0" } @@ -6811,6 +6913,20 @@ "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -6821,15 +6937,20 @@ } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/del": { @@ -7403,9 +7524,9 @@ } }, "node_modules/electron-log": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.0.3.tgz", - "integrity": "sha512-jUgAuRjfpCD9tmH1F6fb195YsFfM/DkqkZLhFeo0VAAstantn11bxmgx63uE6KG/JljHG7sIkgM2QEjDimJI0g==", + "version": "5.1.0-beta.2", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.1.0-beta.2.tgz", + "integrity": "sha512-vM7WPA/m1PRSTgNLZ0vUkiLvuFbQ29noym7/HpCw2lQb0qfeQX4nwoFJLaqSdWydE6rrf+ExrCBRC5q2H8eJcw==", "engines": { "node": ">= 14" } @@ -7510,9 +7631,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.836", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.836.tgz", - "integrity": "sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==", + "version": "1.4.644", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.644.tgz", + "integrity": "sha512-zOnPndwz3u1sVFSyBcRWcn0529Kz+jr+tDxN9iP69I3CpC5wlvYmjLrK2O7TEsg2oDDoUqooeXqbiHLvXvl6Lg==", "dev": true }, "node_modules/emoji-regex": { @@ -7558,9 +7679,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz", - "integrity": "sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -7606,32 +7727,50 @@ "dev": true }, "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, - "peer": true, "dependencies": { - "call-bind": "^1.0.2", + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -7646,12 +7785,34 @@ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "peer": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -7695,27 +7856,28 @@ } }, "node_modules/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -7725,7 +7887,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -7737,7 +7898,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -7750,30 +7910,16 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "engines": { + "node": ">=12" + }, "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", - "eslint-plugin-promise": "^6.0.0" + "eslint": ">=6.0.0" } }, "node_modules/eslint-friendly-formatter": { @@ -7815,14 +7961,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "peer": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -7830,23 +7976,25 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "peer": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "peer": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-module-utils/node_modules/debug": { @@ -7854,55 +8002,28 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "peer": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "node_modules/eslint-plugin-es-x": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", + "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", "dev": true, - "peer": true, "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" }, "engines": { - "node": ">=8.10.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" + "eslint": ">=8" } }, "node_modules/eslint-plugin-html": { @@ -7989,25 +8110,28 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, - "peer": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -8017,13 +8141,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "peer": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -8031,7 +8154,6 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -8039,46 +8161,107 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/eslint-plugin-import/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, - "peer": true + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/eslint-plugin-n": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.0.tgz", - "integrity": "sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg==", + "node_modules/eslint-plugin-mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", + "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", "dev": true, - "peer": true, "dependencies": { - "builtins": "^4.0.0", - "eslint-plugin-es": "^4.1.0", "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.3.0", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.3.0" + "rambda": "^7.4.0" }, "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">=14.0.0" }, "peerDependencies": { "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", - "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", - "dev": true, - "peer": true, - "engines": { + "node_modules/eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-n/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, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-n/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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { @@ -8152,7 +8335,6 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "peer": true, "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -8316,9 +8498,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "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, "dependencies": { "esrecurse": "^4.3.0", @@ -8332,9 +8514,9 @@ } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "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, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -8486,9 +8668,9 @@ } }, "node_modules/espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { "acorn": "^8.9.0", @@ -9037,19 +9219,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -9133,6 +9302,15 @@ } } }, + "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, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forcefocus": { "version": "1.1.0", "resolved": "git+ssh://git@github.com/muffinista/forcefocus.git#c79c62e84dd0d663929cef493fa340177aa9c1a9", @@ -9261,10 +9439,40 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gauge": { "version": "4.0.4", @@ -9304,14 +9512,15 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9346,7 +9555,6 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -9358,6 +9566,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -9491,7 +9711,6 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "optional": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -9502,6 +9721,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -9551,24 +9782,11 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9582,10 +9800,34 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -9599,7 +9841,6 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "peer": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -9632,6 +9873,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -9964,9 +10217,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -10061,14 +10314,13 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, - "peer": true, "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -10099,12 +10351,25 @@ "node": ">= 10" } }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "peer": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -10117,7 +10382,6 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -10129,12 +10393,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "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, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -10155,12 +10433,12 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10171,7 +10449,6 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10252,7 +10529,6 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "peer": true, "engines": { "node": ">= 0.4" }, @@ -10270,11 +10546,10 @@ } }, "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10361,7 +10636,6 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -10374,11 +10648,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "peer": true, + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10400,7 +10676,6 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10416,7 +10691,6 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "peer": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -10427,6 +10701,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -10450,7 +10739,6 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -11163,20 +11451,6 @@ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", "dev": true }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -11311,11 +11585,6 @@ "node": ">=8" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12443,9 +12712,9 @@ } }, "node_modules/node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/nopt": { @@ -12814,9 +13083,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12832,14 +13101,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -12849,16 +13118,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -13066,32 +13363,6 @@ "node": ">=8" } }, - "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, - "peer": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", @@ -13123,16 +13394,6 @@ "node": ">= 4" } }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", @@ -14029,6 +14290,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", + "dev": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -14211,17 +14478,21 @@ "@babel/runtime": "^7.8.4" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpu-core": { @@ -14353,13 +14624,17 @@ "dev": true }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14401,6 +14676,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -14579,12 +14863,53 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "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==", "dev": true }, + "node_modules/safe-regex-test": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", + "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -14985,6 +15310,36 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -15473,29 +15828,46 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15611,6 +15983,18 @@ "node": ">=4" } }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/svelte": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.0.3.tgz", @@ -15896,16 +16280,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz", - "integrity": "sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -15967,9 +16351,9 @@ "dev": true }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -15985,22 +16369,22 @@ } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.17.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.4.tgz", - "integrity": "sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -16203,15 +16587,14 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "peer": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", + "json5": "^1.0.2", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, @@ -16220,7 +16603,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "peer": true, "dependencies": { "minimist": "^1.2.0" }, @@ -16231,17 +16613,16 @@ "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "peer": true, "engines": { "node": ">=4" } }, "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-check": { "version": "0.4.0", @@ -16261,29 +16642,94 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">=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, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" }, - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typedarray-to-buffer": { @@ -16309,15 +16755,14 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -16419,6 +16864,36 @@ "node": ">=4" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -16632,21 +17107,21 @@ "dev": true }, "node_modules/webpack": { - "version": "5.82.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.1.tgz", - "integrity": "sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==", + "version": "5.90.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz", + "integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.0", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -16656,9 +17131,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -16985,15 +17460,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz", - "integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/webpack/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -17026,9 +17492,9 @@ "dev": true }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -17101,7 +17567,6 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "peer": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -17119,6 +17584,25 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -19199,15 +19683,15 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "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 }, "@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -19234,9 +19718,9 @@ } }, "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -19257,9 +19741,9 @@ } }, "@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true }, "@gar/promisify": { @@ -19269,13 +19753,13 @@ "dev": true }, "@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, @@ -19286,9 +19770,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true }, "@isaacs/cliui": { @@ -19884,9 +20368,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "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, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -19900,13 +20384,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "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, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@leichtgewicht/ip-codec": { @@ -20217,22 +20701,37 @@ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true }, + "@sentry-internal/feedback": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.92.0.tgz", + "integrity": "sha512-/jEALRtVqboxB9kcK2tag8QCO6XANTlGBb9RV3oeGXJe0DDNJXRq6wVZbfgztXJRrfgx4XVDcNt1pRVoGGG++g==", + "requires": { + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" + } + }, + "@sentry-internal/tracing": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz", + "integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==", + "requires": { + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" + } + }, "@sentry/browser": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.13.0.tgz", - "integrity": "sha512-WbgClHPYe8TKsdVVbuzd6alxwh3maFQNuljMkSTnYvPx2P+NT0wHljTs37D39FGfSmAwaqn7D/1ZHAtC+6mWxA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.92.0.tgz", + "integrity": "sha512-loMr02/zQ38u8aQhYLtIBg0i5n3ps2e3GUXrt3CdsJQdkRYfa62gcrE7SzvoEpMVHTk7VOI4fWGht8cWw/1k3A==", "requires": { - "@sentry/core": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@sentry-internal/feedback": "7.92.0", + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/replay": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" } }, "@sentry/cli": { @@ -20250,96 +20749,62 @@ } }, "@sentry/core": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.13.0.tgz", - "integrity": "sha512-hB46fklmKrSDMEvZOF8qBHhys7PONBFyxQtbNDZUlv/kabs4gF3VEg1ftCaXnjx4lLNlsUl/ScFdM6194RvISg==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz", + "integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==", "requires": { - "@sentry/hub": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" } }, "@sentry/electron": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-4.0.3.tgz", - "integrity": "sha512-b1/dkbKRHwgQ1jKj6q/Z9b6N4LN3Jrs68JKAH/+3Ig8SwZk16oMIJtyuVvBeD4spsQHXeJ1ABsuQ8+NZzrwEdA==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-4.17.0.tgz", + "integrity": "sha512-1ThTHtn80E6h6mtt+V7tH03YW/vxwNfWrT8CxWSEUmtPQ/CPDpGZ8NN86lUwOPHjlSGBIYF4N33WVsGNhl+iAg==", "requires": { - "@sentry/browser": "7.13.0", - "@sentry/core": "7.13.0", - "@sentry/hub": "7.13.0", - "@sentry/node": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "deepmerge": "4.2.2", - "tslib": "^2.3.1" + "@sentry/browser": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/node": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0", + "deepmerge": "4.3.0", + "tslib": "^2.5.0" } }, - "@sentry/hub": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.13.0.tgz", - "integrity": "sha512-88/GsD1BoyrBwRKJCmVHZtSH5rizOsImUHWEXc1AOa1aR8nanfn56JdAbd6tC55pA+nT4R4H4vN/PrUaomTbtg==", + "@sentry/node": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.92.0.tgz", + "integrity": "sha512-LZeQL1r6kikEoOzA9K61OmMl32/lK/6PzmFNDH6z7UYwQopCZgVA6IP+CZuln8K2ys5c9hCyF7ICQMysXfpNJA==", "requires": { - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0", + "https-proxy-agent": "^5.0.0" } }, - "@sentry/node": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.13.0.tgz", - "integrity": "sha512-uP3bPAIRHPilnOEiYGQQDLaQphc/c7d87wm91bZrTJ+WPnMW4D/NmT7fna5zGGDQIr/KTdQ/LEpDeZOILbkCqQ==", - "requires": { - "@sentry/core": "7.13.0", - "@sentry/hub": "7.13.0", - "@sentry/types": "7.13.0", - "@sentry/utils": "7.13.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@sentry/replay": { + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.92.0.tgz", + "integrity": "sha512-G1t9Uvc9cR8VpNkElwvHIMGzykjIKikb10n0tfVd3e+rBPMCCjCPWOduwG6jZYxcvCjTpqmJh6NSLXxL/Mt4JA==", + "requires": { + "@sentry-internal/tracing": "7.92.0", + "@sentry/core": "7.92.0", + "@sentry/types": "7.92.0", + "@sentry/utils": "7.92.0" } }, "@sentry/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.13.0.tgz", - "integrity": "sha512-ttckM1XaeyHRLMdr79wmGA5PFbTGx2jio9DCD/mkEpSfk6OGfqfC7gpwy7BNstDH/VKyQj/lDCJPnwvWqARMoQ==" + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz", + "integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==" }, "@sentry/utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.13.0.tgz", - "integrity": "sha512-jnR85LgRLSk7IQe2OhKOPMY4fasJCNQNW0iCXsH+S2R1qnsF+N4ksNkQ+7JyyM9E7F03YpI2qd76bKY0VIn5iA==", + "version": "7.92.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz", + "integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==", "requires": { - "@sentry/types": "7.13.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } + "@sentry/types": "7.92.0" } }, "@sentry/webpack-plugin": { @@ -20615,9 +21080,9 @@ } }, "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "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 }, "@types/express": { @@ -20716,9 +21181,8 @@ "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", - "dev": true, - "peer": true + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "@types/keyv": { "version": "4.2.0", @@ -20860,6 +21324,12 @@ "@types/node": "*" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", @@ -21073,6 +21543,13 @@ "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", "dev": true }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -21313,6 +21790,16 @@ "dequal": "^2.0.3" } }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -21320,16 +21807,15 @@ "dev": true }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" } }, @@ -21339,16 +21825,56 @@ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, + "array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, "array.prototype.flat": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", - "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "peer": true, "requires": { + "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" } }, "assert-plus": { @@ -21416,6 +21942,12 @@ } } }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, "axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -21690,16 +22222,15 @@ "dev": true }, "browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" } }, "buffer": { @@ -21825,22 +22356,26 @@ "sax": "^1.2.4" } }, + "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 + }, "builtins": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz", - "integrity": "sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "peer": true, "requires": { "semver": "^7.0.0" }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "peer": true, "requires": { "lru-cache": "^6.0.0" } @@ -21986,13 +22521,14 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "callsites": { @@ -22018,9 +22554,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001554", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz", - "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==", + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", "dev": true }, "chalk": { @@ -22210,12 +22746,6 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -22386,11 +22916,6 @@ "safe-buffer": "~5.1.1" } }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -22593,9 +23118,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==" }, "default-gateway": { "version": "6.0.3", @@ -22630,6 +23155,17 @@ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -22637,12 +23173,14 @@ "dev": true }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "del": { @@ -23084,9 +23622,9 @@ "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==" }, "electron-log": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.0.3.tgz", - "integrity": "sha512-jUgAuRjfpCD9tmH1F6fb195YsFfM/DkqkZLhFeo0VAAstantn11bxmgx63uE6KG/JljHG7sIkgM2QEjDimJI0g==" + "version": "5.1.0-beta.2", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.1.0-beta.2.tgz", + "integrity": "sha512-vM7WPA/m1PRSTgNLZ0vUkiLvuFbQ29noym7/HpCw2lQb0qfeQX4nwoFJLaqSdWydE6rrf+ExrCBRC5q2H8eJcw==" }, "electron-publish": { "version": "24.8.1", @@ -23166,9 +23704,9 @@ } }, "electron-to-chromium": { - "version": "1.3.836", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.836.tgz", - "integrity": "sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==", + "version": "1.4.644", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.644.tgz", + "integrity": "sha512-zOnPndwz3u1sVFSyBcRWcn0529Kz+jr+tDxN9iP69I3CpC5wlvYmjLrK2O7TEsg2oDDoUqooeXqbiHLvXvl6Lg==", "dev": true }, "emoji-regex": { @@ -23208,9 +23746,9 @@ } }, "enhanced-resolve": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz", - "integrity": "sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -23241,32 +23779,50 @@ "dev": true }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, - "peer": true, "requires": { - "call-bind": "^1.0.2", + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" } }, "es-module-lexer": { @@ -23275,12 +23831,31 @@ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, + "es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "peer": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -23312,27 +23887,28 @@ "dev": true }, "eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -23342,7 +23918,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -23354,7 +23929,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { @@ -23411,9 +23985,9 @@ "dev": true }, "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "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, "requires": { "esrecurse": "^4.3.0", @@ -23421,9 +23995,9 @@ } }, "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "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 }, "estraverse": { @@ -23519,10 +24093,10 @@ } } }, - "eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", "dev": true, "requires": {} }, @@ -23558,14 +24132,14 @@ } }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "peer": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { @@ -23573,7 +24147,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "peer": true, "requires": { "ms": "^2.1.1" } @@ -23581,14 +24154,12 @@ } }, "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "peer": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { @@ -23596,41 +24167,21 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "peer": true, "requires": { "ms": "^2.1.1" } } } }, - "eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "eslint-plugin-es-x": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", + "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", "dev": true, - "peer": true, "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "peer": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true - } + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" } }, "eslint-plugin-html": { @@ -23694,79 +24245,116 @@ } }, "eslint-plugin-import": { - "version": "2.25.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz", - "integrity": "sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, - "peer": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "eslint-plugin-mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", + "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "rambda": "^7.4.0" + } + }, + "eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "peer": true, "requires": { - "ms": "2.0.0" + "type-fest": "^0.20.2" } }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "peer": true, "requires": { - "esutils": "^2.0.2" + "lru-cache": "^6.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "peer": true + "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 } } }, - "eslint-plugin-n": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.0.tgz", - "integrity": "sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg==", - "dev": true, - "peer": true, - "requires": { - "builtins": "^4.0.0", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.3.0", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.3.0" - } - }, "eslint-plugin-promise": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz", - "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", "dev": true, - "peer": true, "requires": {} }, "eslint-plugin-svelte": { @@ -23814,7 +24402,6 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "peer": true, "requires": { "eslint-visitor-keys": "^2.0.0" } @@ -23868,9 +24455,9 @@ } }, "espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { "acorn": "^8.9.0", @@ -24304,16 +24891,6 @@ "pkg-dir": "^4.1.0" } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^2.0.0" - } - }, "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -24367,6 +24944,15 @@ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true }, + "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, + "requires": { + "is-callable": "^1.1.3" + } + }, "forcefocus": { "version": "git+ssh://git@github.com/muffinista/forcefocus.git#c79c62e84dd0d663929cef493fa340177aa9c1a9", "from": "forcefocus@github:muffinista/forcefocus", @@ -24451,9 +25037,27 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, "gauge": { @@ -24485,14 +25089,15 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-type": { @@ -24515,12 +25120,20 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" } }, + "get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, "gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -24628,11 +25241,19 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "optional": true, "requires": { "define-properties": "^1.1.3" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -24673,21 +25294,11 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "peer": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, "has-flag": { "version": "3.0.0", @@ -24695,10 +25306,25 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "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==", + "dev": true + }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true }, "has-tostringtag": { @@ -24706,7 +25332,6 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, - "peer": true, "requires": { "has-symbols": "^1.0.2" } @@ -24727,6 +25352,15 @@ "type-fest": "^0.8.0" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -24966,9 +25600,9 @@ "dev": true }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, "image-q": { @@ -25041,14 +25675,13 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, - "peer": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -25070,12 +25703,22 @@ "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "peer": true, "requires": { "has-bigints": "^1.0.1" } @@ -25085,18 +25728,25 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "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, - "peer": true + "requires": { + "builtin-modules": "^3.3.0" + } + }, + "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 }, "is-ci": { "version": "3.0.1", @@ -25108,12 +25758,12 @@ } }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-date-object": { @@ -25121,7 +25771,6 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "peer": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -25174,8 +25823,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "peer": true + "dev": true }, "is-number": { "version": "7.0.0", @@ -25184,11 +25832,10 @@ "dev": true }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "peer": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -25248,18 +25895,19 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "peer": true + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "2.0.1", @@ -25272,7 +25920,6 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "peer": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -25282,11 +25929,19 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "peer": true, "requires": { "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -25304,7 +25959,6 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2" } @@ -25858,17 +26512,6 @@ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", "dev": true }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -25975,11 +26618,6 @@ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -26806,9 +27444,9 @@ } }, "node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "nopt": { @@ -27086,9 +27724,9 @@ "dev": true }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, "object-keys": { @@ -27098,27 +27736,49 @@ "dev": true }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, + "object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "obuf": { @@ -27270,26 +27930,6 @@ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true }, - "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, - "peer": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^1.1.0" - } - }, "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", @@ -27314,13 +27954,6 @@ } } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "peer": true - }, "package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", @@ -27947,6 +28580,12 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, + "rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -28098,12 +28737,16 @@ "@babel/runtime": "^7.8.4" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "peer": true + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + } }, "regexpu-core": { "version": "4.7.1", @@ -28211,13 +28854,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-alpn": { @@ -28249,6 +28893,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -28360,12 +29010,43 @@ "queue-microtask": "^1.2.2" } }, + "safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "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==", "dev": true }, + "safe-regex-test": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", + "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -28673,6 +29354,30 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-function-length": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -29058,26 +29763,37 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "strip-ansi": { @@ -29149,6 +29865,12 @@ "has-flag": "^3.0.0" } }, + "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==", + "dev": true + }, "svelte": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.0.3.tgz", @@ -29378,16 +30100,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz", - "integrity": "sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "dependencies": { "ajv": { @@ -29422,9 +30144,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -29433,22 +30155,22 @@ } }, "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" } }, "terser": { - "version": "5.17.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.4.tgz", - "integrity": "sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" } @@ -29596,15 +30318,14 @@ } }, "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "peer": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", + "json5": "^1.0.2", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { @@ -29613,7 +30334,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "peer": true, "requires": { "minimist": "^1.2.0" } @@ -29621,16 +30341,15 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "peer": true + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true } } }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "type-check": { "version": "0.4.0", @@ -29663,6 +30382,53 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -29679,15 +30445,14 @@ "dev": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "peer": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -29759,6 +30524,16 @@ "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==" }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -29928,21 +30703,21 @@ "dev": true }, "webpack": { - "version": "5.82.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.82.1.tgz", - "integrity": "sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==", + "version": "5.90.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.0.tgz", + "integrity": "sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.0", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -29952,20 +30727,13 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, "dependencies": { - "acorn-import-assertions": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz", - "integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==", - "dev": true, - "requires": {} - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -29992,9 +30760,9 @@ "dev": true }, "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -30261,7 +31029,6 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "peer": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -30276,6 +31043,19 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", diff --git a/package.json b/package.json index f9d3001c..60986dd1 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "homepage": "https://github.com/muffinista/before-dawn/", "release_server": "https://before-dawn-updates.muffinlabs.com", "main": "output/main.js", + "type": "module", "engines": { "node": ">= 18.18.2" }, @@ -16,8 +17,8 @@ "dev": "node bin/dev-runner.js", "dev-no-reload": "cross-env DISABLE_RELOAD=1 node bin/dev-runner.js", "compile": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", - "eslint-all": "eslint -c .eslintrc.js src/**/*.js src/**/*.svelte test/**/*.js webpack*.js", - "eslint": "eslint -c .eslintrc.js", + "eslint-all": "eslint -c .eslintrc.json src/**/*.js src/**/*.svelte test/**/*.js webpack*.js", + "eslint": "eslint -c .eslintrc.json", "postinstall": "electron-builder install-app-deps", "pack": "npm run compile && electron-builder --dir", "dist": "npm run compile && electron-builder --x64", @@ -34,12 +35,12 @@ "url": "git://github.com/muffinista/before-dawn.git" }, "dependencies": { - "@sentry/electron": "^4.0.2", + "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", "detect-fullscreen": "^0.0.8", "electron-is-dev": "^2.0.0", - "electron-log": "^5.0.3", + "electron-log": "^5.1.0-beta.1", "forcefocus": "github:muffinista/forcefocus", "fs-extra": "^11.1.0", "glob": "^9.3.5", @@ -70,10 +71,13 @@ "dotenv": "^16.0.0", "electron": "^28.1.1", "electron-builder": "^24.9.1", - "eslint": "^8.44.0", - "eslint-config-standard": "^17.0.0", + "eslint": "^8.56.0", "eslint-friendly-formatter": "^4.0.1", "eslint-plugin-html": "^7.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-mocha": "^10.2.0", + "eslint-plugin-n": "^16.6.2", + "eslint-plugin-promise": "^6.1.1", "eslint-plugin-svelte": "^2.32.2", "eslint-webpack-plugin": "^4.0.1", "html-webpack-plugin": "^5.0.0", @@ -98,7 +102,7 @@ "svelte-loader": "^3.1.8", "tmp": "^0.2.1", "url-loader": "^4.1.0", - "webpack": "^5.82.1", + "webpack": "^5.90.0", "webpack-cli": "^5.1.1", "webpack-dev-server": "^4.15.0", "webpack-hot-middleware": "^2.25.3", diff --git a/src/lib/package.js b/src/lib/package.js index 9a85d7ca..92d6fda5 100644 --- a/src/lib/package.js +++ b/src/lib/package.js @@ -1,16 +1,16 @@ "use strict"; -const fs = require("fs"); -const path = require("path"); -const yauzl = require("yauzl"); -const { mkdirp } = require("mkdirp"); -const { rimraf } = require("rimraf"); -const lockfile = require("proper-lockfile"); -const { Readable } = require("stream"); -const { finished } = require("stream/promises"); +import fs from 'fs-extra'; +import path from "path"; +import temp from "temp"; +import os from "os"; +import { mkdirp } from "mkdirp"; +import { rimrafSync } from "rimraf"; +import * as yauzl from "yauzl" +import * as lockfile from "proper-lockfile"; +import Readable from "stream"; +import finished from "stream/promises"; -const temp = require("temp"); -const os = require("os"); /** @@ -20,7 +20,7 @@ const os = require("os"); * if it's after stored value, download it! */ -module.exports = class Package { +export default class Package { constructor(_attrs) { this.repo = _attrs.repo; this.dest = _attrs.dest; @@ -45,7 +45,7 @@ module.exports = class Package { "User-Agent": "Before Dawn" }; - this.fetch = _attrs.fetch || global.fetch || require("node-fetch"); + this.fetch = _attrs.fetch || global.fetch; } attrs() { @@ -152,7 +152,7 @@ module.exports = class Package { // clean out existing files // try { - rimraf.sync(self.dest); + rimrafSync(self.dest); } catch (err) { self.logger(err); @@ -218,4 +218,4 @@ module.exports = class Package { }); }); } -}; +} diff --git a/src/lib/prefs.js b/src/lib/prefs.js index f043dd18..812a4e81 100644 --- a/src/lib/prefs.js +++ b/src/lib/prefs.js @@ -1,9 +1,62 @@ "use strict"; -const path = require("path"); -const Conf = require("conf"); - -const DEFAULTS = require("./prefs-schema.json"); +import * as path from "path"; +import Conf from "conf"; + +const DEFAULTS = { + "saver": { + "type": "string", + "default": "" + }, + "sourceRepo": { + "type": "string", + "default": "muffinista/before-dawn-screensavers" + }, + "delay": { + "type": "number", + "default": 5 + }, + "sleep": { + "type": "number", + "default": 10 + }, + "lock": { + "type": "boolean", + "default": false + }, + "disableOnBattery": { + "type": "boolean", + "default": true + }, + "auto_start": { + "type": "boolean", + "default": false + }, + "runOnSingleDisplay": { + "type": "boolean", + "default": true + }, + "localSource": { + "type": "string", + "default": "" + }, + "options": { + "default": {} + }, + "sourceUpdatedAt": { + "default": "1970-01-01T00:00:00.000Z" + }, + "updateCheckTimestamp": { + "default": "1970-01-01T00:00:00.000Z" + }, + "launchShortcut": { + "type": "string", + "default": "" + }, + "firstLoad": { + "type": "boolean" + } +}; class SaverPrefs { constructor(baseConfigDir, rootDir=undefined, saversDir=undefined) { @@ -157,4 +210,4 @@ Object.keys(DEFAULTS).forEach(function(name) { }); }); -module.exports = SaverPrefs; +export default SaverPrefs; diff --git a/src/lib/saver-factory.js b/src/lib/saver-factory.js index 291e2d69..c62a3d77 100644 --- a/src/lib/saver-factory.js +++ b/src/lib/saver-factory.js @@ -1,9 +1,9 @@ "use strict"; -const fs = require("fs-extra"); -const path = require("path"); +import * as path from "path"; +import fs from 'fs-extra' -module.exports = class SaverFactory { +export default class SaverFactory { constructor(prefs, logger) { this.prefs = prefs; if ( logger !== undefined ) { @@ -58,4 +58,4 @@ module.exports = class SaverFactory { return opts; } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/lib/saver-list.js b/src/lib/saver-list.js index 61fb1b97..18b3c727 100644 --- a/src/lib/saver-list.js +++ b/src/lib/saver-list.js @@ -1,10 +1,10 @@ "use strict"; -const fs = require("fs-extra"); -const path = require("path"); -const { mkdirp } = require("mkdirp"); -const { rimraf } = require("rimraf"); -const { glob } = require("glob"); +import fs from 'fs-extra'; +import path from "path"; +import { mkdirp } from "mkdirp"; +import { rimraf } from "rimraf"; +import glob from "glob"; const CONFIG_FILE_NAME = "config.json"; @@ -19,7 +19,7 @@ var skipFolder = function(p) { }; -module.exports = class SaverListManager { +export default class SaverListManager { constructor(opts, logger) { this.prefs = opts.prefs; this.loadedScreensavers = []; @@ -45,39 +45,33 @@ module.exports = class SaverListManager { return this.prefs.saversDir; } - setup() { + async setup() { let _self = this; - return new Promise(function (resolve, reject) { - var configPath = path.join(_self.baseDir, CONFIG_FILE_NAME); - var saversDir = _self.defaultSaversDir; - var results = { - first: false, - setup: false - }; - - _self.logger("saversDir: " + saversDir, fs.existsSync(saversDir)); - _self.logger("configPath: " + configPath); - - // check for/create our main directory - // and our savers directory (which is a subdir - // of the main dir) - mkdirp(saversDir).then((made) => { - - // check if we just created the folder, - // if there's no config yet, - // or if the savers folder was empty - if ( made === true || ! fs.existsSync(configPath) || fs.readdirSync(saversDir).length === 0 ) { - results.first = true; - } - - results.setup = true; - - resolve(results); - }, (err) => { - _self.logger("err!", err); - return reject(err); - }); - }); + var configPath = path.join(_self.baseDir, CONFIG_FILE_NAME); + var saversDir = _self.defaultSaversDir; + var results = { + first: false, + setup: false + }; + + _self.logger("saversDir: " + saversDir, fs.existsSync(saversDir)); + _self.logger("configPath: " + configPath); + + // check for/create our main directory + // and our savers directory (which is a subdir + // of the main dir) + const made = await mkdirp(saversDir); + + // check if we just created the folder, + // if there's no config yet, + // or if the savers folder was empty + if ( made === true || ! fs.existsSync(configPath) || fs.readdirSync(saversDir).length === 0 ) { + results.first = true; + } + + results.setup = true; + + return results; } /** @@ -300,4 +294,4 @@ module.exports = class SaverListManager { return false; } } -}; +} diff --git a/src/lib/saver.js b/src/lib/saver.js index 1e11099a..5167c060 100644 --- a/src/lib/saver.js +++ b/src/lib/saver.js @@ -9,10 +9,10 @@ // specified const DEFAULT_REQUIREMENTS = ["screen"]; -const _path = require("path"); -const fs = require("fs"); +import fs from 'fs-extra'; +import * as nodePath from "path"; -module.exports = class Saver { +export default class Saver { constructor(_attrs) { this.UNWRITABLE_KEYS = ["key", "path", "url", "settings", "editable"]; @@ -139,9 +139,9 @@ module.exports = class Saver { attrs = this.attrs; } if ( typeof(configDest) === "undefined" ) { - configDest = _path.join(this.path, "saver.json"); + configDest = nodePath.join(this.path, "saver.json"); } fs.writeFileSync(configDest, this.toJSON(attrs)); } -}; +} diff --git a/src/main/assets/grabber.js b/src/main/assets/grabber.mjs similarity index 100% rename from src/main/assets/grabber.js rename to src/main/assets/grabber.mjs diff --git a/src/main/assets/preload.js b/src/main/assets/preload.mjs similarity index 100% rename from src/main/assets/preload.js rename to src/main/assets/preload.mjs diff --git a/src/main/assets/shim.js b/src/main/assets/shim.js index 27905177..fff452cf 100644 --- a/src/main/assets/shim.js +++ b/src/main/assets/shim.js @@ -1,4 +1,4 @@ -const { contextBridge, ipcRenderer } = require("electron"); +import { contextBridge, ipcRenderer } from "electron"; const shimApi = { send: (cmd, opts, args={}) => ipcRenderer.send(cmd, opts, args), diff --git a/src/main/autostarter.js b/src/main/autostarter.js index 5334a00c..74b0783c 100644 --- a/src/main/autostarter.js +++ b/src/main/autostarter.js @@ -1,9 +1,9 @@ "use strict"; -const main = require("./index.js"); +import * as main from "./index.js"; +import AutoLaunch from "auto-launch"; -var toggle = function(appName, value) { - var AutoLaunch = require("auto-launch"); +export function toggle(appName, value) { var appLauncher = new AutoLaunch({ name: appName }); @@ -39,6 +39,4 @@ var toggle = function(appName, value) { }); }); } -}; - -exports.toggle = toggle; +} diff --git a/src/main/bootstrap.js b/src/main/bootstrap.js index 361a4132..b398fa1d 100644 --- a/src/main/bootstrap.js +++ b/src/main/bootstrap.js @@ -1,49 +1,56 @@ +import { readFile } from 'fs/promises'; +import { init } from '@sentry/electron'; -global.IS_DEV = require("electron-is-dev"); +export default async function bootstrapApp() { + const packageJSON = JSON.parse( + await readFile( + new URL('../../package.json', import.meta.url) + ) + ); + + global.IS_DEV = true; // require("electron-is-dev"); -var version = undefined; -let packageJSON = {}; + var version = undefined; -try { - packageJSON = require("../../package.json"); - version = packageJSON.version; + try { + version = packageJSON.version; - if ( ! process.env.BEFORE_DAWN_RELEASE_NAME ) { - process.env.BEFORE_DAWN_RELEASE_NAME = `${packageJSON.productName} ${packageJSON.version}`; + if ( ! process.env.BEFORE_DAWN_RELEASE_NAME ) { + process.env.BEFORE_DAWN_RELEASE_NAME = `${packageJSON.productName} ${packageJSON.version}`; + } + } + catch(e) { + version = "0.0.0"; } -} -catch(e) { - version = "0.0.0"; -} - -global.APP_NAME = "Before Dawn"; -global.APP_DIR = "Before Dawn"; -global.SAVER_REPO = "muffinista/before-dawn-screensavers"; -global.APP_REPO = "muffinista/before-dawn"; -global.APP_VERSION_BASE = version; -global.APP_VERSION = `v${version}`; -global.NEW_RELEASE_AVAILABLE = false; -global.HELP_URL = "https://muffinista.github.io/before-dawn/"; -global.ISSUES_URL = "https://github.com/muffinista/before-dawn/issues"; -global.APP_CREDITS = "by Colin Mitchell // muffinlabs.com"; -if ( packageJSON.release_server && ! global.IS_DEV ) { - global.RELEASE_SERVER = packageJSON.release_server; - global.RELEASE_CHECK_URL = `${global.RELEASE_SERVER}/update/${process.platform}/${global.APP_VERSION_BASE}`; - global.PACKAGE_DOWNLOAD_URL = `https://github.com/${global.APP_REPO}/releases/latest`; -} + global.APP_NAME = "Before Dawn"; + global.APP_DIR = "Before Dawn"; + global.SAVER_REPO = "muffinista/before-dawn-screensavers"; + global.APP_REPO = "muffinista/before-dawn"; + global.APP_VERSION_BASE = version; + global.APP_VERSION = `v${version}`; + global.NEW_RELEASE_AVAILABLE = false; + global.HELP_URL = "https://muffinista.github.io/before-dawn/"; + global.ISSUES_URL = "https://github.com/muffinista/before-dawn/issues"; + global.APP_CREDITS = "by Colin Mitchell // muffinlabs.com"; -if ( process.env.TEST_MODE === undefined && !global.IS_DEV && process.env.SENTRY_DSN !== undefined ) { - console.log(`setting up sentry with ${process.env.SENTRY_DSN}`); - try { - const { init } = require("@sentry/electron"); - init({ - dsn: process.env.SENTRY_DSN, - // eslint-disable-next-line no-console - onFatalError: console.log - }); + if ( packageJSON.release_server && ! global.IS_DEV ) { + global.RELEASE_SERVER = packageJSON.release_server; + global.RELEASE_CHECK_URL = `${global.RELEASE_SERVER}/update/${process.platform}/${global.APP_VERSION_BASE}`; + global.PACKAGE_DOWNLOAD_URL = `https://github.com/${global.APP_REPO}/releases/latest`; } - catch(e) { - console.log(e); + + if ( process.env.TEST_MODE === undefined && !global.IS_DEV && process.env.SENTRY_DSN !== undefined ) { + console.log(`setting up sentry with ${process.env.SENTRY_DSN}`); + try { + init({ + dsn: process.env.SENTRY_DSN, + // eslint-disable-next-line no-console + onFatalError: console.log + }); + } + catch(e) { + console.log(e); + } } -} +} \ No newline at end of file diff --git a/src/main/dock.js b/src/main/dock.js index 10c252fe..60aea004 100644 --- a/src/main/dock.js +++ b/src/main/dock.js @@ -1,12 +1,12 @@ "use strict"; -const {app, BrowserWindow} = require("electron"); +import {app, BrowserWindow} from "electron"; /** * if we're using the dock, and all our windows are closed, hide the * dock icon */ -var hideDockIfInactive = function() { +export const hideDockIfInactive = function() { let openWindowCount = BrowserWindow.getAllWindows(). filter(win => (win !== undefined && win.noTray !== true) ).length; @@ -18,11 +18,8 @@ var hideDockIfInactive = function() { /** * show the dock if it's available */ -var showDock = function() { +export const showDock = function() { if ( typeof(app.dock) !== "undefined" ) { app.dock.show(); } }; - -exports.hideDockIfInactive = hideDockIfInactive; -exports.showDock = showDock; diff --git a/src/main/index.js b/src/main/index.js index a5ca0ba3..8dd0cae6 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1,7 +1,7 @@ "use strict"; -process.traceDeprecation = true; -process.traceProcessWarnings = true; +// process.traceDeprecation = true; +// process.traceProcessWarnings = true; /*** @@ -18,10 +18,8 @@ process.traceProcessWarnings = true; */ -const electron = require("electron"); -const log = require("electron-log"); -const {app, +import {app, BrowserWindow, desktopCapturer, dialog, @@ -33,32 +31,56 @@ const {app, shell, systemPreferences, Tray, - powerMonitor} = require("electron"); + powerMonitor} from "electron"; -const fs = require("fs"); -const os = require("os"); -const temp = require("temp"); -const path = require("path"); -const url = require("url"); -const exec = require("child_process").execFile; +import log from 'electron-log'; -const screenLock = require("./screen.js"); +import { screen as electronScreen } from "electron"; -const StateManager = require("./state_manager.js"); -const SaverPrefs = require("../lib/prefs.js"); -const SaverFactory = require("../lib/saver-factory.js"); -const Saver = require("../lib/saver.js"); -const SaverListManager = require("../lib/saver-list.js"); -const Package = require("../lib/package.js"); -const Power = require("../main/power.js"); +import * as fs from "fs"; +import { readFile } from 'fs/promises'; +import * as os from "os"; +import * as path from "path"; +import * as temp from "temp"; +import * as url from "url"; +import { execFile as exec } from "child_process"; -var releaseChecker; +import * as screenLock from "./screen.js"; + +import StateManager from "./state_manager.js"; +import SaverPrefs from "../lib/prefs.js"; +import SaverFactory from "../lib/saver-factory.js"; +import Saver from "../lib/saver.js"; +import SaverListManager from "../lib/saver-list.js"; +import Package from "../lib/package.js"; +import Power from "../main/power.js"; + +import * as menusAndTrays from "./menus.js"; +import * as dock from "./dock.js"; +import * as windows from "./windows.js"; + +import * as forcefocus from "forcefocus"; +import ReleaseCheck from "./release_check.js"; +import * as autostarter from "./autostarter.js"; + +/** + * try and guess if we are in fullscreen mode or not + */ +import FullScreen from "detect-fullscreen"; +const { isFullscreen } = FullScreen; + +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const packageJSON = JSON.parse( + await readFile( + new URL('../../package.json', import.meta.url) + ) +); -const menusAndTrays = require("./menus.js"); -const dock = require("./dock.js"); -const windows = require("./windows.js"); +var releaseChecker; -const forcefocus = require("forcefocus"); // NOTE -- this needs to be global, otherwise the app icon gets // garbage collected and won't show up in the system tray @@ -85,7 +107,8 @@ if ( testMode || process.platform === "win32" ) { }; } else { - cursor = require("hide-cursor"); + cursor = await import("hide-cursor"); + cursor = cursor.default; } let exitOnQuit = false; @@ -136,8 +159,6 @@ let handles = { let trayMenu; -let electronScreen; - let prefs = undefined; let savers = undefined; let stateManager = undefined; @@ -151,7 +172,8 @@ let checkPowerState = true; const RELEASE_CHECK_INTERVAL = 1000 * 60 * 60 * 12; // load a few global variables -require("./bootstrap.js"); +import bootstrapApp from "./bootstrap.js"; +await bootstrapApp(); const defaultWebPreferences = { enableRemoteModule: false, @@ -201,25 +223,23 @@ var openGrabberWindow = function() { var grabberWindow = new BrowserWindow({ show: false, skipTaskbar: true, - // width: 500, - // height: 500, width: 100, height: 100, x: 6000, y: 2000, webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "grabber.js") + preload: path.join(__dirname, "assets", "grabber.mjs") } }); - grabberWindow.noTray = true; + // grabberWindow.noTray = true; grabberWindow.once("ready-to-show", () => { - log.info("grabber open"); resolve(grabberWindow); }); grabberWindow.loadURL(grabberUrl); + }); }; @@ -235,7 +255,6 @@ var grabScreen = function(s) { if ( ! screen ) { screen = screenData[0]; } - // log.info(screen); return new Promise((resolve) => { // @@ -252,7 +271,6 @@ var grabScreen = function(s) { else { let windowRef; ipcMain.once(`screenshot-${screen.id}`, function(_e, message) { - // log.info("got screenshot!", message); const tempName = temp.path({dir: os.tmpdir(), suffix:".png"}); fs.writeFileSync(tempName, message.buffer); @@ -281,10 +299,7 @@ var grabScreen = function(s) { openGrabberWindow().then((w) => { windowRef = w; - log.info("send screengrab request"); - windowRef.webContents.send("request-screenshot", { - // id: s.id, id: screen.id, width: s.bounds.width, height: s.bounds.height}); @@ -312,8 +327,6 @@ var openTestShim = function() { const shimUrl = `file://${__dirname}/assets/shim.html`; testWindow.loadURL(shimUrl); - - //handles.shim.window = testWindow; }; @@ -351,7 +364,7 @@ var openPrefsWindow = function() { resizable: true, webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "preload.js") + preload: path.join(__dirname, "assets", "preload.mjs") }, icon: path.join(__dirname, "assets", "iconTemplate.png") }); @@ -399,7 +412,7 @@ var openSettingsWindow = function() { icon: path.join(__dirname, "assets", "iconTemplate.png"), webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "preload.js"), + preload: path.join(__dirname, "assets", "preload.mjs"), } }); @@ -442,7 +455,7 @@ var addNewSaver = async function(opts) { resizable:true, webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "preload.js"), + preload: path.join(__dirname, "assets", "preload.mjs"), }, icon: path.join(__dirname, "assets", "iconTemplate.png") }); @@ -473,7 +486,7 @@ var openAboutWindow = function() { icon: path.join(__dirname, "assets", "iconTemplate.png"), webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "preload.js"), + preload: path.join(__dirname, "assets", "preload.mjs"), } }); @@ -517,7 +530,7 @@ var openEditor = (args) => { show: false, webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "preload.js"), + preload: path.join(__dirname, "assets", "preload.mjs"), }, }); } @@ -932,12 +945,11 @@ var getSystemDir = function() { */ var getUrl = function(dest) { let baseUrl; - if ( !testMode && process.env.NODE_ENV === "development" ) { + if ( !testMode && (global.IS_DEV || process.env.NODE_ENV === "development") ) { if ( ! process.env.DISABLE_RELOAD ) { let devPort; try { - let packageJSON = require("../../package.json"); devPort = packageJSON.devport; } catch(e) { @@ -1050,8 +1062,6 @@ var setupReleaseCheck = function() { return; } - const ReleaseCheck = require("./release_check.js"); - releaseChecker = new ReleaseCheck({fetch: net.fetch}); releaseChecker.setFeed(global.RELEASE_CHECK_URL); @@ -1087,8 +1097,6 @@ var askAboutApplicationsFolder = function() { } if ( !app.isInApplicationsFolder() ) { - const {dialog} = require("electron"); - const chosen = dialog.showMessageBoxSync({ type: "question", buttons: ["Move to Applications", "Do Not Move"], @@ -1330,7 +1338,6 @@ let setupIPC = function() { * load the requested URL in a browser */ ipcMain.on("launch-url", (_event, url) => { - const { shell } = require("electron"); shell.openExternal(url); }); @@ -1352,7 +1359,6 @@ let setupIPC = function() { return; } - const autostarter = require("./autostarter.js"); autostarter.toggle(global.APP_NAME, value); }); @@ -1551,8 +1557,6 @@ var bootApp = async function() { callback({responseHeaders: Object.fromEntries(Object.entries(details.responseHeaders).filter(header => !/x-frame-options/i.test(header[0])))}); }); - electronScreen = electron.screen; - askAboutApplicationsFolder(); await askAboutMediaAccess(); @@ -1684,17 +1688,13 @@ var quitApp = () => { app.quit(); }; -/** - * try and guess if we are in fullscreen mode or not - */ -var inFullscreen = require("detect-fullscreen").isFullscreen; /** * run the screensaver, but only if there isn't an app in fullscreen mode right now */ var runScreenSaverIfNotFullscreen = function() { log.info("runScreenSaverIfNotFullscreen"); - if ( ! inFullscreen() ) { + if ( ! isFullscreen() ) { log.info("I don't think we're in fullscreen mode"); runScreenSaver(); } @@ -1941,16 +1941,18 @@ if ( testMode === true ) { }; } -exports.log = log; -exports.setStateToRunning = setStateToRunning; -exports.setStateToPaused = setStateToPaused; -exports.resetState = resetState; -exports.getStateManager = getStateManager; -exports.getAppIcon = getAppIcon; -exports.getTrayMenu = getTrayMenu; -exports.openPrefsWindow = openPrefsWindow; -exports.openAboutWindow = openAboutWindow; -exports.addNewSaver = addNewSaver; -exports.openEditor = openEditor; -exports.toggleSaversUpdated = toggleSaversUpdated; -exports.quitApp = quitApp; +export { + log, + setStateToRunning, + setStateToPaused, + resetState, + getStateManager, + getAppIcon, + getTrayMenu, + openPrefsWindow, + openAboutWindow, + addNewSaver, + openEditor, + toggleSaversUpdated, + quitApp, +}; \ No newline at end of file diff --git a/src/main/menus.js b/src/main/menus.js index d8b45cda..066c1323 100644 --- a/src/main/menus.js +++ b/src/main/menus.js @@ -1,10 +1,13 @@ "use strict"; -const main = require("./index.js"); -const path = require("path"); +import * as main from "./index.js"; -const nativeImage = require("electron").nativeImage; +import * as path from "path"; +import { nativeImage, shell } from "electron"; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const icons = { "win32" : { @@ -19,7 +22,7 @@ const icons = { var openUrl = (url) => { try { - require("electron").shell.openExternal(url); + shell.openExternal(url); } catch(e) { main.log.info(e); @@ -47,7 +50,7 @@ var openHomepage = () => { openUrl("https://github.com/muffinista/before-dawn"); * * @param {Application} a the main app instance */ -var buildMenuTemplate = function(a) { +export const buildMenuTemplate = function(a) { var app = a; var base = [ { @@ -217,7 +220,7 @@ var buildMenuTemplate = function(a) { /** * build the tray menu template for the app */ -var trayMenuTemplate = function() { +export const trayMenuTemplate = function() { return [ { label: "Run Now", @@ -247,7 +250,7 @@ var trayMenuTemplate = function() { { label: "Update Available!", click: function() { - require("electron").shell.openExternal(global.PACKAGE_DOWNLOAD_URL); + shell.openExternal(global.PACKAGE_DOWNLOAD_URL); }, visible: (global.NEW_RELEASE_AVAILABLE === true) }, @@ -288,7 +291,7 @@ var trayMenuTemplate = function() { /** * get icons for the current platform */ -var getIcons = function() { +export const getIcons = function() { if ( icons[process.platform] ) { return icons[process.platform]; } @@ -296,7 +299,7 @@ var getIcons = function() { return icons.default; }; -var trayIconImage = function() { +export const trayIconImage = function() { var icons = getIcons(); let stateManager = main.getStateManager(); @@ -323,9 +326,3 @@ var updateTrayIcon = function() { appIcon.setImage(iconImage); } }; - - -exports.getIcons = getIcons; -exports.trayIconImage = trayIconImage; -exports.buildMenuTemplate = buildMenuTemplate; -exports.trayMenuTemplate = trayMenuTemplate; diff --git a/src/main/power.js b/src/main/power.js index a539757a..26515de5 100644 --- a/src/main/power.js +++ b/src/main/power.js @@ -1,9 +1,9 @@ "use strict"; -const exec = require("child_process").execFile; +import { execFile } from "child_process"; -module.exports = class Power { +export default class Power { constructor(opts = {}) { this.method = opts.method; this.platform = opts.platform; @@ -74,7 +74,7 @@ module.exports = class Power { query(cmd, args) { return new Promise((resolve) => { - exec(cmd, args, (error, stdout, stderr) => { + execFile(cmd, args, (error, stdout, stderr) => { if (error) { console.warn(error); } @@ -82,4 +82,4 @@ module.exports = class Power { }); }); } -}; +} diff --git a/src/main/release_check.js b/src/main/release_check.js index a001364e..d047dc51 100644 --- a/src/main/release_check.js +++ b/src/main/release_check.js @@ -1,10 +1,10 @@ "use strict"; -module.exports = class ReleaseCheck { +export default class ReleaseCheck { constructor(_attrs = {}) { this.onUpdateCallback = () => {}; this.onNoUpdateCallback = () => {}; this.logger = () => {}; - this.fetch = _attrs.fetch || global.fetch || require("node-fetch"); + this.fetch = _attrs.fetch || global.fetch; } setFeed(u) { @@ -47,4 +47,4 @@ module.exports = class ReleaseCheck { this.onNoUpdateCallback(); }); } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/screen.js b/src/main/screen.js index 258bd16d..24e8d49c 100644 --- a/src/main/screen.js +++ b/src/main/screen.js @@ -1,5 +1,6 @@ "use strict"; -const gotoSleep = require("goto-sleep"); -exports.doLockScreen = gotoSleep.lockScreen; -exports.doSleep = gotoSleep.gotoSleep; +import gotoSleep from "goto-sleep"; + +export const doLockScreen = gotoSleep.lockScreen; +export const doSleep = gotoSleep.gotoSleep; diff --git a/src/main/state_manager.js b/src/main/state_manager.js index cf684212..391880a3 100644 --- a/src/main/state_manager.js +++ b/src/main/state_manager.js @@ -300,4 +300,4 @@ class StateManager { } } -module.exports = StateManager; +export default StateManager; diff --git a/src/main/windows.js b/src/main/windows.js index 947ccf12..5e2b8c63 100644 --- a/src/main/windows.js +++ b/src/main/windows.js @@ -1,7 +1,7 @@ "use strict"; -const main = require("./index.js"); -const {BrowserWindow} = require("electron"); +import * as main from "./index.js"; +import { BrowserWindow } from "electron"; var getSaverWindows = function() { return BrowserWindow.getAllWindows().filter((w) => { @@ -13,7 +13,7 @@ var getSaverWindows = function() { /** * check if the screensaver is still running */ -var screenSaverIsRunning = function() { +export const screenSaverIsRunning = function() { return ( getSaverWindows().length > 0 ); }; @@ -28,7 +28,7 @@ var activeWindowHandle = function(w) { /** * when the display count changes, close any running windows */ -var handleDisplayChange = function() { +export const handleDisplayChange = function() { // main.log.info("display change, let's close running screensavers"); closeRunningScreensavers(); }; @@ -36,7 +36,7 @@ var handleDisplayChange = function() { /** * close any running screensavers */ -var closeRunningScreensavers = function() { +export const closeRunningScreensavers = function() { main.log.info("closeRunningScreensavers"); attemptToStopScreensavers(); @@ -72,7 +72,7 @@ var forcefullyCloseScreensavers = function() { /** * forcefully close a screensaver window */ -var forceWindowClose = function(w) { +export const forceWindowClose = function(w) { // 100% close/kill this window if ( typeof(w) !== "undefined" ) { try { @@ -89,7 +89,7 @@ var forceWindowClose = function(w) { * fast/simple fullscreen mode if available. * @param {BrowserWindow} w the window to apply */ -var setFullScreen = function(w) { +export const setFullScreen = function(w) { if ( process.platform !== "darwin" ) { w.setFullScreen(true); } @@ -100,8 +100,3 @@ var setFullScreen = function(w) { // w.moveTop(); }; -exports.screenSaverIsRunning = screenSaverIsRunning; -exports.handleDisplayChange = handleDisplayChange; -exports.closeRunningScreensavers = closeRunningScreensavers; -exports.forceWindowClose = forceWindowClose; -exports.setFullScreen = setFullScreen; \ No newline at end of file diff --git a/test/helpers.js b/test/helpers.js index fc2d65fe..70b26d06 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -1,14 +1,19 @@ -const tmp = require("tmp"); -const path = require("path"); -const fs = require("fs-extra"); -// const os = require("os"); -const { _electron: electron } = require("playwright"); +import * as path from "path"; +import fs from 'fs-extra'; +import * as tmp from "tmp"; -const Conf = require("conf"); +import Conf from "conf"; -const appPath = require("electron"); -const assert = require("assert"); +import { _electron as playwright } from "playwright"; +import electron from "electron"; + +import assert from "assert"; + + +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); let windowCheckDelay = 5000; let testTimeout = 25000; @@ -37,15 +42,14 @@ const delayStep = 10; }; -exports.specifyConfig = (dest, name) => { +export function specifyConfig(dest, name) { fs.copySync( path.join(__dirname, "fixtures", name + ".json"), dest ); -}; - +} -exports.setupConfig = (workingDir, name="config", attrs={}) => { +export function setupConfig(workingDir, name="config", attrs={}) { const dest = path.join(workingDir, "config.json"); fs.copySync( path.join(__dirname, "fixtures", name + ".json"), @@ -56,18 +60,17 @@ exports.setupConfig = (workingDir, name="config", attrs={}) => { let store = new Conf({cwd: workingDir}); store.set(attrs); } -}; - +} -exports.setConfigValue = (workingDir, name, value) => { +export function setConfigValue(workingDir, name, value) { let f = path.join(workingDir, "config.json"); let currentVals = JSON.parse(fs.readFileSync(f)); currentVals[name] = value; fs.writeFileSync(f, JSON.stringify(currentVals)); -}; +} -exports.addSaver = function(dest, name, source) { +export function addSaver(dest, name, source) { // make a subdir in the savers directory and drop screensaver // config there if ( source === undefined ) { @@ -90,9 +93,9 @@ exports.addSaver = function(dest, name, source) { fs.copySync(htmlSrc, saverHTMLFile); return saverJSONFile; -}; +} -exports.prefsToJSON = (tmpdir) => { +export function prefsToJSON(tmpdir) { let testFile = path.join(tmpdir, "config.json"); let data = {}; @@ -104,60 +107,45 @@ exports.prefsToJSON = (tmpdir) => { } return data; -}; - -// const getTempBase = function() { -// // if we're on windows and the tmp dir base has a ~ in it, -// // try and generate an expanded path since glob really dislikes 8.3 filenames - -// const base = os.tmpdir(); -// if ( process.platform === "win32" && base.lastIndexOf("~") !== -1) { -// if ( process.env.HOME ) { -// return `${process.env.home}\\AppData\\Local\\Temp`; -// } -// return `${process.env.USERPROFILE}\\AppData\\Local\\Temp`; -// } - -// return base; -// }; +} -exports.getTempDir = function() { +export function getTempDir() { const base = tmp.dirSync().name; if ( process.platform === "win32" && base.lastIndexOf("~") !== -1) { return base.replace("RUNNER~1", "runneradmin"); } return base; -}; +} -exports.savedConfig = function(p) { +export function savedConfig(p) { var data = path.join(p, "config.json"); var json = fs.readFileSync(data); return JSON.parse(json); -}; +} -exports.setupFullConfig = function(workingDir) { +export function setupFullConfig(workingDir) { let saversDir = exports.getTempDir(); let saverJSONFile = exports.addSaver(saversDir, "saver"); exports.setupConfig(workingDir, "config", { "saver": saverJSONFile }); -}; +} -exports.addLocalSource = function(workingDir, saversDir) { +export function addLocalSource(workingDir, saversDir) { var src = path.join(workingDir, "config.json"); var data = exports.savedConfig(workingDir); data.localSource = saversDir; fs.writeFileSync(src, JSON.stringify(data)); -}; +} -exports.removeLocalSource = function(workingDir) { +export function removeLocalSource(workingDir) { var src = path.join(workingDir, "config.json"); var data = exports.savedConfig(workingDir); data.localSource = ""; fs.writeFileSync(src, JSON.stringify(data)); -}; +} /** @@ -167,7 +155,7 @@ exports.removeLocalSource = function(workingDir) { * @param {boolean} quietMode * @returns application */ -exports.application = async function(workingDir, quietMode=false) { +export async function application(workingDir, quietMode=false) { let env = { BEFORE_DAWN_DIR: workingDir, CONFIG_DIR: workingDir, @@ -177,8 +165,8 @@ exports.application = async function(workingDir, quietMode=false) { ELECTRON_ENABLE_LOGGING: true }; - let a = await electron.launch({ - path: appPath, + let a = await playwright.launch({ + path: electron, args: [path.join(__dirname, "..", "output", "main.js")], env: env }); @@ -197,12 +185,12 @@ exports.application = async function(workingDir, quietMode=false) { app = a; return a; -}; +} -exports.dumpOutput = async(app) => { +export async function dumpOutput(app) { console.log(app.logData); app.logData = []; -}; +} /** * @@ -210,11 +198,11 @@ exports.dumpOutput = async(app) => { * @param {string} windowName the name of the window to wait for * @returns Page */ - exports.waitFor = async (app, windowName) => { + export async function waitFor(app, windowName) { const title = windowTitles[windowName]; await exports.waitForWindow(app, title); return exports.getWindowByTitle(app, title); -}; +} /** @@ -222,7 +210,7 @@ exports.dumpOutput = async(app) => { * * @param {application} app */ -exports.stopApp = async function(app) { +export async function stopApp(app) { try { if (app ) { await app.close(); @@ -231,7 +219,7 @@ exports.stopApp = async function(app) { catch(e) { console.log(e); } -}; +} /** @@ -240,7 +228,7 @@ exports.stopApp = async function(app) { * @param {*} app * @returns hash of window objects keyed by title */ -exports.getWindowLookup = async(app) => { +export async function getWindowLookup(app) { const windows = await app.windows(); const promises = windows.map(async (window) => { try { @@ -258,7 +246,7 @@ exports.getWindowLookup = async(app) => { map[obj[0]] = obj[1]; return map; }, {}); -}; +} /** * Get window with the given title @@ -267,13 +255,13 @@ exports.getWindowLookup = async(app) => { * @param {*} title * @returns */ -exports.getWindowByTitle = async (app, title) => { +export async function getWindowByTitle(app, title) { // make sure the app is open await app.firstWindow(); const lookup = await exports.getWindowLookup(app); return lookup[title]; -}; +} /** * wait for text on the given window @@ -282,21 +270,21 @@ exports.getWindowByTitle = async (app, title) => { * @param {string} text text to look for * @param {boolean} doAssert */ -exports.waitForText = async(window, lookup, text, doAssert) => { +export async function waitForText(window, lookup, text, doAssert) { const content = await window.textContent(lookup); if ( doAssert === true ) { assert(content.lastIndexOf(text) !== -1); } -}; +} /** * wait for ms milliseconds * @param {*} ms * @returns */ -exports.sleep = function sleep(ms) { +export function sleep (ms) { return new Promise(resolve => setTimeout(resolve, ms)); -}; +} /** @@ -306,7 +294,7 @@ exports.sleep = function sleep(ms) { * @param {*} skipAssert * @returns */ -exports.waitForWindow = async (app, title, skipAssert) => { +export async function waitForWindow(app, title, skipAssert) { let result = -1; for ( var totalTime = 0; totalTime < windowCheckDelay; totalTime += delayStep ) { result = await exports.getWindowByTitle(app, title); @@ -323,7 +311,7 @@ exports.waitForWindow = async (app, title, skipAssert) => { } return result; -}; +} /** @@ -332,15 +320,15 @@ exports.waitForWindow = async (app, title, skipAssert) => { * @param {*} method * @param {*} opts */ -exports.callIpc = async(_app, method, opts={}) => { +export async function callIpc(_app, method, opts={}) { const window = exports.shim; await window.fill("#ipc", method); await window.fill("#ipcopts", JSON.stringify(opts)); await window.click("text=go"); -}; +} -exports.setupTest = function (test) { +export function setupTest(test) { test.timeout(testTimeout); test.retries(testRetryCount); @@ -351,4 +339,4 @@ exports.setupTest = function (test) { await exports.stopApp(app); }); -}; +} diff --git a/test/lib/package.js b/test/lib/package.js index a3a5e411..286cfff5 100644 --- a/test/lib/package.js +++ b/test/lib/package.js @@ -1,16 +1,21 @@ "use strict"; -const assert = require("assert"); -const path = require("path"); -const fs = require("fs"); -const { rimraf } = require("rimraf"); -const sinon = require("sinon"); -const nock = require("nock"); -const fetch = require("node-fetch"); +import assert from 'assert'; +import path from "path"; +import fs from "fs"; +import { rimrafSync } from 'rimraf' +import sinon from "sinon"; +import nock from "nock"; -const Package = require("../../src/lib/package.js"); +import fetch from 'node-fetch'; +import Package from "../../src/lib/package.js"; -const helpers = require("../helpers.js"); +import * as helpers from "../helpers.js"; + + +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); var attrs; @@ -21,7 +26,7 @@ var zipPath; var sandbox; describe("Package", function() { - beforeEach(() => { + beforeEach(function() { sandbox = sinon.createSandbox(); workingDir = helpers.getTempDir(); @@ -50,9 +55,9 @@ describe("Package", function() { }); }); - describe("getReleaseInfo", () => { - describe("withValidResponse", () => { - it("does stuff", async () => { + describe("getReleaseInfo", function() { + describe("withValidResponse", function() { + it("does stuff", async function() { nock("https://api.github.com"). get("/repos/muffinista/before-dawn-screensavers/releases/latest"). replyWithFile(200, dataPath, { @@ -65,8 +70,8 @@ describe("Package", function() { }); }); - describe("withReject", () => { - it("survives", async () => { + describe("withReject", function() { + it("survives", async function() { nock("https://api.github.com"). get("/repos/muffinista/before-dawn-screensavers/releases/latest"). replyWithError({ @@ -80,17 +85,19 @@ describe("Package", function() { }); }); - describe("checkLatestRelease", () => { + describe("checkLatestRelease", function() { var p; describe("remote package", function() { - beforeEach(() => { + beforeEach(function() { p = new Package(attrs); }); - it("calls downloadFile", async () => { + it("calls downloadFile", async function() { + const data = JSON.parse(fs.readFileSync("./test/fixtures/release.json")); + sandbox.stub(p, "getReleaseInfo"). - returns(require("../fixtures/release.json")); + returns(data); var df = sandbox.stub(p, "downloadFile").resolves(zipPath); @@ -98,9 +105,10 @@ describe("Package", function() { assert(df.calledOnce); }); - it("doesnt call if not needed", async () => { + it("doesnt call if not needed", async function() { + const data = JSON.parse(fs.readFileSync("./test/fixtures/release-no-update.json")); sandbox.stub(p, "getReleaseInfo"). - returns(require("../fixtures/release-no-update.json")); + returns(data); var cb = sinon.spy(); var df = sandbox.stub(p, "downloadFile"); @@ -111,35 +119,35 @@ describe("Package", function() { }); }); - describe("downloadFile", () => { + describe("downloadFile", function() { var testUrl = "https://test.file/savers.zip"; - beforeEach(() => { + beforeEach(function() { nock("https://test.file"). get("/savers.zip"). reply(200, () => { return fs.createReadStream(zipPath); }); - rimraf.sync(workingDir); + rimrafSync(workingDir); fs.mkdirSync(workingDir); }); - xit("works", async () => { + xit("works", async function() { let p = new Package(attrs); const dest = await p.downloadFile(testUrl); assert(fs.existsSync(dest)); }); }); - describe("zipToSavers", () => { + describe("zipToSavers", function() { var p; - beforeEach(() => { + beforeEach(function() { p = new Package(attrs); - rimraf.sync(workingDir); + rimrafSync(workingDir); fs.mkdirSync(workingDir); }); - it("unzips files", (done) => { + it("unzips files", function(done) { p.zipToSavers(zipPath).then(() => { var testDest = path.resolve(workingDir, "sparks", "index.html"); assert(fs.existsSync(testDest)); @@ -147,7 +155,7 @@ describe("Package", function() { }); }); - it("recovers from errors", (done) => { + it("recovers from errors", function(done) { p.zipToSavers(dataPath). then(() => {}). catch( () => { @@ -155,7 +163,7 @@ describe("Package", function() { }); }); - it("keeps files on failure", (done) => { + it("keeps files on failure", function(done) { helpers.addSaver(workingDir, "saver-one", "saver.json"); var testDest = path.resolve(workingDir, "saver-one", "saver.json"); @@ -168,7 +176,7 @@ describe("Package", function() { }); - it("removes files that arent needed", (done) => { + it("removes files that arent needed", function(done) { helpers.addSaver(workingDir, "saver-one", "saver.json"); var testDest = path.resolve(workingDir, "saver-one", "saver.json"); diff --git a/test/lib/prefs.js b/test/lib/prefs.js index b0785f31..a4de8af8 100644 --- a/test/lib/prefs.js +++ b/test/lib/prefs.js @@ -1,39 +1,39 @@ "use strict"; -const tmp = require("tmp"); -const fs = require("fs-extra"); -const path = require("path"); -const assert = require("assert"); +import assert from 'assert'; +import path from "path"; +import * as tmp from "tmp"; +import fs from "fs"; -const helpers = require("../helpers.js"); +import * as helpers from "../helpers.js"; -const SaverPrefs = require("../../src/lib/prefs.js"); +import SaverPrefs from "../../src/lib/prefs.js"; -describe("SaverPrefs", () => { +describe("SaverPrefs", function() { var tmpdir, prefs; - beforeEach(() => { + beforeEach(function() { tmpdir = tmp.dirSync().name; }); - describe("without config", () => { - beforeEach(() => { + describe("without config", function() { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); }); - it("should load", () => { + it("should load", function() { assert.equal(true, prefs.needSetup); }); }); // reload - describe("reload", () => { - beforeEach(() => { + describe("reload", function() { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); }); - it("works with existing config", () => { + it("works with existing config", function() { prefs.saver = "foo/bar/baz.json"; assert.equal("foo/bar/baz.json", prefs.saver); @@ -41,7 +41,7 @@ describe("SaverPrefs", () => { assert.equal("foo/bar/baz.json", prefs.saver); }); - it("persists", () => { + it("persists", function() { prefs.saver = "foo/bar/baz.json"; prefs = new SaverPrefs(tmpdir); @@ -52,7 +52,7 @@ describe("SaverPrefs", () => { }); describe("needSetup", function() { - it("is false with config", () => { + it("is false with config", function() { prefs = new SaverPrefs(tmpdir); assert.equal(true, prefs.needSetup); @@ -64,7 +64,7 @@ describe("SaverPrefs", () => { assert.equal(false, prefs.needSetup); }); - it("is true if saver is undefined", () => { + it("is true if saver is undefined", function() { prefs = new SaverPrefs(tmpdir); assert.equal(true, prefs.needSetup); @@ -78,7 +78,7 @@ describe("SaverPrefs", () => { assert.equal(true, prefs.needSetup); }); - it("is true if saver is blank", () => { + it("is true if saver is blank", function() { prefs = new SaverPrefs(tmpdir); assert.equal(true, prefs.needSetup); @@ -94,21 +94,21 @@ describe("SaverPrefs", () => { }); // no source - describe("noSource", () => { - describe("with config", () => { - beforeEach(() => { + describe("noSource", function() { + describe("with config", function() { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); helpers.specifyConfig(prefs.configFile, "config"); }); - it("is false if source repo", () => { + it("is false if source repo", function() { prefs.sourceRepo = "foo"; prefs.localSource = ""; assert.equal(true, !prefs.noSource); }); - it("is false if local source", () => { + it("is false if local source", function() { prefs.store.delete("sourceRepo"); prefs.localSource = "foo"; @@ -119,27 +119,27 @@ describe("SaverPrefs", () => { // defaultSaversDir - describe("defaultSaversDir", () => { - beforeEach(() => { + describe("defaultSaversDir", function() { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); }); - it("is the working directory", () => { + it("is the working directory", function() { let dest = path.join(tmpdir, "savers"); assert.equal(dest, prefs.defaultSaversDir); }); }); // sources - describe("sources", () => { + describe("sources", function() { let systemDir; - beforeEach(() => { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); helpers.specifyConfig(prefs.configFile, "config"); systemDir = path.join(tmpdir, "system-savers"); }); - it("includes localSource", () => { + it("includes localSource", function() { let saversDir = path.join(tmpdir, "savers"); let localSourceDir = helpers.getTempDir(); prefs.localSource = localSourceDir; @@ -149,7 +149,7 @@ describe("SaverPrefs", () => { [ saversDir, localSourceDir, systemDir ], result); }); - it("includes repo", () => { + it("includes repo", function() { prefs.sourceRepo = "foo"; let result = prefs.sources; let dest = path.join(tmpdir, "savers"); @@ -158,7 +158,7 @@ describe("SaverPrefs", () => { assert.equal(true, result.lastIndexOf(systemDir) !== -1); }); - it("includes both repo and localsource", () => { + it("includes both repo and localsource", function() { let saversDir = path.join(tmpdir, "savers"); let localSourceDir = helpers.getTempDir(); @@ -171,7 +171,7 @@ describe("SaverPrefs", () => { [ saversDir, localSourceDir, systemDir ], result); }); - it("includes system", () => { + it("includes system", function() { fs.mkdirSync(systemDir); let result = prefs.sources; assert.equal(true, result.lastIndexOf(systemDir) !== -1); @@ -179,35 +179,35 @@ describe("SaverPrefs", () => { }); // systemSource - describe("sources", () => { - beforeEach(() => { + describe("sources", function() { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); }); - it("works", () => { + it("works", function() { let expected = path.join(tmpdir, "system-savers"); assert.equal(expected, prefs.systemSource); }); }); // getOptions - describe("getOptions", () => { - beforeEach(() => { + describe("getOptions", function() { + beforeEach(function() { prefs = new SaverPrefs(tmpdir); helpers.specifyConfig(prefs.configFile, "config-with-options"); }); - it("works without key", () => { + it("works without key", function() { let opts = prefs.getOptions(); assert.deepEqual({ foo: "bar", level: 100 }, opts); }); - it("works with key", () => { + it("works with key", function() { let opts = prefs.getOptions("/Users/colin/Projects/before-dawn-screensavers/key/saver.json"); assert.deepEqual({ baz: "boo", level: 10 }, opts); }); - it("returns empty hash when key is undefined", () => { + it("returns empty hash when key is undefined", function() { prefs.store.delete("saver"); let opts = prefs.getOptions(); assert.deepEqual({}, opts); diff --git a/test/lib/saver-factory.js b/test/lib/saver-factory.js index 867a60ff..53a45ac9 100644 --- a/test/lib/saver-factory.js +++ b/test/lib/saver-factory.js @@ -1,16 +1,16 @@ "use strict"; -const assert = require("assert"); -const helpers = require("../helpers.js"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; +import { rimrafSync } from 'rimraf' +import * as mkdirp from "mkdirp"; -const { rimraf } = require("rimraf"); -const fs = require("fs-extra"); -const path = require("path"); -const { mkdirp } = require("mkdirp"); +import * as helpers from "../helpers.js"; -const SaverPrefs = require("../../src/lib/prefs.js"); -const SaverFactory = require("../../src/lib/saver-factory.js"); -const SaverListManager = require("../../src/lib/saver-list.js"); +import SaverPrefs from "../../src/lib/prefs.js"; +import SaverFactory from "../../src/lib/saver-factory.js"; +import SaverListManager from "../../src/lib/saver-list.js"; describe("SaverFactory", function() { @@ -44,7 +44,7 @@ describe("SaverFactory", function() { afterEach(function() { if ( fs.existsSync(workingDir) ) { - rimraf.sync(workingDir); + rimrafSync(workingDir); } }); diff --git a/test/lib/saver-list.js b/test/lib/saver-list.js index 56add17a..cf4f67ce 100644 --- a/test/lib/saver-list.js +++ b/test/lib/saver-list.js @@ -1,18 +1,21 @@ "use strict"; -const assert = require("assert"); -const sinon = require("sinon"); -const helpers = require("../helpers.js"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; +import { rimrafSync } from 'rimraf' +import sinon from "sinon"; +import * as helpers from "../helpers.js"; -const { rimraf } = require("rimraf"); -const fs = require("fs-extra"); -const path = require("path"); - -const SaverPrefs = require("../../src/lib/prefs.js"); -const SaverListManager = require("../../src/lib/saver-list.js"); +import SaverPrefs from "../../src/lib/prefs.js"; +import SaverListManager from "../../src/lib/saver-list.js"; var sandbox; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + describe("SaverListManager", function() { var savers; var prefs; @@ -49,13 +52,13 @@ describe("SaverListManager", function() { afterEach(function() { if ( fs.existsSync(workingDir) ) { - rimraf.sync(workingDir); + rimrafSync(workingDir); } sandbox.restore(); }); - describe("setup", () => { - it("works", (done) => { + describe("setup", function() { + it("works", function(done) { savers.setup().then((results) => { assert(results.first); assert(results.setup); @@ -65,8 +68,8 @@ describe("SaverListManager", function() { }); }); - describe("reload", () => { - it("works", (done) => { + describe("reload", function() { + it("works", function(done) { savers.reload(true).then(() => { done(); }); @@ -101,7 +104,7 @@ describe("SaverListManager", function() { catch(done); }); - it("rejects invalid savers", (done) => { + it("rejects invalid savers", function(done) { var f = path.join(__dirname, "../fixtures/invalid.json"); savers.loadFromFile(f, false, {}). then(() => { @@ -112,7 +115,7 @@ describe("SaverListManager", function() { }); }); - it("adds requirements if missing", (done) => { + it("adds requirements if missing", function(done) { var f = path.join(__dirname, "../fixtures/no-requirements.json"); savers.loadFromFile(f, false, {}).then((s) => { assert.deepEqual(["screen"], s.requirements); @@ -127,20 +130,20 @@ describe("SaverListManager", function() { assert.equal(3, data.length); }); - it("handles bad data", async () => { + it("handles bad data", async function() { helpers.addSaver(saversDir, "invalid", "invalid.json"); const data = await savers.list(); assert.equal(3, data.length); }); - it("uses cache", async () => { + it("uses cache", async function() { let cache = [0, 1, 2, 3, 4, 5]; savers.loadedScreensavers = cache; const data = await savers.list(); assert.deepEqual(cache, data); }); - it("forces reset", async () => { + it("forces reset", async function() { let cache = [0, 1, 2, 3, 4, 5]; savers.loadedScreensavers = cache; const data = await savers.list(true); @@ -192,7 +195,7 @@ describe("SaverListManager", function() { }); }); - describe("delete", () => { + describe("delete", function() { it("can delete if editable", async function() { const data = await savers.list(); diff --git a/test/lib/saver.js b/test/lib/saver.js index 3489ceb1..f5ff95f5 100644 --- a/test/lib/saver.js +++ b/test/lib/saver.js @@ -1,11 +1,11 @@ "use strict"; -const assert = require("assert"); -const Saver = require("../../src/lib/saver.js"); -const tmp = require("tmp"); -const path = require("path"); -const fs = require("fs"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; +import * as tmp from "tmp"; +import Saver from "../../src/lib/saver.js"; describe("Saver", function() { const testName = "Test Screensaver"; diff --git a/test/main/power.js b/test/main/power.js index 41df0854..b76d9bb2 100644 --- a/test/main/power.js +++ b/test/main/power.js @@ -1,13 +1,19 @@ "use strict"; -const assert = require("assert"); -const path = require("path"); -const fs = require("fs"); -const Power = require("../../src/main/power.js"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; + +import Power from "../../src/main/power.js"; + + +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); describe("Power", function() { - describe("charging", () => { + describe("charging", function() { const loadFixture = (platform, type) => { const f = path.join(__dirname, `../fixtures/power/${platform}-${type}.txt`); return fs.readFileSync(f).toString(); @@ -15,36 +21,36 @@ describe("Power", function() { let power; - describe("unhandled platform", () => { - it("works", async () => { + describe("unhandled platform", function() { + it("works", async function() { const power = new Power("beos"); assert(await power.charging()); }); }); - describe("linux", () => { + describe("linux", function() { let platform; - beforeEach(() => { + beforeEach(function() { platform = "linux"; power = new Power(platform); }); - it("is correct when charged", async () => { + it("is correct when charged", async function() { assert(await power.charging(loadFixture(platform, "charged"))); }); - it("is correct when charging", async () => { + it("is correct when charging", async function() { assert(await power.charging(loadFixture(platform, "charging"))); }); - it("is correct when discharging", async () => { + it("is correct when discharging", async function() { assert.strictEqual(false, await power.charging(loadFixture(platform, "discharging"))); }); }); ["darwin", "win32"].forEach((platform) => { - describe(platform, () => { - beforeEach(() => { + describe(platform, function() { + beforeEach(function() { const method = () => { return false; }; @@ -52,7 +58,7 @@ describe("Power", function() { power = new Power(platform, method); }); - it("returns the reverse of the method", async () => { + it("returns the reverse of the method", async function() { assert.strictEqual(true, await power.charging()); }); diff --git a/test/main/release_check.js b/test/main/release_check.js index 3b580d12..ed91befa 100644 --- a/test/main/release_check.js +++ b/test/main/release_check.js @@ -1,10 +1,17 @@ "use strict"; -const ReleaseCheck = require("../../src/main/release_check.js"); -const path = require("path"); -const nock = require("nock"); -const assert = require("assert"); -const fetch = require("node-fetch"); + +import assert from 'assert'; +import path from "path"; +import fetch from "node-fetch"; +import nock from "nock"; + +import ReleaseCheck from "../../src/main/release_check.js"; + +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + describe("ReleaseCheck", function() { let releaseChecker; @@ -14,12 +21,12 @@ describe("ReleaseCheck", function() { let url = `${server}${uriPath}`; let fixturePath; - beforeEach(() => { + beforeEach(function() { fixturePath = path.join(__dirname, "../fixtures/releases/updates.json"); releaseChecker = new ReleaseCheck({fetch: fetch}); }); - it("handles updates", (done) => { + it("handles updates", function(done) { nock(server). get(uriPath). replyWithFile(200, fixturePath, { @@ -35,7 +42,7 @@ describe("ReleaseCheck", function() { releaseChecker.checkLatestRelease(); }); - it("handles no updates", (done) => { + it("handles no updates", function(done) { nock(server). get(uriPath). reply(204, () => { diff --git a/test/main/state_manager.js b/test/main/state_manager.js index 8ece6792..ad15895a 100644 --- a/test/main/state_manager.js +++ b/test/main/state_manager.js @@ -1,19 +1,21 @@ "use strict"; -const assert = require("assert"); -const sinon = require("sinon"); -const StateManager = require("../../src/main/state_manager.js"); +import assert from 'assert'; +import sinon from "sinon"; + +import StateManager from "../../src/main/state_manager.js"; + const fakeIdler = { getIdleTime: () => { return 0; } }; -describe("StateManager", () => { +describe("StateManager", function() { let hitIdle, hitBlank, hitReset; let sandbox; let stateManager; - beforeEach(() => { + beforeEach(function() { stateManager = new StateManager(); hitIdle = false; @@ -38,12 +40,12 @@ describe("StateManager", () => { }); }); - afterEach(() => { + afterEach(function() { stateManager.stopTicking(); sandbox.restore(); }); - it("does nothing", (done) => { + it("does nothing", function(done) { sandbox.stub(fakeIdler, "getIdleTime").returns(0.01); stateManager.idleFn = fakeIdler.getIdleTime; @@ -57,7 +59,7 @@ describe("StateManager", () => { }, 50); }); - it("idles", (done) => { + it("idles", function(done) { sandbox.stub(fakeIdler, "getIdleTime").returns(200); stateManager.idleFn = fakeIdler.getIdleTime; @@ -70,7 +72,7 @@ describe("StateManager", () => { }, 50); }); - it("blanks", (done) => { + it("blanks", function(done) { sandbox.stub(fakeIdler, "getIdleTime").returns(1000); stateManager.idleFn = fakeIdler.getIdleTime; stateManager.switchState(stateManager.STATES.STATE_RUNNING); @@ -82,7 +84,7 @@ describe("StateManager", () => { }, 50); }); - it("resets", (done) => { + it("resets", function(done) { var idleCount = sandbox.stub(fakeIdler, "getIdleTime"); idleCount.onCall(0).returns(3); diff --git a/test/ui/about.js b/test/ui/about.js index 561bef39..9c55133d 100644 --- a/test/ui/about.js +++ b/test/ui/about.js @@ -1,8 +1,10 @@ "use strict"; -const assert = require("assert"); -const helpers = require("../helpers.js"); -const packageJSON = require("../../package.json"); +import assert from 'assert'; +import * as helpers from "../helpers.js"; +import fs from "fs"; + +const packageJSON = JSON.parse(fs.readFileSync("./package.json")); var workingDir; let app; @@ -10,7 +12,7 @@ let app; describe("About", function() { helpers.setupTest(this); - beforeEach(async () => { + beforeEach(async function() { workingDir = helpers.getTempDir(); helpers.setupFullConfig(workingDir); diff --git a/test/ui/bootstrap.js b/test/ui/bootstrap.js index ed39eef3..4349306d 100644 --- a/test/ui/bootstrap.js +++ b/test/ui/bootstrap.js @@ -1,10 +1,13 @@ "use strict"; -const assert = require("assert"); -const fs = require("fs-extra"); -const path = require("path"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; +import * as helpers from "../helpers.js"; -const helpers = require("../helpers.js"); +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); describe("bootstrap", function() { const saverZip = path.join(__dirname, "..", "fixtures", "test-savers.zip"); @@ -17,14 +20,14 @@ describe("bootstrap", function() { helpers.setupTest(this); - beforeEach(() => { + beforeEach(function() { workingDir = helpers.getTempDir(); configDest = path.join(workingDir, "config.json"); }); - describe("without config", () => { - beforeEach(async () => { + describe("without config", function() { + beforeEach(async function() { assert(!fs.existsSync(configDest)); app = await helpers.application(workingDir, false, saverZip, saverData); }); @@ -38,8 +41,8 @@ describe("bootstrap", function() { }); }); - describe("with invalid config", () => { - beforeEach(async () => { + describe("with invalid config", function() { + beforeEach(async function() { const dest = path.join(workingDir, "config.json"); fs.copySync( path.join(__dirname, "..", "fixtures", "bad-config.json"), diff --git a/test/ui/editor.js b/test/ui/editor.js index 6140e237..f73478d9 100644 --- a/test/ui/editor.js +++ b/test/ui/editor.js @@ -1,9 +1,9 @@ "use strict"; -const assert = require("assert"); -const fs = require("fs-extra"); -const path = require("path"); -const helpers = require("../helpers.js"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; +import * as helpers from "../helpers.js"; var workingDir; let app; @@ -13,7 +13,7 @@ describe("Editor", function() { var saverJSON; helpers.setupTest(this); - beforeEach(async () => { + beforeEach(async function() { workingDir = helpers.getTempDir(); var saversDir = helpers.getTempDir(); diff --git a/test/ui/new.js b/test/ui/new.js index 94314158..091b6672 100644 --- a/test/ui/new.js +++ b/test/ui/new.js @@ -1,10 +1,12 @@ "use strict"; -const assert = require("assert"); -const fs = require("fs-extra"); -const path = require("path"); +import assert from 'assert'; +import path from "path"; +import fs from "fs-extra"; +import * as helpers from "../helpers.js"; +import { fileURLToPath } from 'url'; -const helpers = require("../helpers.js"); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); var saversDir; var workingDir; @@ -15,7 +17,7 @@ describe("Add New", function() { helpers.setupTest(this); - beforeEach(async () => { + beforeEach(async function() { saversDir = helpers.getTempDir(); workingDir = helpers.getTempDir(); @@ -23,7 +25,7 @@ describe("Add New", function() { }); describe("when not setup", function() { - beforeEach(async () => { + beforeEach(async function() { await helpers.callIpc(app, `open-window add-new ${screensaverUrl}`); }); @@ -52,7 +54,7 @@ describe("Add New", function() { describe("when setup", function() { let window; - beforeEach(async () => { + beforeEach(async function() { helpers.addLocalSource(workingDir, saversDir); await helpers.callIpc(app, `open-window add-new ${screensaverUrl}`); window = await helpers.waitFor(app, "new"); diff --git a/test/ui/prefs.js b/test/ui/prefs.js index dc5a65f3..cae289c2 100644 --- a/test/ui/prefs.js +++ b/test/ui/prefs.js @@ -1,12 +1,12 @@ "use strict"; -const assert = require("assert"); -const helpers = require("../helpers.js"); +import assert from 'assert'; +import * as helpers from "../helpers.js"; +import SaverPrefs from "../../src/lib/prefs.js"; let app; var workingDir; var saversDir; -const SaverPrefs = require("../../src/lib/prefs.js"); describe("Prefs", function() { helpers.setupTest(this); diff --git a/test/ui/settings.js b/test/ui/settings.js index cc42af17..6605f790 100644 --- a/test/ui/settings.js +++ b/test/ui/settings.js @@ -1,12 +1,12 @@ "use strict"; -const assert = require("assert"); -const helpers = require("../helpers.js"); +import assert from 'assert'; +import * as helpers from "../helpers.js"; +import SaverPrefs from "../../src/lib/prefs.js"; let app; var workingDir; var saversDir; -const SaverPrefs = require("../../src/lib/prefs.js"); describe("Settings", function() { const closeWindowDelay = 750; @@ -18,7 +18,7 @@ describe("Settings", function() { return new SaverPrefs(workingDir).data; }; - beforeEach(async () => { + beforeEach(async function() { workingDir = helpers.getTempDir(); saversDir = helpers.getTempDir(); diff --git a/test/ui/tray.js b/test/ui/tray.js index ea18dbe7..6b57830a 100644 --- a/test/ui/tray.js +++ b/test/ui/tray.js @@ -1,7 +1,7 @@ "use strict"; -const assert = require("assert"); -const helpers = require("../helpers.js"); +import assert from 'assert'; +import * as helpers from "../helpers.js"; describe("tray", function() { var workingDir; diff --git a/webpack.config.js b/webpack.config.js index a70243a5..113bb38f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,3 @@ -var main = require("./webpack.main.config"); -var renderer = require("./webpack.renderer.config"); - -module.exports = [main, renderer]; +import mainConfig from "./webpack.main.config.js"; +import rendererConfig from "./webpack.renderer.config.js"; +export default [mainConfig, rendererConfig]; diff --git a/webpack.main.config.js b/webpack.main.config.js index 0a8c4639..4d3a7f1b 100644 --- a/webpack.main.config.js +++ b/webpack.main.config.js @@ -1,24 +1,31 @@ "use strict"; -const path = require("path"); -const packageJSON = require("./package.json"); +import * as path from "path"; +import webpack from "webpack"; +import "dotenv/config"; + +import CopyWebpackPlugin from "copy-webpack-plugin"; +import { CleanWebpackPlugin } from "clean-webpack-plugin"; +import SentryWebpackPlugin from "@sentry/webpack-plugin"; +import ESLintPlugin from "eslint-webpack-plugin"; +import { readFile } from 'fs/promises'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const packageJSON = JSON.parse( + await readFile( + new URL('./package.json', import.meta.url) + ) +); -require("dotenv").config(); const dependencies = packageJSON.dependencies; const optionalDependencies = packageJSON.optionalDependencies || {}; -const webpack = require("webpack"); const outputDir = path.join(__dirname, "output"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); - const COMMIT_SHA = process.env.SENTRY_RELEASE || process.env.GITHUB_SHA; -const { CleanWebpackPlugin } = require("clean-webpack-plugin"); -const SentryWebpackPlugin = require("@sentry/webpack-plugin"); -const ESLintPlugin = require("eslint-webpack-plugin"); - // // get a list of node dependencies, and then // convert it to an array of package names @@ -44,6 +51,9 @@ let mainConfig = { entry: { main: path.join(__dirname, "src", "main", "index.js") }, + experiments: { + outputModule: true, +}, externals: deps, module: { rules: [ @@ -104,7 +114,7 @@ let mainConfig = { resolve: { extensions: [".js", ".json"] }, - target: "electron-main" + // target: "electron-main" }; /** @@ -142,4 +152,4 @@ if (process.env.NODE_ENV === "production") { } } -module.exports = mainConfig; +export default mainConfig; diff --git a/webpack.renderer.config.js b/webpack.renderer.config.js index 3cc3170d..dd49c8df 100644 --- a/webpack.renderer.config.js +++ b/webpack.renderer.config.js @@ -1,21 +1,27 @@ "use strict"; -const path = require("path"); -const packageJSON = require(`${"./package.json"}`); +import * as path from "path"; +import webpack from "webpack"; +import "dotenv/config"; -const productName = packageJSON.productName; +import HtmlWebpackPlugin from "html-webpack-plugin"; +import MiniCssExtractPlugin from "mini-css-extract-plugin"; +import SentryWebpackPlugin from "@sentry/webpack-plugin"; +import ESLintPlugin from "eslint-webpack-plugin"; +import { readFile } from 'fs/promises'; +import { fileURLToPath } from 'url'; -require("dotenv").config(); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const webpack = require("webpack"); +const packageJSON = JSON.parse( + await readFile( + new URL('./package.json', import.meta.url) + ) +); +const productName = packageJSON.productName; const outputDir = path.join(__dirname, "output"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const SentryWebpackPlugin = require("@sentry/webpack-plugin"); -const ESLintPlugin = require("eslint-webpack-plugin"); - const COMMIT_SHA = process.env.SENTRY_RELEASE || process.env.GITHUB_SHA; var htmlPageOptions = function(id, title) { @@ -174,4 +180,4 @@ if (process.env.NODE_ENV === "production") { } } -module.exports = rendererConfig; +export default rendererConfig; From a907bc33d7b7fac56ce9cf287620b6667b17aaad Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 2 Feb 2024 10:37:16 -0500 Subject: [PATCH 02/16] Update build scripts and webpack to work with ES6 --- bin/build-icon.js | 23 ++++++-------- package.json | 2 +- src/lib/package.js | 5 ++- src/main/assets/shim.js | 2 +- src/main/bootstrap.js | 5 ++- src/main/index.js | 70 ++++++++++++++++++++++++----------------- test/helpers.js | 32 ++++++++++--------- test/ui/editor.js | 5 +++ test/ui/new.js | 6 ++-- webpack.main.config.js | 20 +++++++++--- 10 files changed, 100 insertions(+), 70 deletions(-) diff --git a/bin/build-icon.js b/bin/build-icon.js index 2fe0cec0..ee193825 100644 --- a/bin/build-icon.js +++ b/bin/build-icon.js @@ -1,15 +1,12 @@ #!/usr/bin/env node /* eslint-disable no-console */ - -require("dotenv").config(); - -const tmp = require("tmp"); -const path = require("path"); -const fs = require("fs"); -const pngToIco = require("png-to-ico"); -const jimp = require("jimp"); - +import "dotenv/config"; +import * as path from "path"; +import * as tmp from "tmp"; +import * as fs from "fs"; +import pngToIco from "png-to-ico"; +import Jimp from "jimp"; const sizes = [256, 128, 48, 32, 16]; @@ -17,8 +14,8 @@ async function main() { let outputs = []; let pauseOutputs = []; - const image = await jimp.read("assets/icon.png"); - const pauseImage = await jimp.read("assets/icon-paused.png"); + const image = await Jimp.read("assets/icon.png"); + const pauseImage = await Jimp.read("assets/icon-paused.png"); const tmpDir = tmp.dirSync().name; @@ -28,13 +25,13 @@ async function main() { // const images = sizes.map(async (s) => { const name = path.join(tmpDir, `icon-${size}.png`); - await image.resize(size, jimp.AUTO); + await image.resize(size, Jimp.AUTO); await image.writeAsync(name); outputs.push(name); const pausedName = path.join(tmpDir, `icon-paused-${size}.png`); - await pauseImage.resize(size, jimp.AUTO); + await pauseImage.resize(size, Jimp.AUTO); await pauseImage.writeAsync(pausedName); pauseOutputs.push(pausedName); diff --git a/package.json b/package.json index 60986dd1..4688de5b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "npm run compile && mocha -b test/**/*.js", "test-ui": "npm run compile && mocha test/ui/**/*.js", "test-lib": "mocha test test/lib/**/*.js test/main/**/*.js", - "run-local": "node bin/build-icon.js && npm run compile && electron output/main.js", + "run-local": "node bin/build-icon.js && npm run compile && cross-env ELECTRON_IS_DEV=0 electron output/main.js", "grab-screens": "bin/capture-screens.js", "release": "node bin/build-icon.js && node bin/download-screensavers.js && npm run dist", "publish-release": "node bin/generate-release.js && git push origin main" diff --git a/src/lib/package.js b/src/lib/package.js index 92d6fda5..f7c873c5 100644 --- a/src/lib/package.js +++ b/src/lib/package.js @@ -8,9 +8,8 @@ import { mkdirp } from "mkdirp"; import { rimrafSync } from "rimraf"; import * as yauzl from "yauzl" import * as lockfile from "proper-lockfile"; -import Readable from "stream"; -import finished from "stream/promises"; - +import { Readable } from "stream"; +import { finished } from "stream/promises"; /** diff --git a/src/main/assets/shim.js b/src/main/assets/shim.js index fff452cf..27905177 100644 --- a/src/main/assets/shim.js +++ b/src/main/assets/shim.js @@ -1,4 +1,4 @@ -import { contextBridge, ipcRenderer } from "electron"; +const { contextBridge, ipcRenderer } = require("electron"); const shimApi = { send: (cmd, opts, args={}) => ipcRenderer.send(cmd, opts, args), diff --git a/src/main/bootstrap.js b/src/main/bootstrap.js index b398fa1d..3165fa7a 100644 --- a/src/main/bootstrap.js +++ b/src/main/bootstrap.js @@ -8,7 +8,6 @@ export default async function bootstrapApp() { ) ); - global.IS_DEV = true; // require("electron-is-dev"); var version = undefined; @@ -34,13 +33,13 @@ export default async function bootstrapApp() { global.ISSUES_URL = "https://github.com/muffinista/before-dawn/issues"; global.APP_CREDITS = "by Colin Mitchell // muffinlabs.com"; - if ( packageJSON.release_server && ! global.IS_DEV ) { + if ( packageJSON.release_server ) { global.RELEASE_SERVER = packageJSON.release_server; global.RELEASE_CHECK_URL = `${global.RELEASE_SERVER}/update/${process.platform}/${global.APP_VERSION_BASE}`; global.PACKAGE_DOWNLOAD_URL = `https://github.com/${global.APP_REPO}/releases/latest`; } - if ( process.env.TEST_MODE === undefined && !global.IS_DEV && process.env.SENTRY_DSN !== undefined ) { + if ( process.env.TEST_MODE === undefined && process.env.SENTRY_DSN !== undefined ) { console.log(`setting up sentry with ${process.env.SENTRY_DSN}`); try { init({ diff --git a/src/main/index.js b/src/main/index.js index 8dd0cae6..446245b8 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -33,6 +33,7 @@ import {app, Tray, powerMonitor} from "electron"; +import isDev from 'electron-is-dev'; import log from 'electron-log'; import { screen as electronScreen } from "electron"; @@ -180,7 +181,7 @@ const defaultWebPreferences = { contextIsolation: true, nodeIntegration: false, nativeWindowOpen: true, - webSecurity: !global.IS_DEV + webSecurity: !isDev }; const singleLock = app.requestSingleInstanceLock(); @@ -317,8 +318,8 @@ var grabScreen = function(s) { */ var openTestShim = function() { var testWindow = new BrowserWindow({ - width: 400, - height: 400, + width: 800, + height: 600, webPreferences: { ...defaultWebPreferences, preload: path.join(__dirname, "assets", "shim.js") @@ -327,6 +328,8 @@ var openTestShim = function() { const shimUrl = `file://${__dirname}/assets/shim.html`; testWindow.loadURL(shimUrl); + + testWindow.webContents.openDevTools(); }; @@ -369,7 +372,7 @@ var openPrefsWindow = function() { icon: path.join(__dirname, "assets", "iconTemplate.png") }); - if ( !global.IS_DEV && handles.prefs.window.removeMenu !== undefined ) { + if ( !isDev && handles.prefs.window.removeMenu !== undefined ) { handles.prefs.window.removeMenu(); } @@ -417,7 +420,7 @@ var openSettingsWindow = function() { }); // hide the file menu - if ( !global.IS_DEV && handles.settings.window.removeMenu !== undefined ) { + if ( !isDev && handles.settings.window.removeMenu !== undefined ) { handles.settings.window.removeMenu(); } @@ -490,7 +493,7 @@ var openAboutWindow = function() { } }); - if ( !global.IS_DEV && handles.about.window.removeMenu !== undefined ) { + if ( !isDev && handles.about.window.removeMenu !== undefined ) { handles.about.window.removeMenu(); } @@ -928,13 +931,14 @@ var getSystemDir = function() { } if ( process.env.TEST_MODE ) { - return path.join(__dirname, "..", "output"); - } - if ( global.IS_DEV ) { return path.join(__dirname, "..", "..", "output"); } + if ( app.isPackaged ) { + return path.join(app.getAppPath(), "output"); + } - return path.join(app.getAppPath(), "output"); + log.info(`dev systemDir: ${__dirname} --> ../../output/${__dirname}`); + return path.join(__dirname, "..", "..", "output"); }; @@ -945,7 +949,7 @@ var getSystemDir = function() { */ var getUrl = function(dest) { let baseUrl; - if ( !testMode && (global.IS_DEV || process.env.NODE_ENV === "development") ) { + if ( !testMode && isDev ) { if ( ! process.env.DISABLE_RELOAD ) { let devPort; @@ -963,7 +967,11 @@ var getUrl = function(dest) { return `${__dirname}/../../output/${dest}`; } else { - return `file://${__dirname}/${dest}`; + if ( app.isPackaged ) { + return `file://./${dest}`; + } + + return `file://${__dirname}/../../output/${dest}`; } }; @@ -1092,7 +1100,7 @@ var setupReleaseCheck = function() { * This is important because the app is pretty fragile on OSX otherwise. */ var askAboutApplicationsFolder = function() { - if ( testMode === true || global.IS_DEV === true || app.isInApplicationsFolder === undefined ) { + if ( testMode === true || isDev === true || app.isInApplicationsFolder === undefined ) { return; } @@ -1119,6 +1127,7 @@ var askAboutMediaAccess = async function() { } ["microphone", "camera", "screen"].forEach(async (type) => { + log.info(type); // note: this might be handy // "mac-screen-capture-permissions": "^1.1.0", // if ( type === "screen" ) { @@ -1304,6 +1313,7 @@ let setupIPC = function() { let systemPath = getSystemDir(); const src = path.join(systemPath, "system-savers", "__template"); + log.info(`create-screensaver from ${src}`); const dest = prefs.localSource; const data = factory.create(src, dest, attrs); @@ -1553,6 +1563,8 @@ let setupIPC = function() { * handle initial startup of app */ var bootApp = async function() { + log.info("bootApp"); + session.defaultSession.webRequest.onHeadersReceived((details, callback) => { callback({responseHeaders: Object.fromEntries(Object.entries(details.responseHeaders).filter(header => !/x-frame-options/i.test(header[0])))}); }); @@ -1576,7 +1588,7 @@ var bootApp = async function() { if ( process.env.SAVERS_DIR ) { saversDir = process.env.SAVERS_DIR; } - else if ( global.IS_DEV ) { + else if ( isDev ) { saversDir = path.join(__dirname, "..", "..", "data", "savers"); log.info("hello from dev mode, 'node bin/download-screensavers' to grab screensavers"); } @@ -1857,12 +1869,21 @@ let toggleSaversUpdated = (arg) => { } }; +const windowMethods = { + editor: openEditor, + settings: openSettingsWindow, + prefs: openPrefsWindow, + about: openAboutWindow, + "add-new": addNewSaver +}; + + log.transports.file.level = "debug"; log.transports.file.maxSize = 1 * 1024 * 1024; -log.info(`Hello from version: ${global.APP_VERSION_BASE} running in ${global.IS_DEV ? "development" : "production"}`); +log.info(`Hello from version: ${global.APP_VERSION_BASE} running in ${isDev ? "development" : "production"}`); -if ( global.IS_DEV ) { +if ( isDev ) { app.name = global.APP_NAME; log.info(`set app name to ${app.name}`); @@ -1873,15 +1894,6 @@ if ( global.IS_DEV ) { } } -const windowMethods = { - editor: openEditor, - settings: openSettingsWindow, - prefs: openPrefsWindow, - about: openAboutWindow, - "add-new": addNewSaver -}; - - /** * make sure we're only running a single instance */ @@ -1913,8 +1925,8 @@ app.on("before-quit", function() { }); app.on("will-quit", function(e) { log.info("will-quit"); - if ( testMode !== true && global.IS_DEV !== true && exitOnQuit !== true ) { - log.info(`don't quit! testMode: ${testMode} IS_DEV ${global.IS_DEV} exitOnQuit ${exitOnQuit}`); + if ( testMode !== true && isDev !== true && exitOnQuit !== true ) { + log.info(`don't quit! testMode: ${testMode} IS_DEV ${isDev} exitOnQuit ${exitOnQuit}`); e.preventDefault(); } else { @@ -1931,9 +1943,11 @@ process.on("uncaughtException", function (ex) { log.info(ex.stack); }); +log.info("readyto wait for bootApp"); + // This method will be called when Electron has finished // initialization and is ready to create browser windows. -app.once("ready", bootApp); +app.whenReady().then(bootApp); if ( testMode === true ) { exports.getTrayMenuItems = function() { diff --git a/test/helpers.js b/test/helpers.js index 70b26d06..e599038a 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-exports */ import * as path from "path"; import fs from 'fs-extra'; @@ -20,6 +21,7 @@ let testTimeout = 25000; let testRetryCount = 0; let app; +let shim; if (process.env.CI) { windowCheckDelay = 10000; @@ -41,6 +43,7 @@ const delayStep = 10; settings: "Before Dawn: Settings" }; +export { shim }; export function specifyConfig(dest, name) { fs.copySync( @@ -125,24 +128,24 @@ export function savedConfig(p) { export function setupFullConfig(workingDir) { - let saversDir = exports.getTempDir(); - let saverJSONFile = exports.addSaver(saversDir, "saver"); + let saversDir = getTempDir(); + let saverJSONFile = addSaver(saversDir, "saver"); - exports.setupConfig(workingDir, "config", { + setupConfig(workingDir, "config", { "saver": saverJSONFile }); } export function addLocalSource(workingDir, saversDir) { var src = path.join(workingDir, "config.json"); - var data = exports.savedConfig(workingDir); + var data = savedConfig(workingDir); data.localSource = saversDir; fs.writeFileSync(src, JSON.stringify(data)); } export function removeLocalSource(workingDir) { var src = path.join(workingDir, "config.json"); - var data = exports.savedConfig(workingDir); + var data = savedConfig(workingDir); data.localSource = ""; fs.writeFileSync(src, JSON.stringify(data)); } @@ -181,7 +184,7 @@ export async function application(workingDir, quietMode=false) { // wait for the first window (our test shim) to open, and // hang onto it for later use - exports.shim = await a.firstWindow(); + shim = await a.firstWindow(); app = a; return a; @@ -200,8 +203,8 @@ export async function dumpOutput(app) { */ export async function waitFor(app, windowName) { const title = windowTitles[windowName]; - await exports.waitForWindow(app, title); - return exports.getWindowByTitle(app, title); + await waitForWindow(app, title); + return getWindowByTitle(app, title); } @@ -259,7 +262,7 @@ export async function getWindowByTitle(app, title) { // make sure the app is open await app.firstWindow(); - const lookup = await exports.getWindowLookup(app); + const lookup = await getWindowLookup(app); return lookup[title]; } @@ -297,12 +300,12 @@ export function sleep (ms) { export async function waitForWindow(app, title, skipAssert) { let result = -1; for ( var totalTime = 0; totalTime < windowCheckDelay; totalTime += delayStep ) { - result = await exports.getWindowByTitle(app, title); + result = await getWindowByTitle(app, title); if ( result ) { return true; } else { - await exports.sleep(delayStep); + await sleep(delayStep); } } @@ -321,7 +324,7 @@ export async function waitForWindow(app, title, skipAssert) { * @param {*} opts */ export async function callIpc(_app, method, opts={}) { - const window = exports.shim; + const window = shim; await window.fill("#ipc", method); await window.fill("#ipcopts", JSON.stringify(opts)); @@ -332,11 +335,12 @@ export function setupTest(test) { test.timeout(testTimeout); test.retries(testRetryCount); + // eslint-disable-next-line mocha/no-top-level-hooks afterEach(async function () { if (this.currentTest.state !== "passed") { - await exports.dumpOutput(app); + await dumpOutput(app); } - await exports.stopApp(app); + await stopApp(app); }); } diff --git a/test/ui/editor.js b/test/ui/editor.js index f73478d9..b4123791 100644 --- a/test/ui/editor.js +++ b/test/ui/editor.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; @@ -5,6 +6,10 @@ import path from "path"; import fs from "fs-extra"; import * as helpers from "../helpers.js"; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + var workingDir; let app; let window; diff --git a/test/ui/new.js b/test/ui/new.js index 091b6672..1a476aaa 100644 --- a/test/ui/new.js +++ b/test/ui/new.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; @@ -13,11 +14,12 @@ var workingDir; let app; describe("Add New", function() { - const screensaverUrl = "file://" + path.join(__dirname, "../fixtures/screenshot.png"); + let screensaverUrl; helpers.setupTest(this); beforeEach(async function() { + screensaverUrl = "file://" + path.join(__dirname, "../fixtures/screenshot.png"); saversDir = helpers.getTempDir(); workingDir = helpers.getTempDir(); @@ -66,8 +68,8 @@ describe("Add New", function() { await window.fill("[name='name']", "A New Name"); await window.fill("[name='description']", "A Thing I Made?"); await window.click("button.save"); - await helpers.waitFor(app, "editor"); + assert(fs.existsSync(src)); }); }); diff --git a/webpack.main.config.js b/webpack.main.config.js index 4d3a7f1b..7c597eeb 100644 --- a/webpack.main.config.js +++ b/webpack.main.config.js @@ -53,7 +53,7 @@ let mainConfig = { }, experiments: { outputModule: true, -}, + }, externals: deps, module: { rules: [ @@ -83,9 +83,10 @@ let mainConfig = { }, output: { filename: "[name].js", - libraryTarget: "commonjs2", path: outputDir, - sourceMapFilename: "[name].js.map" + sourceMapFilename: "[name].js.map", + chunkFormat: "module", + module: true }, plugins: [ new ESLintPlugin({ @@ -112,9 +113,18 @@ let mainConfig = { }) ], resolve: { - extensions: [".js", ".json"] + extensions: [".js", ".json"], + fallback: { + "child_process": false, + "url": false, + "fs": false, + "path": false, + "os": false, + "stream": false, + "stream/promises": false, + } }, - // target: "electron-main" + target: "electron-main" }; /** From dbe451e1a4d3c1a96da21643b04ec95961a7cf8e Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 2 Feb 2024 12:19:32 -0500 Subject: [PATCH 03/16] Comment out some tests --- test/lib/package.js | 36 +++++++++++++++---------------- test/lib/prefs.js | 2 +- test/main/power.js | 1 + test/ui/about.js | 1 + test/ui/bootstrap.js | 1 + test/ui/prefs.js | 1 + test/ui/settings.js | 51 ++++++++++++++++++++++---------------------- test/ui/tray.js | 1 + 8 files changed, 50 insertions(+), 44 deletions(-) diff --git a/test/lib/package.js b/test/lib/package.js index 286cfff5..5b403ba6 100644 --- a/test/lib/package.js +++ b/test/lib/package.js @@ -119,24 +119,24 @@ describe("Package", function() { }); }); - describe("downloadFile", function() { - var testUrl = "https://test.file/savers.zip"; - beforeEach(function() { - nock("https://test.file"). - get("/savers.zip"). - reply(200, () => { - return fs.createReadStream(zipPath); - }); - rimrafSync(workingDir); - fs.mkdirSync(workingDir); - }); - - xit("works", async function() { - let p = new Package(attrs); - const dest = await p.downloadFile(testUrl); - assert(fs.existsSync(dest)); - }); - }); + // describe("downloadFile", function() { + // var testUrl = "https://test.file/savers.zip"; + // beforeEach(function() { + // nock("https://test.file"). + // get("/savers.zip"). + // reply(200, () => { + // return fs.createReadStream(zipPath); + // }); + // rimrafSync(workingDir); + // fs.mkdirSync(workingDir); + // }); + + // xit("works", async function() { + // let p = new Package(attrs); + // const dest = await p.downloadFile(testUrl); + // assert(fs.existsSync(dest)); + // }); + // }); describe("zipToSavers", function() { var p; diff --git a/test/lib/prefs.js b/test/lib/prefs.js index a4de8af8..1fed694f 100644 --- a/test/lib/prefs.js +++ b/test/lib/prefs.js @@ -179,7 +179,7 @@ describe("SaverPrefs", function() { }); // systemSource - describe("sources", function() { + describe("systemSource", function() { beforeEach(function() { prefs = new SaverPrefs(tmpdir); }); diff --git a/test/main/power.js b/test/main/power.js index b76d9bb2..b977ddab 100644 --- a/test/main/power.js +++ b/test/main/power.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; diff --git a/test/ui/about.js b/test/ui/about.js index 9c55133d..a28b471c 100644 --- a/test/ui/about.js +++ b/test/ui/about.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; diff --git a/test/ui/bootstrap.js b/test/ui/bootstrap.js index 4349306d..611006e0 100644 --- a/test/ui/bootstrap.js +++ b/test/ui/bootstrap.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; diff --git a/test/ui/prefs.js b/test/ui/prefs.js index cae289c2..bf9ef3a9 100644 --- a/test/ui/prefs.js +++ b/test/ui/prefs.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; diff --git a/test/ui/settings.js b/test/ui/settings.js index 6605f790..5393cdf2 100644 --- a/test/ui/settings.js +++ b/test/ui/settings.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; @@ -71,20 +72,20 @@ describe("Settings", function() { await helpers.waitFor(app, "prefs"); }); - it.skip("allows setting path via dialog", async function() { - const [fileChooser] = await Promise.all([ - window.waitForEvent("filechooser"), - window.click("button.pick") - ]); - await fileChooser.setFiles("/not/a/real/path"); + // it.skip("allows setting path via dialog", async function() { + // const [fileChooser] = await Promise.all([ + // window.waitForEvent("filechooser"), + // window.click("button.pick") + // ]); + // await fileChooser.setFiles("/not/a/real/path"); - await window.click("button.save"); - await helpers.sleep(closeWindowDelay); + // await window.click("button.save"); + // await helpers.sleep(closeWindowDelay); - assert.strictEqual("/not/a/real/path", currentPrefs().localSource); + // assert.strictEqual("/not/a/real/path", currentPrefs().localSource); - await helpers.waitFor(app, "prefs"); - }); + // await helpers.waitFor(app, "prefs"); + // }); it("clears localSource", async function() { let ls = currentPrefs().localSource; @@ -102,22 +103,22 @@ describe("Settings", function() { }); - // dialogs don't work yet - // @see https://github.com/microsoft/playwright/issues/8278 - it.skip("resets defaults", async function() { - window = await helpers.waitFor(app, "settings"); + // // dialogs don't work yet + // // @see https://github.com/microsoft/playwright/issues/8278 + // it.skip("resets defaults", async function() { + // window = await helpers.waitFor(app, "settings"); - window.on("dialog", async dialog => { - console.log(dialog.message()); - await dialog.accept(); - }); + // window.on("dialog", async dialog => { + // console.log(dialog.message()); + // await dialog.accept(); + // }); - await window.click("button.reset-to-defaults"); - await helpers.waitForText(window, "body", "Settings reset", true); - await helpers.sleep(closeWindowDelay); + // await window.click("button.reset-to-defaults"); + // await helpers.waitForText(window, "body", "Settings reset", true); + // await helpers.sleep(closeWindowDelay); - assert.strictEqual("", currentPrefs().localSource); + // assert.strictEqual("", currentPrefs().localSource); - await helpers.waitFor(app, "prefs"); - }); + // await helpers.waitFor(app, "prefs"); + // }); }); diff --git a/test/ui/tray.js b/test/ui/tray.js index 6b57830a..67b88a2a 100644 --- a/test/ui/tray.js +++ b/test/ui/tray.js @@ -1,3 +1,4 @@ +/* eslint-disable mocha/no-setup-in-describe */ "use strict"; import assert from 'assert'; From 8b23a96e76876dd19664a5f8a3cc95a12609e163 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 2 Feb 2024 12:32:33 -0500 Subject: [PATCH 04/16] Bump some action scripts --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86e9ce97..d0d58414 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,9 +22,9 @@ jobs: if: ${{ matrix.os != 'windows-latest' }} run: | sudo -H python3 -m pip install packaging - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'npm' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3771d7a6..c2d68300 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,9 +24,9 @@ jobs: if: ${{ matrix.os != 'windows-latest' }} run: | sudo -H python3 -m pip install packaging - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - name: Specify MSVS version From 6009a4b80288433856db04e9e0d9ca0d9f8ce622 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 2 Feb 2024 12:51:22 -0500 Subject: [PATCH 05/16] Always upload artifacts --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d0d58414..9e290ed3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,8 @@ jobs: - name: Run integration tests if: ${{ matrix.os != 'ubuntu-latest' }} run: npm run test-ui - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 + if: always() with: name: logs path: | From 984899619902fe87a015238a0b748ea6a04e3076 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 2 Feb 2024 13:46:24 -0500 Subject: [PATCH 06/16] Limit artifact paths --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e290ed3..20f09503 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,7 +49,7 @@ jobs: if: always() with: name: logs + #/Users/runner/Library/Logs/mocha/ + # ~/.config/Before Dawn/logs/ path: | - # ~/.config/Before Dawn/logs/ - /Users/runner/Library/Logs/mocha/ - # C:\Users\runneradmin\AppData\Roaming\mocha\logs\ + C:\Users\runneradmin\AppData\Roaming\mocha\logs\ From e2a4ac93f0d8d281538c3efaaa36ba25daab313f Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 2 Feb 2024 15:31:36 -0500 Subject: [PATCH 07/16] Add custom logging output for tests --- src/main/index.js | 5 +++++ test/fixtures/test-savers.zip | Bin 4665 -> 8790 bytes test/helpers.js | 19 ++++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/index.js b/src/main/index.js index 446245b8..a777a534 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1881,6 +1881,11 @@ const windowMethods = { log.transports.file.level = "debug"; log.transports.file.maxSize = 1 * 1024 * 1024; +if (process.env.LOG_FILE) { + log.transports.file.resolvePathFn = () => process.env.LOG_FILE; +} + + log.info(`Hello from version: ${global.APP_VERSION_BASE} running in ${isDev ? "development" : "production"}`); if ( isDev ) { diff --git a/test/fixtures/test-savers.zip b/test/fixtures/test-savers.zip index 23acbe4def43af026c88fefc1974fbaeed662333..35105eb5f70b4888ad2773049127c7951822d7c4 100644 GIT binary patch delta 4165 zcmb_f%Z}SN6y0~(FJOT#YrWq<7flCg3M4@gPntzA2xyD4nUO?=qU~nIU+T6$((ef+ z+S0WvdX$+A3Ee5hx@Il=iCg*sp=kOHC=W8$}_F+s!8@`a?l2;7fG(OpZ>3ahUMi!HMEnA-&_ zbCm--sO;oE|GOzXH{|=!{kY*Dd9?pr1(l=zHnn|gi>g`pz8|KGWsyH8_>c6N|NCWh z@|1Bu9u2=_IPcQha8k5}n4o;;lX_PB+{!HmkW=_3b}VAteWkfl&x zuW*ewgd>`lL%!pnRf+3+{WEnOs1j-f30s$}C2#e>EZ3Zny7NYILxCeF1<592 z*Zf($CL|}h!ItZe^0g9Nc9@?Y5|(PfSwreKU8}vPb3RJP27{Dn2tKzFoNd?6v;-nKz${#epp z?m6SH$>FWWnn1w?2yKOET9qO&7Yp6rttG2nQP8@?tJYex%GUq4bIerLlj&Lx~6X9HoCI*c@un-C9mk!*soU=>x9au;ZyWYYNJ{9lDtG~7{ zl42Mx+4H{9FsStv7BVUSC>A0|s$_Q3?BkPJh@5Q|^rB`H--U&A`9BNKO+X2r#6nI* zaueYCB@2<7hFr3c0h@w{K)-IM*}*6e#>>P)Mq%$x4$q8PECfOa57`frnVg2mNL4zAzuM-8OJ05 delta 7 OcmccSvQuS)r4RrPIs)?m diff --git a/test/helpers.js b/test/helpers.js index e599038a..cac188f9 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -3,6 +3,7 @@ import * as path from "path"; import fs from 'fs-extra'; import * as tmp from "tmp"; +import temp from "temp"; import Conf from "conf"; @@ -158,14 +159,15 @@ export function removeLocalSource(workingDir) { * @param {boolean} quietMode * @returns application */ -export async function application(workingDir, quietMode=false) { +export async function application(workingDir, quietMode=false, logFile=undefined) { let env = { BEFORE_DAWN_DIR: workingDir, CONFIG_DIR: workingDir, SAVERS_DIR: workingDir, TEST_MODE: true, QUIET_MODE: quietMode, - ELECTRON_ENABLE_LOGGING: true + ELECTRON_ENABLE_LOGGING: true, + LOG_FILE: logFile }; let a = await playwright.launch({ @@ -185,14 +187,18 @@ export async function application(workingDir, quietMode=false) { // wait for the first window (our test shim) to open, and // hang onto it for later use shim = await a.firstWindow(); - app = a; + return a; } export async function dumpOutput(app) { console.log(app.logData); app.logData = []; + + if (path.existsSync(logPath)) { + console.log(fs.readFileSync(logPath)); + } } /** @@ -331,10 +337,17 @@ export async function callIpc(_app, method, opts={}) { await window.click("text=go"); } +let logPath; + export function setupTest(test) { test.timeout(testTimeout); test.retries(testRetryCount); + // eslint-disable-next-line mocha/no-top-level-hooks + beforeEach(function () { + logPath = temp.path(); + }); + // eslint-disable-next-line mocha/no-top-level-hooks afterEach(async function () { if (this.currentTest.state !== "passed") { From b727751accfebb94d5e882e12d5c3c1226b89c71 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 9 Feb 2024 09:24:08 -0500 Subject: [PATCH 08/16] Update zip fixture to work It's not working properly for some reason? --- test/fixtures/test-savers.zip | Bin 8790 -> 4665 bytes test/lib/package.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/test/fixtures/test-savers.zip b/test/fixtures/test-savers.zip index 35105eb5f70b4888ad2773049127c7951822d7c4..69477813f9a56caef881889b7e21fa6e3ab93bd5 100644 GIT binary patch delta 298 zcmccSvQuS(v0$d@vDDHEZU#n{7t9O{Kw_ecoiK(V1H)tkwg7ghlF99CJ(KV8OH51> zpDZoFGx3TbOlIR757x=T>}FU^(B$-ksheEKIcYMtAm8K)b|aYB=8f!ajFSbp?BN1o zTym^1&g5$T5IEafKxZQrh_E^p>yN8exmt{$&6UyToz#Qb6W+tSZ*WBKF!{^;)V+n4g2_?y+8 z;`)QeTKq!edi-tUdhzV>>e>b2#aet=f0OuBKL53`UC4ahT#MgpUX6cgmjD0XSiA84 zOSSl&&-veL+ zI*t#l(09QEhLP=iT_A9x#t9%Cd!FqLf$aekPN3rlF7(hcL#J5kj35F=5C9JwE(FL2 zH=*T+5Ud+hZvl7+4f7E}O${3X0t9{EN1p@%3#ycs=Opo5;8Ld)9Y+xK4e}EhXax9) z5%QMrm?Q_h?DE>ac@S7)TL~vh`~EPzA9f}WUD*}LXXx=eJaU7UBuR?i>RIM3XndyM zls=u04(Az{)Y9;6-!PN31|hT}MohGP;^ev=cF*7=Uc|}5N3HZRGLm9Aqt((VW~Zjo z>Z1rj7i7jsykADiX$*YF_V}&Pe*gz4;`?bWwMkjzAs3 zI4}(adx-qpF+5`kLtvW@+_7EQ1(G0uzGHa%*{v=Jv`Shdm9T;1M{ql9nBE|S&`Z3* zA>)8Mf=(qHqH*xKwF#jKO@^&@yOj5cU@yVkI87Ln2KNK#Z6&34&-P4z`V4la5STtl ztR+31=*empOjAuP(WHr%lFE>5JCqg zqXiE}aInt;OXZQKa<}|&6Hd1?EDI#hfxrl%AR;NE`l6N9cf?_LY+1JF82yMF_%5G4 z=S?FdN662{d@^A@IL)1|GOTiBjg*Gd;>+a$Ge(uef=CVL2pJ*Tu?PDk$1E$h@W# zAC6hla#mJ2+p$yIaatz{Q!sZd>70g-Xt1Ya287cBzyKtJvG8t?d#`jj@Wg zjVtyx!RlSP&FLKqyI43UMU&}Nse&NU;EaYW5Y7xv^>alyCq<)DgTLcl!a{PS*r68Pd07aa5mXin$&D&9mDojDNC8%<3OLR} za7IHaHgo~js1i7hg_I!5-4w)NAvmGg5qEADk{doo;(G}{IEjTQU7V~Mk?YXAo6SN> zD^x<$wy0zwg}6o$i{mT=7w_J=u&z_O7iS?ET;kMYFNWEhP$gp^aZ8;3p++q<1`Ekm J>)JdEc>-?x3nl;n diff --git a/test/lib/package.js b/test/lib/package.js index 5b403ba6..fba051a8 100644 --- a/test/lib/package.js +++ b/test/lib/package.js @@ -95,11 +95,11 @@ describe("Package", function() { it("calls downloadFile", async function() { const data = JSON.parse(fs.readFileSync("./test/fixtures/release.json")); - sandbox.stub(p, "getReleaseInfo"). returns(data); var df = sandbox.stub(p, "downloadFile").resolves(zipPath); + sandbox.stub(p, "zipToSavers").resolves({}); await p.checkLatestRelease(); assert(df.calledOnce); From ec0057feb6596038d8f0b86dfa826033c7172b46 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Fri, 9 Feb 2024 09:44:43 -0500 Subject: [PATCH 09/16] Use proper method --- test/helpers.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/test/helpers.js b/test/helpers.js index cac188f9..bfd82350 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -170,14 +170,16 @@ export async function application(workingDir, quietMode=false, logFile=undefined LOG_FILE: logFile }; + let a = await playwright.launch({ path: electron, args: [path.join(__dirname, "..", "output", "main.js")], env: env }); + a.logData = []; - + a.on("window", (w) => { w.on("console", (payload) => { a.logData.push(payload); @@ -193,10 +195,12 @@ export async function application(workingDir, quietMode=false, logFile=undefined } export async function dumpOutput(app) { - console.log(app.logData); - app.logData = []; + if (app) { + console.log(app.logData); + app.logData = []; + } - if (path.existsSync(logPath)) { + if (fs.existsSync(logPath)) { console.log(fs.readFileSync(logPath)); } } From 5279cb71467d13bc7bf80f2e59ef3c70bcc860c1 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Mon, 19 Feb 2024 10:49:04 -0500 Subject: [PATCH 10/16] Update shim lookup code. Fix some windows test issues --- package-lock.json | 996 +--------------------------------- package.json | 5 +- test/fixtures/test-savers.zip | Bin 4665 -> 10566 bytes test/helpers.js | 22 +- test/ui/new.js | 52 +- test/ui/tray.js | 4 +- 6 files changed, 54 insertions(+), 1025 deletions(-) diff --git a/package-lock.json b/package-lock.json index 53693430..ad6ae311 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,10 @@ "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", - "detect-fullscreen": "^0.0.8", + "detect-fullscreen": "muffinista/detect-fullscreen", "electron-is-dev": "^2.0.0", "electron-log": "^5.1.0-beta.1", - "forcefocus": "github:muffinista/forcefocus", + "forcefocus": "muffinista/forcefocus", "fs-extra": "^11.1.0", "glob": "^9.3.5", "goto-sleep": "muffinista/goto-sleep", @@ -62,7 +62,6 @@ "nock": "^13.3.1", "node-abi": "^3.52.0", "node-fetch": "^2.6.7", - "node-gyp": "^10.0.1", "node-loader": "^2.0.0", "normalize.css": "^8.0.1", "nyc": "^15.0.0", @@ -3492,96 +3491,6 @@ "node": ">= 8" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "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, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/move-file": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", @@ -4722,15 +4631,6 @@ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -5854,148 +5754,6 @@ "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", - "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/cacache/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, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/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, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/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, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "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, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "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, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/cacache/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, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacache/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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -7091,9 +6849,9 @@ }, "node_modules/detect-fullscreen": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/detect-fullscreen/-/detect-fullscreen-0.0.8.tgz", - "integrity": "sha512-lf58S9NSLlzpuMNM0xN1aWKNuLLzPGhRGJWpSbvOuBJ3q89W075Mr1scxQOfzdJ0YqSlcMnTwSTvAO+lc5Z+sw==", - "hasInstallScript": true + "resolved": "git+ssh://git@github.com/muffinista/detect-fullscreen.git#cd9c988337bffc73f11bd5c09f1ced7bcc82fe0b", + "hasInstallScript": true, + "license": "MIT" }, "node_modules/detect-libc": { "version": "2.0.2", @@ -9312,8 +9070,8 @@ } }, "node_modules/forcefocus": { - "version": "1.1.0", - "resolved": "git+ssh://git@github.com/muffinista/forcefocus.git#c79c62e84dd0d663929cef493fa340177aa9c1a9", + "version": "1.1.1", + "resolved": "git+ssh://git@github.com/muffinista/forcefocus.git#ee1e95eb909169716b6c9fe1c296d91a5b58906b", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -9761,7 +9519,7 @@ "node_modules/goto-sleep": { "name": "@muffinista/goto-sleep", "version": "0.0.6", - "resolved": "git+ssh://git@github.com/muffinista/goto-sleep.git#f4f8db7141c13ab8046f56e4a09670b134100b5f", + "resolved": "git+ssh://git@github.com/muffinista/goto-sleep.git#48805120c8f793c8d51477e01a557d1952c3042f", "hasInstallScript": true, "license": "MIT" }, @@ -11629,37 +11387,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-fetch-happen": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", - "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", - "dev": true, - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -11917,53 +11644,6 @@ "node": ">=8" } }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "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, - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "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, - "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", @@ -12520,152 +12200,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-gyp": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", - "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/node-gyp/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, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/node-gyp/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, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/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, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/node-gyp/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, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, "node_modules/node-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", @@ -12717,21 +12251,6 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", - "dev": true, - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14114,15 +13633,6 @@ "renderkid": "^2.0.6" } }, - "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -15587,32 +15097,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -15753,27 +15237,6 @@ "dev": true, "optional": true }, - "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "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, - "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", @@ -16809,30 +16272,6 @@ "node": ">=4" } }, - "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, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "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, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -20460,76 +19899,6 @@ "fastq": "^1.6.0" } }, - "@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "dependencies": { - "agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "requires": { - "debug": "^4.3.4" - } - }, - "http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dev": true, - "requires": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - } - }, - "https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "4" - } - }, - "lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true - } - } - }, - "@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, - "requires": { - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "@npmcli/move-file": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", @@ -21521,12 +20890,6 @@ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, - "abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true - }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -22388,105 +21751,6 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, - "cacache": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", - "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "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, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "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, - "requires": { - "minipass": "^7.0.3" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - }, - "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, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "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 - } - } - }, "cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -23290,9 +22554,8 @@ "dev": true }, "detect-fullscreen": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/detect-fullscreen/-/detect-fullscreen-0.0.8.tgz", - "integrity": "sha512-lf58S9NSLlzpuMNM0xN1aWKNuLLzPGhRGJWpSbvOuBJ3q89W075Mr1scxQOfzdJ0YqSlcMnTwSTvAO+lc5Z+sw==" + "version": "git+ssh://git@github.com/muffinista/detect-fullscreen.git#cd9c988337bffc73f11bd5c09f1ced7bcc82fe0b", + "from": "detect-fullscreen@muffinista/detect-fullscreen" }, "detect-libc": { "version": "2.0.2", @@ -24954,8 +24217,8 @@ } }, "forcefocus": { - "version": "git+ssh://git@github.com/muffinista/forcefocus.git#c79c62e84dd0d663929cef493fa340177aa9c1a9", - "from": "forcefocus@github:muffinista/forcefocus", + "version": "git+ssh://git@github.com/muffinista/forcefocus.git#ee1e95eb909169716b6c9fe1c296d91a5b58906b", + "from": "forcefocus@muffinista/forcefocus", "requires": { "bindings": "^1.5.0" } @@ -25274,7 +24537,7 @@ } }, "goto-sleep": { - "version": "git+ssh://git@github.com/muffinista/goto-sleep.git#f4f8db7141c13ab8046f56e4a09670b134100b5f", + "version": "git+ssh://git@github.com/muffinista/goto-sleep.git#48805120c8f793c8d51477e01a557d1952c3042f", "from": "goto-sleep@muffinista/goto-sleep" }, "graceful-fs": { @@ -26652,33 +25915,6 @@ "semver": "^6.0.0" } }, - "make-fetch-happen": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", - "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", - "dev": true, - "requires": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "dependencies": { - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - } - } - }, "matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -26869,43 +26105,6 @@ "yallist": "^4.0.0" } }, - "minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - }, - "dependencies": { - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - } - } - }, - "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, - "requires": { - "encoding": "^0.1.13", - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "dependencies": { - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - } - } - }, "minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -27315,103 +26514,6 @@ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, - "node-gyp": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", - "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" - }, - "dependencies": { - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "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, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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 - }, - "which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "requires": { - "isexe": "^3.1.1" - } - } - } - }, "node-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", @@ -27449,15 +26551,6 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", - "dev": true, - "requires": { - "abbrev": "^2.0.0" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -28455,12 +27548,6 @@ "renderkid": "^2.0.6" } }, - "proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -29567,28 +28654,6 @@ "smart-buffer": "^4.2.0" } }, - "socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", - "dev": true, - "requires": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "dependencies": { - "agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "requires": { - "debug": "^4.3.4" - } - } - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -29705,23 +28770,6 @@ "dev": true, "optional": true }, - "ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - }, - "dependencies": { - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - } - } - }, "stat-mode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", @@ -30484,24 +29532,6 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, - "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, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "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, - "requires": { - "imurmurhash": "^0.1.4" - } - }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", diff --git a/package.json b/package.json index 4688de5b..2fea37b9 100644 --- a/package.json +++ b/package.json @@ -38,10 +38,10 @@ "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", - "detect-fullscreen": "^0.0.8", + "detect-fullscreen": "muffinista/detect-fullscreen", "electron-is-dev": "^2.0.0", "electron-log": "^5.1.0-beta.1", - "forcefocus": "github:muffinista/forcefocus", + "forcefocus": "muffinista/forcefocus", "fs-extra": "^11.1.0", "glob": "^9.3.5", "goto-sleep": "muffinista/goto-sleep", @@ -87,7 +87,6 @@ "nock": "^13.3.1", "node-abi": "^3.52.0", "node-fetch": "^2.6.7", - "node-gyp": "^10.0.1", "node-loader": "^2.0.0", "normalize.css": "^8.0.1", "nyc": "^15.0.0", diff --git a/test/fixtures/test-savers.zip b/test/fixtures/test-savers.zip index 69477813f9a56caef881889b7e21fa6e3ab93bd5..eb77a274c26853165e7da77a65ff30904479799a 100644 GIT binary patch literal 10566 zcmchd2|SeR_rNDhWGy92;w9b6GG@%KkTqMfCXozY8D?X~RK!)Eby@xovuFIGRS_)fASImrqVp-%TB zQJJIWB)OYgzz#zY=EF9Jv+%aq&HjnSekyP?HxeY=n?a+F#5sp;SeX5s6z9@-ZQ)A9 z+|{4H#x5ziDDD`JW#dblnCC}@YigOwcZHqJ3h%7QrkK|A z7~xc6vqXC3za+fVkGGMq9SG=8pGT-k=y)=RuTwYUTH*8lT~cznK^E^^dlqCxFSCkS z)o2!&%{-lGj4M8x3$HfIs(?{qmRb{!85$MxR=9e<31xkI9eklGuHtLIq$H{C;rv@0 z5*plkaIa0T92RzwtXck&AT>Y8(z1q>+9YeP^zz){Yj<;pJAL$SCkS0}chJc@^fV@j zC-NgEs_meSk*-{F+SPpVS)mptdb{`E4Kb38^Ic)8xF$g;NvGpo&D$E}a86T~v0G?O zj*ZhQqFFCX8vwS0II z7x$@rSZE7<)rV4VN0<3}NfKH7o31M;FuXygoM{mLjq#&d^{EX7vgE7%iWq zPWn3W6Up+@XL2{_g~r}H6OHk$)asT^L8=O=JZss0NnbMjOJ`ftSMZpD9X7}5-{3UhLMK909;HT{d?PHmahdV(JNe32OB|4cZ)yd_24fz4HkZC< z<>q-Z*ZN-jrA>1&1K)Jwn{Tx2jjxutgzF7xR7dGtSavIQ$&m8$uq*9}UGJF5S>I4) z-{dpuckCHps5Ks`zkbbvmSSX=|;;B#3&ev6@Go29qumLzog~( zS=zRt4CCXU4RK40G*j`N=p5OBs8gbCcF{RYT5mh*{juag+6rp*2iSsY@^QE|@VNEj z+S`jl0zR|qBC#JAtEFv-pdKP=AxS;&{>@9axKO3)4cG-Z7%0_-MTv4)mXyKFe zdz&`aqpW=H(p)Il&zBy*VvHSV|^bNYxpXoucPV8 zd6&C(%W&uVjH<(_=ghNt}8VF-wm+E%Klvg``p4miWJq37ALi>_75rS&=X*V9?S zRr#Bx`eeL^)@~6>ExGBWJ2x?&A1hRLBd+y1TH$DAy?<+Dj8hr4*foc*>_%VuW%cuN zEnR2!SmQq(ywXwDG+eeRyDNJ8x`uZ+?RQ0)XG8Pj^3T2Yl?)I%^%dVEI(yqW?HA7O zH=DQTIbK!@&bCEI*sg4UyX5-S*KN4npOuFN#zDrI1hV;)$itu${d~StQRY_|PiM*@qNMyL{_u6fYr!cJt718&vLks(>A|uP^h<$I9TSN!k!_z4GU@7J!!3t($VEdb()Uf#Lq}F4)9uyfw>_7(gq2~lgWk4v z=k%&62t=ehg~=Sq68__xfWPWr$Z&?2MJY~B8#@#+CDD?;p(ZR+iWn@G|A`<1L<1>hk~}rPmrk zwkz;a2bafU3(iaJXnoMAaXv~oSuJb8igfV4SB$y)k{DrJF)yzMA|Z8w-3qM+-vo1& zp5r9_nA>?K2`m+cqI7W0nWHZbFSMImb!jh;dk~Fc_KsB^(6nefTy|Hb%ab{~pG#eN zZX6)t@9h%cx3y9MZp1}r=&n_|9HLZ zB(O^7<15{aa6(zmi?+;Jy*hQSpTu{r6g_O4)Zu-GghOsiy|X?l3WbkIt@?Cqqgei_ zf(W~QiJ<%Tu7W}O8#{ui2$Ew=h_3S zZ|?sPkH!K)2Rp=+UnY9k+*L77QpmMf;pj3Tk#=%}>Wx!QeXl`vX&vcGwc}a)51vmteOR(o-Ke%?HAu3#cD&=! zLJPOGXBrZ*sFdREap{|G!mUyl42Z7GJCz@T5$Qu6V>u6oKKqko&DwY`Sdg*H=*$kE zIu%TLpM>qJgo6F$f;OFMNfiRUf(lB>N41=qdUq|yzFNf{VM$>)OQvL&{}>8b8aF+<&7naL+ssuO<36Hl!tm z5V52BiEu{7;L|pKiIB1{!&@IEdKV2;-#oQ<7)QqMWm*n z+?B}9G;|taJKCRV!6{>(l%5&5mPQ@bL~3EMTAFw`N)xjQa3WDXX`2AR1SFGb zfTtgg0&qS+BGIT?00PdILI8gLR4R$O1t3uY4=?~E)94hC$`lpiViZ4almRjUBApIU zi4+iE(g1zXlja8khQvTBS9QX;x*tgN2xhAV5=l&etqHi%XiPmiotrKSF|PY7QS`W| zKLZ5Zi0l_Sk?92(XgS+6*cotkr;$liXSO>-B9rKBL31aPo$Wvh-I+Vox%9;-2^k3 zAO#rp_S1?CY3}}E>K)RqTl|P_0AnO0fF=${KoIa~1csX?4zf$+?|tD( zB7<5Q8k1V^7p1}Qb9bf?NmLCuobxqWDHktzz-yYoU_E;3v~D4rc8ji9uYLA`B{R2Hlw;+wIFBK zh!)_*WYQVzgh4t*eYD~kaEiaDCy7cXx-sDHG>XRPuQk}aiPF^gez0?nR4N!a7Bd&W z1Wn}lSus+JV+zwQlAs9*m%$|ZG3`k1KI|lObpz=!HaPt07PKu}rjf^^#>3hIGTDEr z;Bu&dxQf*WkFq#d37(gVkGeic}056gU2#}_v8cGw6KtS}rXWQ4GyEp-|mOv7j ztUiq}5&@}($#Mh$iO@n3v=9h57OgqH;D3ed2}Ys2G&5XJP>1AYCb*uU3rW%xxQ2>i zASwDMxW?ewhr7CGpgqwRzc!c#I=DltaDpdDv2(>WH-+EC^>0K4+4|qc^>4U=wA3hS z|07)gNFckl(9pg8=eV9=60(Ui!8JGCkz;5oicU~~?9J4;o*)fL@eFXyP4zc$J;4N| z+kcH~s3s1Q(*GH*ApvMYFDo;{HAEYQfec|Y!ZlPG3#riQaXmo`lCl39*HFKB$g%nh zTu)GgOmf_C4V8z^Fx+qrkw>E;J1`}#A;MTq$Qovf>mT|kI2r@#NiMjCh-2^&@hNdV zK^TI(DRGTPYhiG3Bo5MR{~p(4Mj=^bXMHBO>yg;U)FD&rjB!1t3n>t8xc)ARhotDA z;Tn(8RNrd3ApqxKu+b4~x&9|yk9mR=%JjINLgBY@J>#gLyEO6-Ilpnc#^7h{2C|#~ zJ+3(k#KScwjAH*1*JCE3C*=%o*FP$n6Apx@)8l%~8Kf^Wf>nT)!7uRDZ zAk{rXT#ss^paL9G)8cw6c`mnWNMGTwke=j@>rvwb3?$>fg=>yJ0gfX;ns_=~kBZ}Qkd$%9 M^_VauwozRFA0Wv{Pk+r4RrP9s= 0 ) { let store = new Conf({cwd: workingDir}); store.set(attrs); } @@ -186,9 +184,9 @@ export async function application(workingDir, quietMode=false, logFile=undefined }); }); - // wait for the first window (our test shim) to open, and - // hang onto it for later use - shim = await a.firstWindow(); + // wait for the first window (our test shim) to open + await a.firstWindow(); + app = a; return a; @@ -333,16 +331,16 @@ export async function waitForWindow(app, title, skipAssert) { * @param {*} method * @param {*} opts */ -export async function callIpc(_app, method, opts={}) { - const window = shim; +export async function callIpc(app, method, opts={}) { + await waitForWindow(app, 'test shim'); + const window = await getWindowByTitle(app, 'test shim'); + await window.fill("#ipc", method); await window.fill("#ipcopts", JSON.stringify(opts)); await window.click("text=go"); } -let logPath; - export function setupTest(test) { test.timeout(testTimeout); test.retries(testRetryCount); diff --git a/test/ui/new.js b/test/ui/new.js index 1a476aaa..b54596eb 100644 --- a/test/ui/new.js +++ b/test/ui/new.js @@ -26,32 +26,32 @@ describe("Add New", function() { app = await helpers.application(workingDir, true); }); - describe("when not setup", function() { - beforeEach(async function() { - await helpers.callIpc(app, `open-window add-new ${screensaverUrl}`); - }); - - it("shows alert if not setup", async function() { - const window = await helpers.waitFor(app, "new"); - const elem = await window.$("body"); - const text = await elem.innerText(); - assert(text.lastIndexOf("set a local directory") !== -1); - }); - - // it.skip("can set local source", async function() { - // await helpers.waitForWindow(app, windowTitle); - // await helpers.waitForText(app, "body", "set a local directory", true); - - // await helpers.click(app, "button.pick"); - // await helpers.click(app, "button.save"); - - // await helpers.sleep(100); - - // assert.equal("/not/a/real/path", currentPrefs().localSource); - // const res = await helpers.getElementText(app, "body"); - // assert(res.lastIndexOf("Use this form") !== -1); - // }); - }); + // describe("when not setup", function() { + // beforeEach(async function() { + // await helpers.callIpc(app, `open-window add-new ${screensaverUrl}`); + // }); + + // it("shows alert if not setup", async function() { + // const window = await helpers.waitFor(app, "new"); + // const elem = await window.$("body"); + // const text = await elem.innerText(); + // assert(text.lastIndexOf("set a local directory") !== -1); + // }); + + // it.skip("can set local source", async function() { + // await helpers.waitForWindow(app, windowTitle); + // await helpers.waitForText(app, "body", "set a local directory", true); + + // await helpers.click(app, "button.pick"); + // await helpers.click(app, "button.save"); + + // await helpers.sleep(100); + + // assert.equal("/not/a/real/path", currentPrefs().localSource); + // const res = await helpers.getElementText(app, "body"); + // assert(res.lastIndexOf("Use this form") !== -1); + // }); + // }); describe("when setup", function() { let window; diff --git a/test/ui/tray.js b/test/ui/tray.js index 67b88a2a..cc89d89c 100644 --- a/test/ui/tray.js +++ b/test/ui/tray.js @@ -25,7 +25,9 @@ describe("tray", function() { }); app = await helpers.application(workingDir, true); - window = helpers.shim; + await helpers.waitForWindow(app, 'test shim'); + + window = await helpers.getWindowByTitle(app, 'test shim'); }); describe("run now", function() { From 1a0dfd94343bc41b958f5e371e619e921d2204a0 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Mon, 19 Feb 2024 11:26:29 -0500 Subject: [PATCH 11/16] Update some zip handling --- package-lock.json | 53 +++++++++++++++++++++++++--------- package.json | 2 +- src/lib/package.js | 2 +- test/fixtures/test-savers.zip | Bin 10566 -> 4665 bytes test/lib/package.js | 1 + 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad6ae311..43493db7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "proper-lockfile": "^4.1.1", "rimraf": "^5.0.0", "temp": "^0.9.0", - "yauzl": "^2.10.0" + "yauzl": "^3.1.0" }, "devDependencies": { "@arkweid/lefthook": "^0.7.7", @@ -8749,6 +8749,16 @@ "@types/yauzl": "^2.9.1" } }, + "node_modules/extract-zip/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==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/extsprintf": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", @@ -8837,7 +8847,8 @@ "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "dependencies": { "pend": "~1.2.0" } @@ -13110,7 +13121,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/periscopic": { "version": "3.1.0", @@ -17423,12 +17434,15 @@ } }, "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.0.tgz", + "integrity": "sha512-zbff6SaAPyewVextulqeBjJm+1ZhS69vSN7cRpqVD7jMNSE9oXEdQ1SGF+ydfB+gKE2a3GiWfXf/pnwVZ1/tOA==", "dependencies": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/yocto-queue": { @@ -23960,6 +23974,18 @@ "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" + }, + "dependencies": { + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } } }, "extsprintf": { @@ -24037,7 +24063,8 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "requires": { "pend": "~1.2.0" } @@ -27208,7 +27235,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "periscopic": { "version": "3.1.0", @@ -30380,12 +30407,12 @@ } }, "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.0.tgz", + "integrity": "sha512-zbff6SaAPyewVextulqeBjJm+1ZhS69vSN7cRpqVD7jMNSE9oXEdQ1SGF+ydfB+gKE2a3GiWfXf/pnwVZ1/tOA==", "requires": { "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "pend": "~1.2.0" } }, "yocto-queue": { diff --git a/package.json b/package.json index 2fea37b9..bfea5821 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "proper-lockfile": "^4.1.1", "rimraf": "^5.0.0", "temp": "^0.9.0", - "yauzl": "^2.10.0" + "yauzl": "^3.1.0" }, "devDependencies": { "@arkweid/lefthook": "^0.7.7", diff --git a/src/lib/package.js b/src/lib/package.js index f7c873c5..2744bb0c 100644 --- a/src/lib/package.js +++ b/src/lib/package.js @@ -140,7 +140,7 @@ export default class Package { return new Promise(function (resolve, reject) { lockfile.lock(dest, { realpath: false, stale: 30000 }).then((release) => { - yauzl.open(tempName, {lazyEntries: true}, (err, zipfile) => { + yauzl.open(tempName, {lazyEntries: true, validateEntrySizes: false}, (err, zipfile) => { if (err) { release().then(() => { reject(err); diff --git a/test/fixtures/test-savers.zip b/test/fixtures/test-savers.zip index eb77a274c26853165e7da77a65ff30904479799a..091e68b1b4fae7a4007a0d594f4cfe3b54a1d1b8 100644 GIT binary patch delta 402 zcmX>Wv{QvIz?+$civa}GqJtwQ@+qpmXtC$r1e(GSEq0KiFAbL` z`>;z1f;5}^WcjoK4cY+2@)Hv!CQA$OaC0&+!wj5we?C~9jzWTo6DtG5Dn6*X22^#M z_c2DZvVcsSEX%HeYz;&(i`|F=X6EE2?6V=F&KwBQ&9xl;j1XY~EK!)Eby@xovuFIGRS_)fASImrqVp-%TB zQJJIWB)OYgzz#zY=EF9Jv+%aq&HjnSekyP?HxeY=n?a+F#5sp;SeX5s6z9@-ZQ)A9 z+|{4H#x5ziDDD`JW#dblnCC}@YigOwcZHqJ3h%7QrkK|A z7~xc6vqXC3za+fVkGGMq9SG=8pGT-k=y)=RuTwYUTH*8lT~cznK^E^^dlqCxFSCkS z)o2!&%{-lGj4M8x3$HfIs(?{qmRb{!85$MxR=9e<31xkI9eklGuHtLIq$H{C;rv@0 z5*plkaIa0T92RzwtXck&AT>Y8(z1q>+9YeP^zz){Yj<;pJAL$SCkS0}chJc@^fV@j zC-NgEs_meSk*-{F+SPpVS)mptdb{`E4Kb38^Ic)8xF$g;NvGpo&D$E}a86T~v0G?O zj*ZhQqFFCX8vwS0II z7x$@rSZE7<)rV4VN0<3}NfKH7o31M;FuXygoM{mLjq#&d^{EX7vgE7%iWq zPWn3W6Up+@XL2{_g~r}H6OHk$)asT^L8=O=JZss0NnbMjOJ`ftSMZpD9X7}5-{3UhLMK909;HT{d?PHmahdV(JNe32OB|4cZ)yd_24fz4HkZC< z<>q-Z*ZN-jrA>1&1K)Jwn{Tx2jjxutgzF7xR7dGtSavIQ$&m8$uq*9}UGJF5S>I4) z-{dpuckCHps5Ks`zkbbvmSSX=|;;B#3&ev6@Go29qumLzog~( zS=zRt4CCXU4RK40G*j`N=p5OBs8gbCcF{RYT5mh*{juag+6rp*2iSsY@^QE|@VNEj z+S`jl0zR|qBC#JAtEFv-pdKP=AxS;&{>@9axKO3)4cG-Z7%0_-MTv4)mXyKFe zdz&`aqpW=H(p)Il&zBy*VvHSV|^bNYxpXoucPV8 zd6&C(%W&uVjH<(_=ghNt}8VF-wm+E%Klvg``p4miWJq37ALi>_75rS&=X*V9?S zRr#Bx`eeL^)@~6>ExGBWJ2x?&A1hRLBd+y1TH$DAy?<+Dj8hr4*foc*>_%VuW%cuN zEnR2!SmQq(ywXwDG+eeRyDNJ8x`uZ+?RQ0)XG8Pj^3T2Yl?)I%^%dVEI(yqW?HA7O zH=DQTIbK!@&bCEI*sg4UyX5-S*KN4npOuFN#zDrI1hV;)$itu${d~StQRY_|PiM*@qNMyL{_u6fYr!cJt718&vLks(>A|uP^h<$I9TSN!k!_z4GU@7J!!3t($VEdb()Uf#Lq}F4)9uyfw>_7(gq2~lgWk4v z=k%&62t=ehg~=Sq68__xfWPWr$Z&?2MJY~B8#@#+CDD?;p(ZR+iWn@G|A`<1L<1>hk~}rPmrk zwkz;a2bafU3(iaJXnoMAaXv~oSuJb8igfV4SB$y)k{DrJF)yzMA|Z8w-3qM+-vo1& zp5r9_nA>?K2`m+cqI7W0nWHZbFSMImb!jh;dk~Fc_KsB^(6nefTy|Hb%ab{~pG#eN zZX6)t@9h%cx3y9MZp1}r=&n_|9HLZ zB(O^7<15{aa6(zmi?+;Jy*hQSpTu{r6g_O4)Zu-GghOsiy|X?l3WbkIt@?Cqqgei_ zf(W~QiJ<%Tu7W}O8#{ui2$Ew=h_3S zZ|?sPkH!K)2Rp=+UnY9k+*L77QpmMf;pj3Tk#=%}>Wx!QeXl`vX&vcGwc}a)51vmteOR(o-Ke%?HAu3#cD&=! zLJPOGXBrZ*sFdREap{|G!mUyl42Z7GJCz@T5$Qu6V>u6oKKqko&DwY`Sdg*H=*$kE zIu%TLpM>qJgo6F$f;OFMNfiRUf(lB>N41=qdUq|yzFNf{VM$>)OQvL&{}>8b8aF+<&7naL+ssuO<36Hl!tm z5V52BiEu{7;L|pKiIB1{!&@IEdKV2;-#oQ<7)QqMWm*n z+?B}9G;|taJKCRV!6{>(l%5&5mPQ@bL~3EMTAFw`N)xjQa3WDXX`2AR1SFGb zfTtgg0&qS+BGIT?00PdILI8gLR4R$O1t3uY4=?~E)94hC$`lpiViZ4almRjUBApIU zi4+iE(g1zXlja8khQvTBS9QX;x*tgN2xhAV5=l&etqHi%XiPmiotrKSF|PY7QS`W| zKLZ5Zi0l_Sk?92(XgS+6*cotkr;$liXSO>-B9rKBL31aPo$Wvh-I+Vox%9;-2^k3 zAO#rp_S1?CY3}}E>K)RqTl|P_0AnO0fF=${KoIa~1csX?4zf$+?|tD( zB7<5Q8k1V^7p1}Qb9bf?NmLCuobxqWDHktzz-yYoU_E;3v~D4rc8ji9uYLA`B{R2Hlw;+wIFBK zh!)_*WYQVzgh4t*eYD~kaEiaDCy7cXx-sDHG>XRPuQk}aiPF^gez0?nR4N!a7Bd&W z1Wn}lSus+JV+zwQlAs9*m%$|ZG3`k1KI|lObpz=!HaPt07PKu}rjf^^#>3hIGTDEr z;Bu&dxQf*WkFq#d37(gVkGeic}056gU2#}_v8cGw6KtS}rXWQ4GyEp-|mOv7j ztUiq}5&@}($#Mh$iO@n3v=9h57OgqH;D3ed2}Ys2G&5XJP>1AYCb*uU3rW%xxQ2>i zASwDMxW?ewhr7CGpgqwRzc!c#I=DltaDpdDv2(>WH-+EC^>0K4+4|qc^>4U=wA3hS z|07)gNFckl(9pg8=eV9=60(Ui!8JGCkz;5oicU~~?9J4;o*)fL@eFXyP4zc$J;4N| z+kcH~s3s1Q(*GH*ApvMYFDo;{HAEYQfec|Y!ZlPG3#riQaXmo`lCl39*HFKB$g%nh zTu)GgOmf_C4V8z^Fx+qrkw>E;J1`}#A;MTq$Qovf>mT|kI2r@#NiMjCh-2^&@hNdV zK^TI(DRGTPYhiG3Bo5MR{~p(4Mj=^bXMHBO>yg;U)FD&rjB!1t3n>t8xc)ARhotDA z;Tn(8RNrd3ApqxKu+b4~x&9|yk9mR=%JjINLgBY@J>#gLyEO6-Ilpnc#^7h{2C|#~ zJ+3(k#KScwjAH*1*JCE3C*=%o*FP$n6Apx@)8l%~8Kf^Wf>nT)!7uRDZ zAk{rXT#ss^paL9G)8cw6c`mnWNMGTwke=j@>rvwb3?$>fg=>yJ0gfX;ns_=~kBZ}Qkd$%9 M^_VauwozRFA0 Date: Mon, 19 Feb 2024 11:38:04 -0500 Subject: [PATCH 12/16] Update nock --- package-lock.json | 16 +++++++--------- package.json | 2 +- src/lib/package.js | 6 ++---- test/lib/package.js | 36 ++++++++++++++++++------------------ 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43493db7..21998de0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,7 +59,7 @@ "jimp": "^0.22.8", "mini-css-extract-plugin": "^2.0.0", "mocha": "^10.2.0", - "nock": "^13.3.1", + "nock": "^14.0.0-beta.3", "node-abi": "^3.52.0", "node-fetch": "^2.6.7", "node-loader": "^2.0.0", @@ -12110,14 +12110,13 @@ } }, "node_modules/nock": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.3.tgz", - "integrity": "sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==", + "version": "14.0.0-beta.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.0-beta.3.tgz", + "integrity": "sha512-LBQvyFWBv8t0AiKnq9LsCXgcwZF94XpDO2P2YBnTcYY3pIk/cQcnaNSA3m3mgqtQ/zp9kMh89tDL4Soecn0vBg==", "dev": true, "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", "propagate": "^2.0.0" }, "engines": { @@ -26468,14 +26467,13 @@ } }, "nock": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.3.tgz", - "integrity": "sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==", + "version": "14.0.0-beta.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.0-beta.3.tgz", + "integrity": "sha512-LBQvyFWBv8t0AiKnq9LsCXgcwZF94XpDO2P2YBnTcYY3pIk/cQcnaNSA3m3mgqtQ/zp9kMh89tDL4Soecn0vBg==", "dev": true, "requires": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", "propagate": "^2.0.0" } }, diff --git a/package.json b/package.json index bfea5821..79e2013b 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "jimp": "^0.22.8", "mini-css-extract-plugin": "^2.0.0", "mocha": "^10.2.0", - "nock": "^13.3.1", + "nock": "^14.0.0-beta.3", "node-abi": "^3.52.0", "node-fetch": "^2.6.7", "node-loader": "^2.0.0", diff --git a/src/lib/package.js b/src/lib/package.js index 2744bb0c..51052ad0 100644 --- a/src/lib/package.js +++ b/src/lib/package.js @@ -43,8 +43,6 @@ export default class Package { this.defaultHeaders = { "User-Agent": "Before Dawn" }; - - this.fetch = _attrs.fetch || global.fetch; } attrs() { @@ -61,7 +59,7 @@ export default class Package { return this.data; } - this.data = await this.fetch(this.url, this.defaultHeaders) + this.data = await fetch(this.url, this.defaultHeaders) .then(res => res.json()) .then((json) => { const remoteVersion = json.tag_name.replace(/^v/, ""); @@ -123,7 +121,7 @@ export default class Package { dest = temp.path({dir: os.tmpdir(), suffix: ".zip"}); } - const res = await this.fetch(url, this.defaultHeaders); + const res = await fetch(url, this.defaultHeaders); // https://stackoverflow.com/questions/37614649/how-can-i-download-and-save-a-file-using-the-fetch-api-node-js const fileStream = fs.createWriteStream(dest); diff --git a/test/lib/package.js b/test/lib/package.js index 7439629c..333b18ce 100644 --- a/test/lib/package.js +++ b/test/lib/package.js @@ -120,24 +120,24 @@ describe("Package", function() { }); }); - // describe("downloadFile", function() { - // var testUrl = "https://test.file/savers.zip"; - // beforeEach(function() { - // nock("https://test.file"). - // get("/savers.zip"). - // reply(200, () => { - // return fs.createReadStream(zipPath); - // }); - // rimrafSync(workingDir); - // fs.mkdirSync(workingDir); - // }); - - // xit("works", async function() { - // let p = new Package(attrs); - // const dest = await p.downloadFile(testUrl); - // assert(fs.existsSync(dest)); - // }); - // }); + describe("downloadFile", function() { + var testUrl = "https://test.file/savers.zip"; + beforeEach(function() { + nock("https://test.file"). + get("/savers.zip"). + reply(200, () => { + return fs.createReadStream(zipPath); + }); + rimrafSync(workingDir); + fs.mkdirSync(workingDir); + }); + + it("works", async function() { + let p = new Package(attrs); + const dest = await p.downloadFile(testUrl); + assert(fs.existsSync(dest)); + }); + }); describe("zipToSavers", function() { var p; From e970431728cd5fca2e260bca2723cef549396271 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Mon, 19 Feb 2024 11:50:51 -0500 Subject: [PATCH 13/16] Bump electron-rebuild and install local node-gyp --- package-lock.json | 993 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 3 +- 2 files changed, 983 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 21998de0..11c21702 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "@babel/eslint-parser": "^7.12.1", "@babel/plugin-transform-runtime": "^7.12.1", "@babel/preset-env": "^7.7.1", - "@electron/rebuild": "^3.5.0", + "@electron/rebuild": "^3.6.0", "@octokit/rest": "^19.0.8", "@sentry/cli": "^2.1.0", "@sentry/webpack-plugin": "^1.18.9", @@ -62,6 +62,7 @@ "nock": "^14.0.0-beta.3", "node-abi": "^3.52.0", "node-fetch": "^2.6.7", + "node-gyp": "^10.0.1", "node-loader": "^2.0.0", "normalize.css": "^8.0.1", "nyc": "^15.0.0", @@ -1928,9 +1929,9 @@ } }, "node_modules/@electron/rebuild": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.5.0.tgz", - "integrity": "sha512-pWRza7F+JxzTNATkEgI5iW7lAQTVBtU5r6ZjUSbrD04kbuQWUIHBcuvqosaHvKLmTpdRlsZQkPxTYciIoOWf3A==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz", + "integrity": "sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==", "dev": true, "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", @@ -3491,6 +3492,96 @@ "node": ">= 8" } }, + "node_modules/@npmcli/agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.1.tgz", + "integrity": "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/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, + "engines": { + "node": "14 || >=16.14" + } + }, + "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, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@npmcli/move-file": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", @@ -4631,6 +4722,15 @@ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -5754,6 +5854,148 @@ "node": ">= 0.8" } }, + "node_modules/cacache": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/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, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/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, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/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, + "engines": { + "node": "14 || >=16.14" + } + }, + "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, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/cacache/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, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacache/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, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -11398,6 +11640,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "dev": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -11655,6 +11928,53 @@ "node": ">=8" } }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "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, + "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", @@ -12210,6 +12530,152 @@ "node": ">= 6.13.0" } }, + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/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, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/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, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/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, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/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, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, "node_modules/node-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", @@ -12261,6 +12727,21 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -13643,6 +14124,15 @@ "renderkid": "^2.0.6" } }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -15107,6 +15597,32 @@ "npm": ">= 3.0.0" } }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -15247,6 +15763,27 @@ "dev": true, "optional": true }, + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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, + "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", @@ -16273,13 +16810,37 @@ "node": ">=4" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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, + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/universal-user-agent": { @@ -18749,9 +19310,9 @@ } }, "@electron/rebuild": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.5.0.tgz", - "integrity": "sha512-pWRza7F+JxzTNATkEgI5iW7lAQTVBtU5r6ZjUSbrD04kbuQWUIHBcuvqosaHvKLmTpdRlsZQkPxTYciIoOWf3A==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.6.0.tgz", + "integrity": "sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==", "dev": true, "requires": { "@malept/cross-spawn-promise": "^2.0.0", @@ -19912,6 +20473,76 @@ "fastq": "^1.6.0" } }, + "@npmcli/agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.1.tgz", + "integrity": "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "dependencies": { + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "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 + } + } + }, + "@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, + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "@npmcli/move-file": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", @@ -20903,6 +21534,12 @@ "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", "dev": true }, + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -21764,6 +22401,105 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, + "cacache": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "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, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "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, + "requires": { + "minipass": "^7.0.3" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "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 + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "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, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "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 + } + } + }, "cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -25941,6 +26677,33 @@ "semver": "^6.0.0" } }, + "make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "dev": true, + "requires": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + } + } + }, "matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -26131,6 +26894,43 @@ "yallist": "^4.0.0" } }, + "minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + } + } + }, + "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, + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + } + } + }, "minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", @@ -26539,6 +27339,103 @@ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, + "node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "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, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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 + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "requires": { + "isexe": "^3.1.1" + } + } + } + }, "node-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", @@ -26576,6 +27473,15 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "requires": { + "abbrev": "^2.0.0" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -27573,6 +28479,12 @@ "renderkid": "^2.0.6" } }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -28679,6 +29591,28 @@ "smart-buffer": "^4.2.0" } }, + "socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "dependencies": { + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -28795,6 +29729,23 @@ "dev": true, "optional": true }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dev": true, + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true + } + } + }, "stat-mode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", @@ -29557,6 +30508,24 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "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, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "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, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", diff --git a/package.json b/package.json index 79e2013b..9aa1cbb5 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "@babel/eslint-parser": "^7.12.1", "@babel/plugin-transform-runtime": "^7.12.1", "@babel/preset-env": "^7.7.1", - "@electron/rebuild": "^3.5.0", + "@electron/rebuild": "^3.6.0", "@octokit/rest": "^19.0.8", "@sentry/cli": "^2.1.0", "@sentry/webpack-plugin": "^1.18.9", @@ -87,6 +87,7 @@ "nock": "^14.0.0-beta.3", "node-abi": "^3.52.0", "node-fetch": "^2.6.7", + "node-gyp": "^10.0.1", "node-loader": "^2.0.0", "normalize.css": "^8.0.1", "nyc": "^15.0.0", From 68f41854fa68a3a0cb3bfbb3d21d88a3f56adeda Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Mon, 19 Feb 2024 12:03:03 -0500 Subject: [PATCH 14/16] Bump compiled packages --- package-lock.json | 38 ++++++++++++++++++++++++-------------- package.json | 9 +++++---- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad6ae311..60ece9bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,17 +10,18 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { + "@muffinista/goto-sleep": "github:muffinista/goto-sleep", "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", - "detect-fullscreen": "muffinista/detect-fullscreen", + "detect-fullscreen": "github:muffinista/detect-fullscreen", "electron-is-dev": "^2.0.0", "electron-log": "^5.1.0-beta.1", - "forcefocus": "muffinista/forcefocus", + "forcefocus": "github:muffinista/forcefocus", "fs-extra": "^11.1.0", "glob": "^9.3.5", - "goto-sleep": "muffinista/goto-sleep", - "hide-cursor": "muffinista/hide-cursor", + "goto-sleep": "github:muffinista/goto-sleep", + "hide-cursor": "github:muffinista/hide-cursor", "mkdirp": "^3.0.1", "proper-lockfile": "^4.1.1", "rimraf": "^5.0.0", @@ -3456,6 +3457,12 @@ "node": ">=10" } }, + "node_modules/@muffinista/goto-sleep": { + "version": "0.0.6", + "resolved": "git+ssh://git@github.com/muffinista/goto-sleep.git#48805120c8f793c8d51477e01a557d1952c3042f", + "hasInstallScript": true, + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -6850,7 +6857,6 @@ "node_modules/detect-fullscreen": { "version": "0.0.8", "resolved": "git+ssh://git@github.com/muffinista/detect-fullscreen.git#cd9c988337bffc73f11bd5c09f1ced7bcc82fe0b", - "hasInstallScript": true, "license": "MIT" }, "node_modules/detect-libc": { @@ -9071,7 +9077,7 @@ }, "node_modules/forcefocus": { "version": "1.1.1", - "resolved": "git+ssh://git@github.com/muffinista/forcefocus.git#ee1e95eb909169716b6c9fe1c296d91a5b58906b", + "resolved": "git+ssh://git@github.com/muffinista/forcefocus.git#4f02c9244d19dcf41b33b60b978d44b15c2769d2", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -9653,8 +9659,8 @@ } }, "node_modules/hide-cursor": { - "version": "0.0.2", - "resolved": "git+ssh://git@github.com/muffinista/hide-cursor.git#06d299abac701615e2f4fc99e4813cbd61d82c4c", + "version": "0.0.3", + "resolved": "git+ssh://git@github.com/muffinista/hide-cursor.git#e90fdebd7386df4721833ff128d54a2bb9efe434", "hasInstallScript": true, "license": "MIT" }, @@ -19873,6 +19879,10 @@ } } }, + "@muffinista/goto-sleep": { + "version": "git+ssh://git@github.com/muffinista/goto-sleep.git#48805120c8f793c8d51477e01a557d1952c3042f", + "from": "@muffinista/goto-sleep@github:muffinista/goto-sleep" + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -22555,7 +22565,7 @@ }, "detect-fullscreen": { "version": "git+ssh://git@github.com/muffinista/detect-fullscreen.git#cd9c988337bffc73f11bd5c09f1ced7bcc82fe0b", - "from": "detect-fullscreen@muffinista/detect-fullscreen" + "from": "detect-fullscreen@github:muffinista/detect-fullscreen" }, "detect-libc": { "version": "2.0.2", @@ -24217,8 +24227,8 @@ } }, "forcefocus": { - "version": "git+ssh://git@github.com/muffinista/forcefocus.git#ee1e95eb909169716b6c9fe1c296d91a5b58906b", - "from": "forcefocus@muffinista/forcefocus", + "version": "git+ssh://git@github.com/muffinista/forcefocus.git#4f02c9244d19dcf41b33b60b978d44b15c2769d2", + "from": "forcefocus@github:muffinista/forcefocus", "requires": { "bindings": "^1.5.0" } @@ -24538,7 +24548,7 @@ }, "goto-sleep": { "version": "git+ssh://git@github.com/muffinista/goto-sleep.git#48805120c8f793c8d51477e01a557d1952c3042f", - "from": "goto-sleep@muffinista/goto-sleep" + "from": "goto-sleep@github:muffinista/goto-sleep" }, "graceful-fs": { "version": "4.2.10", @@ -24631,8 +24641,8 @@ "dev": true }, "hide-cursor": { - "version": "git+ssh://git@github.com/muffinista/hide-cursor.git#06d299abac701615e2f4fc99e4813cbd61d82c4c", - "from": "hide-cursor@muffinista/hide-cursor" + "version": "git+ssh://git@github.com/muffinista/hide-cursor.git#e90fdebd7386df4721833ff128d54a2bb9efe434", + "from": "hide-cursor@github:muffinista/hide-cursor" }, "hosted-git-info": { "version": "4.1.0", diff --git a/package.json b/package.json index 2fea37b9..6b4fa75e 100644 --- a/package.json +++ b/package.json @@ -35,17 +35,18 @@ "url": "git://github.com/muffinista/before-dawn.git" }, "dependencies": { + "@muffinista/goto-sleep": "github:muffinista/goto-sleep", "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", - "detect-fullscreen": "muffinista/detect-fullscreen", + "detect-fullscreen": "github:muffinista/detect-fullscreen", "electron-is-dev": "^2.0.0", "electron-log": "^5.1.0-beta.1", - "forcefocus": "muffinista/forcefocus", + "forcefocus": "github:muffinista/forcefocus", "fs-extra": "^11.1.0", "glob": "^9.3.5", - "goto-sleep": "muffinista/goto-sleep", - "hide-cursor": "muffinista/hide-cursor", + "goto-sleep": "github:muffinista/goto-sleep", + "hide-cursor": "github:muffinista/hide-cursor", "mkdirp": "^3.0.1", "proper-lockfile": "^4.1.1", "rimraf": "^5.0.0", From 2de743d480c6d70a9d5bc448585498adf13c1947 Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Mon, 19 Feb 2024 12:03:10 -0500 Subject: [PATCH 15/16] Remove some hacks --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 20f09503..d1797c49 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,10 +18,10 @@ jobs: sudo apt-get -qq update sudo apt-get install -y libx11-dev libxss-dev icnsutils graphicsmagick libappindicator1 libxtst-dev # https://github.com/nodejs/node-gyp/issues/2869 - - name: Hack node-gyp - if: ${{ matrix.os != 'windows-latest' }} - run: | - sudo -H python3 -m pip install packaging + # - name: Hack node-gyp + # if: ${{ matrix.os != 'windows-latest' }} + # run: | + # sudo -H python3 -m pip install packaging - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 From 944c288552043bdc44cf81c40df1ee6fe3a2986c Mon Sep 17 00:00:00 2001 From: Colin Mitchell Date: Mon, 19 Feb 2024 12:07:44 -0500 Subject: [PATCH 16/16] Specify python to try and fix actions --- .github/workflows/ci.yml | 5 ++++- .github/workflows/eslint.yml | 3 +++ .github/workflows/release.yml | 11 +++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1797c49..a5e48095 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ jobs: env: PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 # https://stackoverflow.com/questions/77251296/distutils-not-found-when-running-npm-install - PYTHON: 3.11 + # PYTHON: 3.11 # "$Env:GYP_MSVS_VERSION": 2022 steps: - name: Install ubuntu requirements @@ -28,6 +28,9 @@ jobs: with: node-version-file: '.nvmrc' cache: 'npm' + - uses: actions/setup-python@v5 + with: + python-version: "3.11" - name: Specify MSVS version if: ${{ matrix.os == 'windows-latest' }} shell: powershell diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml index ddbf1414..8632c5d1 100644 --- a/.github/workflows/eslint.yml +++ b/.github/workflows/eslint.yml @@ -25,6 +25,9 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'npm' + - uses: actions/setup-python@v5 + with: + python-version: "3.11" - name: Setup code run: npm i - name: Run eslint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c2d68300..7ffbf3f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,15 +20,18 @@ jobs: sudo apt-get -qq update sudo apt-get install -y libx11-dev libxss-dev icnsutils graphicsmagick libappindicator1 libxtst-dev # https://github.com/nodejs/node-gyp/issues/2869 - - name: Hack node-gyp - if: ${{ matrix.os != 'windows-latest' }} - run: | - sudo -H python3 -m pip install packaging + # - name: Hack node-gyp + # if: ${{ matrix.os != 'windows-latest' }} + # run: | + # sudo -H python3 -m pip install packaging - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' + - uses: actions/setup-python@v5 + with: + python-version: "3.11" - name: Specify MSVS version if: ${{ matrix.os == 'windows-latest' }} shell: powershell