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/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86e9ce97..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 @@ -18,16 +18,19 @@ 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 - - uses: actions/checkout@v3 + # - 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@v3 + uses: actions/setup-node@v4 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 @@ -45,10 +48,11 @@ 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 + #/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\ 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 3771d7a6..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 - - uses: actions/checkout@v3 + # - 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@v3 + 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 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/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..81be804c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,31 +1,32 @@ { "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", + "@muffinista/goto-sleep": "github:muffinista/goto-sleep", + "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", - "detect-fullscreen": "^0.0.8", + "detect-fullscreen": "github:muffinista/detect-fullscreen", "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", - "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", "temp": "^0.9.0", - "yauzl": "^2.10.0" + "yauzl": "^3.1.0" }, "devDependencies": { "@arkweid/lefthook": "^0.7.7", @@ -33,7 +34,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", @@ -46,17 +47,20 @@ "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", "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-gyp": "^10.0.1", @@ -74,7 +78,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", @@ -1926,9 +1930,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", @@ -2449,18 +2453,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 +2501,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 +2534,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 +2549,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 +2576,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 +3375,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 +3391,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": { @@ -3454,6 +3458,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", @@ -3490,9 +3500,9 @@ } }, "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==", + "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", @@ -3518,9 +3528,9 @@ } }, "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==", + "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", @@ -3531,9 +3541,9 @@ } }, "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==", + "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", @@ -3544,9 +3554,9 @@ } }, "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==", + "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" @@ -3565,9 +3575,9 @@ } }, "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==", + "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" @@ -3808,24 +3818,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 +3882,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 +4261,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 +4362,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 +4506,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 +4763,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 +5073,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 +5093,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 +5120,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 +5280,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 +5614,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 +5816,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" }, @@ -5740,9 +5862,9 @@ } }, "node_modules/cacache": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", - "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "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", @@ -5822,9 +5944,9 @@ } }, "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==", + "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" @@ -5924,13 +6046,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 +6088,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 +6356,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 +6574,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 +6868,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 +6920,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 +6944,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": { @@ -6970,9 +7098,8 @@ }, "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", + "license": "MIT" }, "node_modules/detect-libc": { "version": "2.0.2", @@ -7403,9 +7530,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 +7637,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 +7685,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 +7733,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 +7791,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 +7862,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 +7893,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 +7904,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 +7916,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 +7967,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 +7982,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 +8008,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 +8116,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 +8147,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==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -8031,7 +8160,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,31 +8167,51 @@ "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": ">=14.0.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "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": ">=12.22.0" + "node": ">=16.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" @@ -8072,12 +8220,53 @@ "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.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, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -8152,7 +8341,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 +8504,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 +8520,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 +8674,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", @@ -8809,6 +8997,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", @@ -8897,7 +9095,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" } @@ -9037,19 +9236,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,9 +9319,18 @@ } } }, + "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", + "version": "1.1.1", + "resolved": "git+ssh://git@github.com/muffinista/forcefocus.git#4f02c9244d19dcf41b33b60b978d44b15c2769d2", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -9261,10 +9456,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 +9529,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 +9572,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 +9583,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 +9728,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 +9738,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", @@ -9530,7 +9778,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" }, @@ -9551,24 +9799,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 +9817,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 +9858,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 +9890,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", @@ -9642,8 +9912,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" }, @@ -9964,9 +10234,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 +10331,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 +10368,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 +10399,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 +10410,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 +10450,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 +10466,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 +10546,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 +10563,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 +10653,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 +10665,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 +10693,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 +10708,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 +10718,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 +10756,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 +11468,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 +11602,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", @@ -12150,14 +12436,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": { @@ -12356,9 +12641,9 @@ } }, "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==", + "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" @@ -12443,9 +12728,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 +13099,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 +13117,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 +13134,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 +13379,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 +13410,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", @@ -13330,7 +13607,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", @@ -14029,6 +14306,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 +14494,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 +14640,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 +14692,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 +14879,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 +15326,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 +15844,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 +15999,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 +16296,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 +16367,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 +16385,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 +16603,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 +16619,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 +16629,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", @@ -16282,8 +16679,73 @@ "media-typer": "0.3.0", "mime-types": "~2.1.24" }, - "engines": { - "node": ">= 0.6" + "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/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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typedarray-to-buffer": { @@ -16309,15 +16771,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 +16880,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 +17123,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 +17147,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 +17476,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 +17508,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 +17583,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 +17600,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", @@ -17500,12 +18000,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": { @@ -18813,9 +19316,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", @@ -19199,15 +19702,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 +19737,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 +19760,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 +19772,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 +19789,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 +20387,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 +20403,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": { @@ -19950,6 +20453,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", @@ -19977,9 +20484,9 @@ } }, "@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "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", @@ -19999,9 +20506,9 @@ } }, "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==", + "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", @@ -20009,9 +20516,9 @@ } }, "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==", + "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", @@ -20019,9 +20526,9 @@ } }, "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==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true } } @@ -20036,9 +20543,9 @@ }, "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==", + "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" @@ -20217,22 +20724,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 +20772,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 +21103,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 +21204,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 +21347,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 +21566,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 +21813,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 +21830,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 +21848,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, - "peer": true, "requires": { "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", + "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, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "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 +21965,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 +22245,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 +22379,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" } @@ -21854,9 +22412,9 @@ "dev": true }, "cacache": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", - "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "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", @@ -21915,9 +22473,9 @@ } }, "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==", + "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": { @@ -21986,13 +22544,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 +22577,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 +22769,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 +22939,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 +23141,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 +23178,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 +23196,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": { @@ -22752,9 +23313,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@github:muffinista/detect-fullscreen" }, "detect-libc": { "version": "2.0.2", @@ -23084,9 +23644,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 +23726,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 +23768,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 +23801,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 +23853,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 +23909,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 +23940,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 +23951,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 +24007,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 +24017,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 +24115,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 +24154,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 +24169,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 +24176,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 +24189,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,35 +24267,37 @@ } }, "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, - "peer": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -23730,43 +24305,78 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "peer": true, "requires": { "esutils": "^2.0.2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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": { + "lru-cache": "^6.0.0" + } + }, + "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 +24424,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 +24477,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", @@ -24110,6 +24719,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": { @@ -24187,7 +24808,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" } @@ -24304,16 +24926,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,8 +24979,17 @@ "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", + "version": "git+ssh://git@github.com/muffinista/forcefocus.git#4f02c9244d19dcf41b33b60b978d44b15c2769d2", "from": "forcefocus@github:muffinista/forcefocus", "requires": { "bindings": "^1.5.0" @@ -24451,9 +25072,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 +25124,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 +25155,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 +25276,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", @@ -24653,8 +25309,8 @@ } }, "goto-sleep": { - "version": "git+ssh://git@github.com/muffinista/goto-sleep.git#f4f8db7141c13ab8046f56e4a09670b134100b5f", - "from": "goto-sleep@muffinista/goto-sleep" + "version": "git+ssh://git@github.com/muffinista/goto-sleep.git#48805120c8f793c8d51477e01a557d1952c3042f", + "from": "goto-sleep@github:muffinista/goto-sleep" }, "graceful-fs": { "version": "4.2.10", @@ -24673,21 +25329,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 +25341,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 +25367,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 +25387,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", @@ -24734,8 +25403,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", @@ -24966,9 +25635,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 +25710,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 +25738,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 +25763,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 +25793,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 +25806,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 +25858,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 +25867,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 +25930,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 +25955,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 +25964,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 +25994,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 +26547,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 +26653,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", @@ -26604,14 +27277,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" } }, @@ -26749,9 +27421,9 @@ "dev": true }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "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" @@ -26806,9 +27478,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 +27758,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 +27770,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 +27964,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 +27988,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", @@ -27482,7 +28149,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", @@ -27947,6 +28614,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 +28771,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 +28888,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 +28927,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 +29044,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 +29388,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 +29797,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 +29899,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 +30134,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 +30178,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 +30189,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 +30352,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 +30368,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 +30375,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 +30416,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 +30479,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 +30558,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 +30737,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 +30761,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 +30794,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 +31063,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 +31077,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", @@ -30570,12 +31384,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 f9d3001c..03eef62f 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,15 +17,15 @@ "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", "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" @@ -34,22 +35,23 @@ "url": "git://github.com/muffinista/before-dawn.git" }, "dependencies": { - "@sentry/electron": "^4.0.2", + "@muffinista/goto-sleep": "github:muffinista/goto-sleep", + "@sentry/electron": "^4.17.0", "auto-launch": "^5.0.5", "conf": "^10.0.0", - "detect-fullscreen": "^0.0.8", + "detect-fullscreen": "github:muffinista/detect-fullscreen", "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", - "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", "temp": "^0.9.0", - "yauzl": "^2.10.0" + "yauzl": "^3.1.0" }, "devDependencies": { "@arkweid/lefthook": "^0.7.7", @@ -57,7 +59,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", @@ -70,17 +72,20 @@ "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", "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-gyp": "^10.0.1", @@ -98,7 +103,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..51052ad0 100644 --- a/src/lib/package.js +++ b/src/lib/package.js @@ -1,16 +1,15 @@ "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"); - -const temp = require("temp"); -const os = require("os"); +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"; /** @@ -20,7 +19,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; @@ -44,8 +43,6 @@ module.exports = class Package { this.defaultHeaders = { "User-Agent": "Before Dawn" }; - - this.fetch = _attrs.fetch || global.fetch || require("node-fetch"); } attrs() { @@ -62,7 +59,7 @@ module.exports = 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/, ""); @@ -124,7 +121,7 @@ module.exports = 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); @@ -141,7 +138,7 @@ module.exports = 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); @@ -152,7 +149,7 @@ module.exports = class Package { // clean out existing files // try { - rimraf.sync(self.dest); + rimrafSync(self.dest); } catch (err) { self.logger(err); @@ -218,4 +215,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/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..3165fa7a 100644 --- a/src/main/bootstrap.js +++ b/src/main/bootstrap.js @@ -1,49 +1,55 @@ +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) + ) + ); + -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.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 && 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..a777a534 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,57 @@ 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 isDev from 'electron-is-dev'; +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 menusAndTrays = require("./menus.js"); -const dock = require("./dock.js"); -const windows = require("./windows.js"); +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const packageJSON = JSON.parse( + await readFile( + new URL('../../package.json', import.meta.url) + ) +); + +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 +108,8 @@ if ( testMode || process.platform === "win32" ) { }; } else { - cursor = require("hide-cursor"); + cursor = await import("hide-cursor"); + cursor = cursor.default; } let exitOnQuit = false; @@ -136,8 +160,6 @@ let handles = { let trayMenu; -let electronScreen; - let prefs = undefined; let savers = undefined; let stateManager = undefined; @@ -151,14 +173,15 @@ 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, contextIsolation: true, nodeIntegration: false, nativeWindowOpen: true, - webSecurity: !global.IS_DEV + webSecurity: !isDev }; const singleLock = app.requestSingleInstanceLock(); @@ -201,25 +224,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 +256,6 @@ var grabScreen = function(s) { if ( ! screen ) { screen = screenData[0]; } - // log.info(screen); return new Promise((resolve) => { // @@ -252,7 +272,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 +300,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}); @@ -302,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") @@ -313,7 +329,7 @@ var openTestShim = function() { const shimUrl = `file://${__dirname}/assets/shim.html`; testWindow.loadURL(shimUrl); - //handles.shim.window = testWindow; + testWindow.webContents.openDevTools(); }; @@ -351,12 +367,12 @@ 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") }); - if ( !global.IS_DEV && handles.prefs.window.removeMenu !== undefined ) { + if ( !isDev && handles.prefs.window.removeMenu !== undefined ) { handles.prefs.window.removeMenu(); } @@ -399,12 +415,12 @@ 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"), } }); // hide the file menu - if ( !global.IS_DEV && handles.settings.window.removeMenu !== undefined ) { + if ( !isDev && handles.settings.window.removeMenu !== undefined ) { handles.settings.window.removeMenu(); } @@ -442,7 +458,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,11 +489,11 @@ 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"), } }); - if ( !global.IS_DEV && handles.about.window.removeMenu !== undefined ) { + if ( !isDev && handles.about.window.removeMenu !== undefined ) { handles.about.window.removeMenu(); } @@ -517,7 +533,7 @@ var openEditor = (args) => { show: false, webPreferences: { ...defaultWebPreferences, - preload: path.join(__dirname, "assets", "preload.js"), + preload: path.join(__dirname, "assets", "preload.mjs"), }, }); } @@ -915,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"); }; @@ -932,12 +949,11 @@ var getSystemDir = function() { */ var getUrl = function(dest) { let baseUrl; - if ( !testMode && process.env.NODE_ENV === "development" ) { + if ( !testMode && isDev ) { if ( ! process.env.DISABLE_RELOAD ) { let devPort; try { - let packageJSON = require("../../package.json"); devPort = packageJSON.devport; } catch(e) { @@ -951,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}`; } }; @@ -1050,8 +1070,6 @@ var setupReleaseCheck = function() { return; } - const ReleaseCheck = require("./release_check.js"); - releaseChecker = new ReleaseCheck({fetch: net.fetch}); releaseChecker.setFeed(global.RELEASE_CHECK_URL); @@ -1082,13 +1100,11 @@ 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; } if ( !app.isInApplicationsFolder() ) { - const {dialog} = require("electron"); - const chosen = dialog.showMessageBoxSync({ type: "question", buttons: ["Move to Applications", "Do Not Move"], @@ -1111,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" ) { @@ -1296,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); @@ -1330,7 +1348,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 +1369,6 @@ let setupIPC = function() { return; } - const autostarter = require("./autostarter.js"); autostarter.toggle(global.APP_NAME, value); }); @@ -1547,12 +1563,12 @@ 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])))}); }); - electronScreen = electron.screen; - askAboutApplicationsFolder(); await askAboutMediaAccess(); @@ -1572,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"); } @@ -1684,17 +1700,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(); } @@ -1857,12 +1869,26 @@ 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"}`); +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 ( global.IS_DEV ) { +if ( isDev ) { app.name = global.APP_NAME; log.info(`set app name to ${app.name}`); @@ -1873,15 +1899,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 +1930,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 +1948,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() { @@ -1941,16 +1960,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/fixtures/test-savers.zip b/test/fixtures/test-savers.zip index 23acbe4d..091e68b1 100644 Binary files a/test/fixtures/test-savers.zip and b/test/fixtures/test-savers.zip differ diff --git a/test/helpers.js b/test/helpers.js index fc2d65fe..85fd2dfa 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -1,18 +1,26 @@ -const tmp = require("tmp"); -const path = require("path"); -const fs = require("fs-extra"); -// const os = require("os"); +/* eslint-disable mocha/no-exports */ -const { _electron: electron } = require("playwright"); +import * as path from "path"; +import fs from 'fs-extra'; +import * as tmp from "tmp"; +import temp from "temp"; -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; +let testTimeout = 50000; let testRetryCount = 0; +let logPath; let app; @@ -36,38 +44,35 @@ const delayStep = 10; settings: "Before Dawn: Settings" }; - -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"), dest ); - if ( attrs !== {} ) { + if ( Object.keys(attrs) > 0 ) { 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 +95,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 +109,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) { - let saversDir = exports.getTempDir(); - let saverJSONFile = exports.addSaver(saversDir, "saver"); +export function setupFullConfig(workingDir) { + let saversDir = getTempDir(); + let saverJSONFile = addSaver(saversDir, "saver"); - exports.setupConfig(workingDir, "config", { + 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); + var data = 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); + var data = savedConfig(workingDir); data.localSource = ""; fs.writeFileSync(src, JSON.stringify(data)); -}; +} /** @@ -167,42 +157,51 @@ exports.removeLocalSource = function(workingDir) { * @param {boolean} quietMode * @returns application */ -exports.application = async function(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 electron.launch({ - path: appPath, + + 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); }); }); - // wait for the first window (our test shim) to open, and - // hang onto it for later use - exports.shim = await a.firstWindow(); + // wait for the first window (our test shim) to open + await a.firstWindow(); app = a; + return a; -}; +} -exports.dumpOutput = async(app) => { - console.log(app.logData); - app.logData = []; -}; +export async function dumpOutput(app) { + if (app) { + console.log(app.logData); + app.logData = []; + } + + if (fs.existsSync(logPath)) { + console.log(fs.readFileSync(logPath)); + } +} /** * @@ -210,11 +209,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); -}; + await waitForWindow(app, title); + return getWindowByTitle(app, title); +} /** @@ -222,7 +221,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 +230,7 @@ exports.stopApp = async function(app) { catch(e) { console.log(e); } -}; +} /** @@ -240,7 +239,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 +257,7 @@ exports.getWindowLookup = async(app) => { map[obj[0]] = obj[1]; return map; }, {}); -}; +} /** * Get window with the given title @@ -267,13 +266,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); + const lookup = await getWindowLookup(app); return lookup[title]; -}; +} /** * wait for text on the given window @@ -282,21 +281,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,15 +305,15 @@ 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); + result = await getWindowByTitle(app, title); if ( result ) { return true; } else { - await exports.sleep(delayStep); + await sleep(delayStep); } } @@ -323,7 +322,7 @@ exports.waitForWindow = async (app, title, skipAssert) => { } return result; -}; +} /** @@ -332,23 +331,31 @@ exports.waitForWindow = async (app, title, skipAssert) => { * @param {*} method * @param {*} opts */ -exports.callIpc = async(_app, method, opts={}) => { - const window = exports.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"); -}; +} -exports.setupTest = function (test) { +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") { - await exports.dumpOutput(app); + await dumpOutput(app); } - await exports.stopApp(app); + await stopApp(app); }); -}; +} diff --git a/test/lib/package.js b/test/lib/package.js index a3a5e411..333b18ce 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(); @@ -34,6 +39,7 @@ describe("Package", function() { fetch: fetch }; }); + afterEach(function () { sandbox.restore(); }); @@ -50,9 +56,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 +71,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,27 +86,30 @@ 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); + sandbox.stub(p, "zipToSavers").resolves({}); await p.checkLatestRelease(); 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 +120,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); + get("/savers.zip"). + reply(200, () => { + return fs.createReadStream(zipPath); + }); + rimrafSync(workingDir); fs.mkdirSync(workingDir); }); - xit("works", async () => { + it("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 +156,7 @@ describe("Package", function() { }); }); - it("recovers from errors", (done) => { + it("recovers from errors", function(done) { p.zipToSavers(dataPath). then(() => {}). catch( () => { @@ -155,7 +164,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 +177,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..1fed694f 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("systemSource", 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..b977ddab 100644 --- a/test/main/power.js +++ b/test/main/power.js @@ -1,13 +1,20 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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 +22,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 +59,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..a28b471c 100644 --- a/test/ui/about.js +++ b/test/ui/about.js @@ -1,8 +1,11 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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 +13,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..611006e0 100644 --- a/test/ui/bootstrap.js +++ b/test/ui/bootstrap.js @@ -1,10 +1,14 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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 +21,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 +42,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..b4123791 100644 --- a/test/ui/editor.js +++ b/test/ui/editor.js @@ -1,9 +1,14 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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"; + +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); var workingDir; let app; @@ -13,7 +18,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..b54596eb 100644 --- a/test/ui/new.js +++ b/test/ui/new.js @@ -1,58 +1,62 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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; let app; describe("Add New", function() { - const screensaverUrl = "file://" + path.join(__dirname, "../fixtures/screenshot.png"); + let screensaverUrl; helpers.setupTest(this); - beforeEach(async () => { + beforeEach(async function() { + screensaverUrl = "file://" + path.join(__dirname, "../fixtures/screenshot.png"); saversDir = helpers.getTempDir(); workingDir = helpers.getTempDir(); app = await helpers.application(workingDir, true); }); - describe("when not setup", function() { - beforeEach(async () => { - await helpers.callIpc(app, `open-window add-new ${screensaverUrl}`); - }); + // 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("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); + // 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.click(app, "button.pick"); + // await helpers.click(app, "button.save"); - // await helpers.sleep(100); + // 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); - // }); - }); + // 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; - beforeEach(async () => { + beforeEach(async function() { helpers.addLocalSource(workingDir, saversDir); await helpers.callIpc(app, `open-window add-new ${screensaverUrl}`); window = await helpers.waitFor(app, "new"); @@ -64,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/test/ui/prefs.js b/test/ui/prefs.js index dc5a65f3..bf9ef3a9 100644 --- a/test/ui/prefs.js +++ b/test/ui/prefs.js @@ -1,12 +1,13 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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..5393cdf2 100644 --- a/test/ui/settings.js +++ b/test/ui/settings.js @@ -1,12 +1,13 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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 +19,7 @@ describe("Settings", function() { return new SaverPrefs(workingDir).data; }; - beforeEach(async () => { + beforeEach(async function() { workingDir = helpers.getTempDir(); saversDir = helpers.getTempDir(); @@ -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 ea18dbe7..cc89d89c 100644 --- a/test/ui/tray.js +++ b/test/ui/tray.js @@ -1,7 +1,8 @@ +/* eslint-disable mocha/no-setup-in-describe */ "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; @@ -24,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() { 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..7c597eeb 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: [ @@ -73,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({ @@ -102,7 +113,16 @@ 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" }; @@ -142,4 +162,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;