From 9d39fb0fb19e1294c0fec700f05cdfe85b3f5152 Mon Sep 17 00:00:00 2001 From: Dan Funk Date: Thu, 11 May 2023 14:49:37 -0400 Subject: [PATCH] Initial commit --- .editorconfig | 18 + .electron-builder.config.js | 29 + .eslintrc.json | 51 + .gitattributes | 4 + .github/FUNDING.yml | 3 + .github/ISSUE_TEMPLATE/bug_report.md | 28 + .github/ISSUE_TEMPLATE/config.yml | 5 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .github/renovate.json | 27 + .github/workflows/ci.yml | 47 + .github/workflows/lint.yml | 65 + .github/workflows/release.yml | 61 + .github/workflows/tests.yml | 38 + .github/workflows/typechecking.yml | 27 + .gitignore | 58 + .idea/codeStyles/Project.xml | 65 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/deployment.xml | 28 + .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/jsLibraryMappings.xml | 6 + .idea/jsLinters/eslint.xml | 7 + .idea/jsonSchemas.xml | 28 + .idea/modules.xml | 8 + .idea/prettier.xml | 8 + .idea/vcs.xml | 6 + .idea/vite-electron-builder.iml | 19 + .idea/webResources.xml | 14 + .nano-staged.mjs | 24 + .npmrc | 1 + .prettierignore | 10 + .prettierrc | 21 + .simple-git-hooks.json | 3 + .vscode/launch.json | 13 + LICENSE | 21 + README.md | 301 + buildResources/.gitkeep | 0 buildResources/icon.icns | Bin 0 -> 76548 bytes buildResources/icon.png | Bin 0 -> 85709 bytes contributing.md | 34 + package-lock.json | 11053 ++++++++++++++++ package.json | 56 + packages/main/src/index.ts | 86 + packages/main/src/mainWindow.ts | 71 + packages/main/src/security-restrictions.ts | 128 + packages/main/tests/unit.spec.ts | 80 + packages/main/tsconfig.json | 18 + packages/main/vite.config.js | 43 + packages/preload/src/index.ts | 6 + packages/preload/src/nodeCrypto.ts | 5 + packages/preload/src/versions.ts | 1 + packages/preload/tests/unit.spec.ts | 15 + packages/preload/tsconfig.json | 15 + packages/preload/vite.config.js | 39 + packages/renderer/.eslintrc.json | 20 + packages/renderer/assets/logo.svg | 20 + packages/renderer/index.html | 13 + packages/renderer/src/App.vue | 69 + .../src/components/ElectronVersions.vue | 30 + .../src/components/ReactiveCounter.vue | 11 + .../renderer/src/components/ReactiveHash.vue | 53 + packages/renderer/src/index.ts | 4 + .../renderer/tests/ElectronVersions.spec.ts | 23 + .../renderer/tests/ReactiveCounter.spec.ts | 14 + packages/renderer/tests/ReactiveHash.spec.ts | 21 + packages/renderer/tsconfig.json | 27 + packages/renderer/types/shims-vue.d.ts | 6 + packages/renderer/vite.config.js | 54 + scripts/update-electron-vendors.mjs | 18 + scripts/watch.mjs | 104 + tests/e2e.spec.ts | 94 + types/env.d.ts | 25 + version/getVersion.mjs | 9 + version/inject-app-version-plugin.mjs | 13 + vitest.config.js | 23 + 74 files changed, 13376 insertions(+) create mode 100644 .editorconfig create mode 100644 .electron-builder.config.js create mode 100644 .eslintrc.json create mode 100644 .gitattributes create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/renovate.json create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/tests.yml create mode 100644 .github/workflows/typechecking.yml create mode 100644 .gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/deployment.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/jsLinters/eslint.xml create mode 100644 .idea/jsonSchemas.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/prettier.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/vite-electron-builder.iml create mode 100644 .idea/webResources.xml create mode 100644 .nano-staged.mjs create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .simple-git-hooks.json create mode 100644 .vscode/launch.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 buildResources/.gitkeep create mode 100644 buildResources/icon.icns create mode 100644 buildResources/icon.png create mode 100644 contributing.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages/main/src/index.ts create mode 100644 packages/main/src/mainWindow.ts create mode 100644 packages/main/src/security-restrictions.ts create mode 100644 packages/main/tests/unit.spec.ts create mode 100644 packages/main/tsconfig.json create mode 100644 packages/main/vite.config.js create mode 100644 packages/preload/src/index.ts create mode 100644 packages/preload/src/nodeCrypto.ts create mode 100644 packages/preload/src/versions.ts create mode 100644 packages/preload/tests/unit.spec.ts create mode 100644 packages/preload/tsconfig.json create mode 100644 packages/preload/vite.config.js create mode 100644 packages/renderer/.eslintrc.json create mode 100644 packages/renderer/assets/logo.svg create mode 100644 packages/renderer/index.html create mode 100644 packages/renderer/src/App.vue create mode 100644 packages/renderer/src/components/ElectronVersions.vue create mode 100644 packages/renderer/src/components/ReactiveCounter.vue create mode 100644 packages/renderer/src/components/ReactiveHash.vue create mode 100644 packages/renderer/src/index.ts create mode 100644 packages/renderer/tests/ElectronVersions.spec.ts create mode 100644 packages/renderer/tests/ReactiveCounter.spec.ts create mode 100644 packages/renderer/tests/ReactiveHash.spec.ts create mode 100644 packages/renderer/tsconfig.json create mode 100644 packages/renderer/types/shims-vue.d.ts create mode 100644 packages/renderer/vite.config.js create mode 100644 scripts/update-electron-vendors.mjs create mode 100644 scripts/watch.mjs create mode 100644 tests/e2e.spec.ts create mode 100644 types/env.d.ts create mode 100644 version/getVersion.mjs create mode 100644 version/inject-app-version-plugin.mjs create mode 100644 vitest.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..872069e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# https://github.com/jokeyrhyme/standard-editorconfig + +# top-most EditorConfig file +root = true + +# defaults +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_size = 2 +indent_style = space + +[*.md] +trim_trailing_whitespace = false diff --git a/.electron-builder.config.js b/.electron-builder.config.js new file mode 100644 index 0000000..4ce1ebf --- /dev/null +++ b/.electron-builder.config.js @@ -0,0 +1,29 @@ +/** + * TODO: Rewrite this config to ESM + * But currently electron-builder doesn't support ESM configs + * @see https://github.com/develar/read-config-file/issues/10 + */ + +/** + * @type {() => import('electron-builder').Configuration} + * @see https://www.electron.build/configuration/configuration + */ +module.exports = async function () { + const {getVersion} = await import('./version/getVersion.mjs'); + + return { + directories: { + output: 'dist', + buildResources: 'buildResources', + }, + files: ['packages/**/dist/**'], + extraMetadata: { + version: getVersion(), + }, + + // Specify linux target just for disabling snap compilation + linux: { + target: 'deb', + }, + }; +}; diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..d919d99 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,51 @@ +{ + "root": true, + "env": { + "es2021": true, + "node": true, + "browser": false + }, + "extends": [ + "eslint:recommended", + /** @see https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#recommended-configs */ + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": ["@typescript-eslint"], + "ignorePatterns": ["node_modules/**", "**/dist/**"], + "rules": { + "@typescript-eslint/no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_" + } + ], + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/consistent-type-imports": "error", + /** + * Having a semicolon helps the optimizer interpret your code correctly. + * This avoids rare errors in optimized code. + * @see https://twitter.com/alex_kozack/status/1364210394328408066 + */ + "semi": ["error", "always"], + /** + * This will make the history of changes in the hit a little cleaner + */ + "comma-dangle": ["warn", "always-multiline"], + /** + * Just for beauty + */ + "quotes": [ + "warn", + "single", + { + "avoidEscape": true + } + ] + } +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4e01be4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +.github/actions/**/*.js linguist-detectable=false +scripts/*.js linguist-detectable=false +*.config.js linguist-detectable=false +* text=auto eol=lf diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..a9c0779 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +custom: ["https://www.buymeacoffee.com/kozack/", "https://send.monobank.ua/6SmojkkR9i"] diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..8764ca0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,28 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: cawa-93 + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..9523d66 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Questions & Discussions + url: https://github.com/cawa-93/vite-electron-builder/discussions/categories/q-a + about: Use GitHub discussions for message-board style questions and discussions. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..e6e6c92 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: cawa-93 + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..3807570 --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,27 @@ +{ + "extends": [ + "config:base", + ":semanticCommits", + ":semanticCommitTypeAll(deps)", + ":semanticCommitScopeDisabled", + ":automergeAll", + ":automergeBranch", + ":disableDependencyDashboard", + ":pinVersions", + ":onlyNpm", + ":label(dependencies)" + ], + "packageRules": [ + { + "groupName": "Vite packages", + "matchUpdateTypes": "major", + "matchSourceUrlPrefixes": [ + "https://github.com/vitejs/" + ] + } + ], + "gitNoVerify": [ + "commit", + "push" + ] +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b24c34f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +# This workflow is the entry point for all CI processes. +# It is from here that all other workflows are launched. +on: + workflow_dispatch: + push: + branches: + - main + - 'renovate/**' + paths-ignore: + - '.github/**' + - '!.github/workflows/ci.yml' + - '!.github/workflows/typechecking.yml' + - '!.github/workflows/tests.yml' + - '!.github/workflows/release.yml' + - '**.md' + - .editorconfig + - .gitignore + - '.idea/**' + - '.vscode/**' + pull_request: + paths-ignore: + - '.github/**' + - '!.github/workflows/ci.yml' + - '!.github/workflows/typechecking.yml' + - '!.github/workflows/tests.yml' + - '!.github/workflows/release.yml' + - '**.md' + - .editorconfig + - .gitignore + - '.idea/**' + - '.vscode/**' + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + typechecking: + uses: ./.github/workflows/typechecking.yml + tests: + uses: ./.github/workflows/tests.yml + draft_release: + with: + dry-run: ${{ github.event_name != 'push' || github.ref_name != 'main' }} + needs: [ typechecking, tests ] + uses: ./.github/workflows/release.yml + diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..e8770a9 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,65 @@ +on: + workflow_dispatch: + push: + paths: + - '**.js' + - '**.mjs' + - '**.cjs' + - '**.jsx' + - '**.ts' + - '**.mts' + - '**.cts' + - '**.tsx' + - '**.vue' + - '**.json' + pull_request: + paths: + - '**.js' + - '**.mjs' + - '**.cjs' + - '**.jsx' + - '**.ts' + - '**.mts' + - '**.cts' + - '**.tsx' + - '**.vue' + - '**.json' + +concurrency: + group: lint-${{ github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: 'bash' + +jobs: + eslint: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 # Need for npm >=7.7 + cache: 'npm' + + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + + - run: npm run lint --if-present + + # This job just check code style for in-template contributions. + code-style: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 # Need for npm >=7.7 + cache: 'npm' + + - run: npm i prettier + - run: npx prettier --check "**/*.{js,mjs,cjs,jsx,ts,mts,cts,tsx,vue,json}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f570381 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,61 @@ +name: Release +on: + workflow_call: + inputs: + dry-run: + description: 'Compiles the app but not upload artifacts to distribution server' + default: false + required: false + type: boolean + +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: true + + +defaults: + run: + shell: 'bash' + + +jobs: + draft_release: + + strategy: + fail-fast: true + matrix: + os: [ macos-latest, ubuntu-latest, windows-latest ] + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v3 + + - uses: actions/setup-node@v3 + with: + node-version: 16 # Need for npm >=7.7 + cache: 'npm' + + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + + - run: npm run build + + - name: Compile artifacts ${{ inputs.dry-run && '' || 'and upload them to github release' }} + # I use this action because it is capable of retrying multiple times if there are any issues with the distribution server + uses: nick-fields/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 6 + retry_wait_seconds: 15 + retry_on: error + shell: 'bash' + command: npx --no-install electron-builder --config .electron-builder.config.js --publish ${{ inputs.dry-run && 'never' || 'always' }} + env: + # Code Signing params + # See https://www.electron.build/code-signing + # CSC_LINK: '' + # CSC_KEY_PASSWORD: '' + # Publishing artifacts + GH_TOKEN: ${{ secrets.github_token }} # GitHub token, automatically provided (No need to define this secret in the repo settings) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..a79697c --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,38 @@ +name: Tests +on: [ workflow_call ] + +concurrency: + group: tests-${{ github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: 'bash' + +jobs: + tests: + strategy: + fail-fast: false + matrix: + os: [ windows-latest, ubuntu-latest, macos-latest ] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'npm' + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + - run: npm run test:main --if-present + - run: npm run test:preload --if-present + - run: npm run test:renderer --if-present + + # I ran into problems trying to run an electron window in ubuntu due to a missing graphics server. + # That's why this special command for Ubuntu is here + - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:e2e --if-present + if: matrix.os == 'ubuntu-latest' + + - run: npm run test:e2e --if-present + if: matrix.os != 'ubuntu-latest' diff --git a/.github/workflows/typechecking.yml b/.github/workflows/typechecking.yml new file mode 100644 index 0000000..9389241 --- /dev/null +++ b/.github/workflows/typechecking.yml @@ -0,0 +1,27 @@ +name: Typechecking +on: [ workflow_call ] + +concurrency: + group: typechecking-${{ github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: 'bash' + +jobs: + typescript: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 # Need for npm >=7.7 + cache: 'npm' + + - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + + - run: npm run typecheck --if-present diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..170663c --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +node_modules +.DS_Store +dist +*.local +thumbs.db + +.eslintcache +.browserslistrc +.electron-vendors.cache.json + +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. + .idea/artifacts + .idea/compiler.xml + .idea/jarRepositories.xml + .idea/modules.xml + .idea/*.iml + .idea/modules + *.iml + *.ipr + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# Editor-based Rest Client +.idea/httpRequests +/.idea/csv-plugin.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..9a64e1b --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,65 @@ + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/deployment.xml b/.idea/deployment.xml new file mode 100644 index 0000000..8a48291 --- /dev/null +++ b/.idea/deployment.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..d23208f --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jsLinters/eslint.xml b/.idea/jsLinters/eslint.xml new file mode 100644 index 0000000..a3e89d4 --- /dev/null +++ b/.idea/jsLinters/eslint.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jsonSchemas.xml b/.idea/jsonSchemas.xml new file mode 100644 index 0000000..f6e3373 --- /dev/null +++ b/.idea/jsonSchemas.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..38e5fc3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 0000000..ef09642 --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vite-electron-builder.iml b/.idea/vite-electron-builder.iml new file mode 100644 index 0000000..c1c3841 --- /dev/null +++ b/.idea/vite-electron-builder.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/webResources.xml b/.idea/webResources.xml new file mode 100644 index 0000000..e244860 --- /dev/null +++ b/.idea/webResources.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.nano-staged.mjs b/.nano-staged.mjs new file mode 100644 index 0000000..f69dd0d --- /dev/null +++ b/.nano-staged.mjs @@ -0,0 +1,24 @@ +import {resolve, sep} from 'path'; + +export default { + '*.{js,mjs,cjs,ts,mts,cts,vue}': 'eslint --cache --fix', + + /** + * Run typechecking if any type-sensitive files or project dependencies was changed + * @param {string[]} filenames + * @return {string[]} + */ + '{package-lock.json,packages/**/{*.ts,*.vue,tsconfig.json}}': ({filenames}) => { + // if dependencies was changed run type checking for all packages + if (filenames.some(f => f.endsWith('package-lock.json'))) { + return ['npm run typecheck --if-present']; + } + + // else run type checking for staged packages + const fileNameToPackageName = filename => + filename.replace(resolve(process.cwd(), 'packages') + sep, '').split(sep)[0]; + return [...new Set(filenames.map(fileNameToPackageName))].map( + p => `npm run typecheck:${p} --if-present`, + ); + }, +}; diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..3e775ef --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +auto-install-peers=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..bee20b1 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,10 @@ +**/node_modules +**/dist +**/*.svg + +package.json +package-lock.json +.electron-vendors.cache.json + +.github +.idea \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..f59460f --- /dev/null +++ b/.prettierrc @@ -0,0 +1,21 @@ +{ + "printWidth": 100, + "semi": true, + "singleQuote": true, + "overrides": [ + { + "files": ["**/*.css", "**/*.scss", "**/*.html"], + "options": { + "singleQuote": false + } + } + ], + "trailingComma": "all", + "bracketSpacing": false, + "arrowParens": "avoid", + "proseWrap": "never", + "htmlWhitespaceSensitivity": "strict", + "vueIndentScriptAndStyle": false, + "endOfLine": "lf", + "singleAttributePerLine": true +} diff --git a/.simple-git-hooks.json b/.simple-git-hooks.json new file mode 100644 index 0000000..a0ba3b8 --- /dev/null +++ b/.simple-git-hooks.json @@ -0,0 +1,3 @@ +{ + "pre-commit": "npx nano-staged" +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0af4f9a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,13 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Debug Main Process", + "skipFiles": ["/**"], + "program": "${workspaceFolder}\\scripts\\watch.mjs", + "autoAttachChildProcesses": true + } + ] +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ff2283b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Alex Kozack + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c1cd40e --- /dev/null +++ b/README.md @@ -0,0 +1,301 @@ +[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct-single.svg)](https://stand-with-ukraine.pp.ua) + +--- + +# Vite Electron Builder Boilerplate + +This is a template for secure electron applications. Written following the latest safety requirements, recommendations +and best practices. + +Under the hood is [Vite] — A next-generation blazing fast bundler, and [electron-builder] for packaging. + +## Get started + +Follow these steps to get started with the template: + +1. Click the **[Use this template](https://github.com/cawa-93/vite-electron-builder/generate)** button (you must be + logged in) or just clone this repo. +2. If you want to use another package manager you may need to edit [`.github/workflows`](/.github/workflows) — [it + uses `npm` by default](https://github.com/search?q=npm+repo%3Acawa-93%2Fvite-electron-builder+path%3A.github%2Fworkflows&type=Code&ref=advsearch&l=&l=). +3. If you like this template, don't forget to give a github star or send support! ⭐♥ + +That's all you need. 😉 + +> **Note**: +> This template uses npm v7 feature — [**Installing Peer Dependencies +Automatically**](https://github.com/npm/rfcs/blob/latest/implemented/0025-install-peer-deps.md). If you are using a +different package manager, you may need to install some peerDependencies manually. + +## Features + +### Electron [![Electron version](https://img.shields.io/github/package-json/dependency-version/cawa-93/vite-electron-builder/dev/electron?label=%20)][electron] + +- This template uses the latest electron version with all the latest security patches. +- The architecture of the application is built according to the + security [guides](https://www.electronjs.org/docs/tutorial/security) and best practices. +- The latest version of the [electron-builder] is used to package the application. + +### Vite [![Vite version](https://img.shields.io/github/package-json/dependency-version/cawa-93/vite-electron-builder/dev/vite?label=%20)][vite] + +- [Vite] is used to bundle all source codes. It's an extremely fast bundler, that has a vast array of amazing features. + You can learn more about how it is arranged in [this](https://www.youtube.com/watch?v=xXrhg26VCSc) video. +- Vite [supports](https://vitejs.dev/guide/env-and-mode.html) reading `.env` files. You can also specify the types of + your environment variables in [`types/env.d.ts`](types/env.d.ts). +- Automatic hot-reloads for the `Main` and `Renderer` processes. + +Vite provides many useful features, such as: `TypeScript`, `TSX/JSX`, `CSS/JSON Importing`, `CSS Modules` +, `Web Assembly` and much more. + +> [See all Vite features](https://vitejs.dev/guide/features.html). + +### TypeScript [![TypeScript version](https://img.shields.io/github/package-json/dependency-version/cawa-93/vite-electron-builder/dev/typescript?label=%20)][typescript] (optional) + +- The latest version of TypeScript is used for all the source code. +- **Vite** supports TypeScript out of the box. However, it does not support type checking. +- Code formatting rules follow the latest TypeScript recommendations and best practices thanks + to [@typescript-eslint/eslint-plugin](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin). + +> [Guide to disable typescript and remove dependencies](https://github.com/cawa-93/vite-electron-builder/discussions/339) + +### Vue [![Vue version](https://img.shields.io/github/package-json/dependency-version/cawa-93/vite-electron-builder/dev/vue?label=%20&)][vue] (optional) + +- By default, web pages are built using [Vue]. However, you can easily change that. Or not use additional frameworks at + all. +- Code formatting rules follow the latest Vue recommendations and best practices thanks to [eslint-plugin-vue]. + +> [Find more forks 🔱 for others frameworks or setups](https://github.com/cawa-93/vite-electron-builder/discussions/categories/forks) + +### Continuous Integration + +- The configured workflow will check the types for each push and PR. +- The configured workflow will check the code style for each push and PR. +- **Automatic tests** + used [Vitest ![Vitest version](https://img.shields.io/github/package-json/dependency-version/cawa-93/vite-electron-builder/dev/vitest?label=%20&color=yellow)][vitest] + -- A blazing fast test framework powered by Vite. + - Unit tests are placed within each package and are ran separately. + - End-to-end tests are placed in the root [`tests`](tests) directory and use [playwright]. + +![Workflow graph](https://user-images.githubusercontent.com/1662812/213429323-ef4bcc87-c273-4f2f-b77f-c04cf6dbc36d.png) + + +### Publishing + +- Each time you push changes to the `main` branch, the [`release`](.github/workflows/release.yml) workflow starts, which creates a new draft release. For each next commit will be created and replaced artifacts. That way you will always have draft with latest artifacts, and the release can be published once it is ready. + - Code signing supported. See [`release` workflow](.github/workflows/release.yml). + - **Auto-update is supported**. After the release is published, all client applications will download the new version + and install updates silently. + +> **Note**: +> This template **configured only for GitHub public repository**, but electron-builder also supports other update distribution servers. Find more in [electron-builder docs](https://www.electron.build/configuration/publish). + +## How it works + +The template requires a minimum amount [dependencies](package.json). Only **Vite** is used for building, nothing more. + +### Project Structure + +The structure of this template is very similar to a monorepo. The entire source code of the project is divided into three modules (packages) that are each bundled independently: + +- [`packages/renderer`](packages/renderer). Responsible for the contents of the application window. In fact, it is a + regular web application. In developer mode, you can even open it in a browser. The development and build process is + the same as for classic web applications. Access to low-level API electrons or Node.js is done through the _preload_ + layer. +- [`packages/preload`](packages/preload). Contain Electron [**preload scripts**](https://www.electronjs.org/docs/latest/tutorial/tutorial-preload). Acts as an intermediate bridge between the _renderer_ process and the API + exposed by electron and Node.js. Runs in an _isolated browser context_, but has direct access to the full Node.js + functionality. +- [`packages/main`](packages/main) + Contain Electron [**main script**](https://www.electronjs.org/docs/tutorial/quick-start#create-the-main-script-file). This is + the main process that powers the application. It manages creating and handling the spawned BrowserWindow, setting and + enforcing secure permissions and request handlers. You can also configure it to do much more as per your need, such + as: logging, reporting statistics and health status among others. + +Schematically, the structure of the application and the method of communication between packages can be depicted as follows: +```mermaid +flowchart TB; + +packages/preload <-. IPC Messages .-> packages/main + + subgraph packages/main["packages/main (Shared beatween all windows)"] + M[index.ts] --> EM[Electron Main Process Modules] + M --> N2[Node.js API] + end + +subgraph Window["Browser Window"] + subgraph packages/preload["packages/preload (Works in isolated context)"] + P[index.ts] --> N[Node.js API] + P --> ED[External dependencies] + P --> ER[Electron Renderer Process Modules] + end + + + subgraph packages/renderer + R[index.html] --> W[Web API] + R --> BD[Bundled dependencies] + R --> F[Web Frameforks] + end + end + +packages/renderer -- Call Exposed API --> P +``` +### Build web resources + +The `main` and `preload` packages are built in [library mode](https://vitejs.dev/guide/build.html#library-mode) as it is +simple javascript. +The `renderer` package builds as a regular web app. + +### Compile App + +The next step is to package a ready to distribute Electron app for macOS, Windows and Linux with "auto update" support +out of the box. + +To do this, use [electron-builder]: + +- Using the npm script `compile`: This script is configured to compile the application as quickly as possible. It is not + ready for distribution, it is compiled only for the current platform and is used for debugging. +- Using GitHub Actions: The application is compiled for any platform and ready-to-distribute files are automatically + added as a draft to the GitHub releases page. + +### Working with dependencies + +Because the `renderer` works and builds like a _regular web application_, you can only use dependencies that support the +browser or compile to a browser-friendly format. + +This means that in the `renderer` you are free to use any frontend dependencies such as Vue, React, lodash, axios and so +on. However, you _CANNOT_ use any native Node.js APIs, such as, `systeminformation`. These APIs are _only_ available in +a Node.js runtime environment and will cause your application to crash if used in the `renderer` layer. Instead, if you +need access to Node.js runtime APIs in your frontend, export a function form the `preload` package. + +All dependencies that require Node.js api can be used in +the [`preload` script](https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts). + +#### Expose in main world +Here is an example. Let's say you need to read some data from the file system or database in the renderer. + +In the preload context, create a function that reads and returns data. To make the function announced in the preload +available in the render, you usually need to call +the [`electron.contextBridge.exposeInMainWorld`](https://www.electronjs.org/ru/docs/latest/api/context-bridge). However, +this template uses the [unplugin-auto-expose](https://github.com/cawa-93/unplugin-auto-expose) plugin, so you just need +to export the method from the preload. The `exposeInMainWorld` will be called automatically. + +```ts +// preload/index.ts +import { readFile } from 'node:fs/promises'; + +// Encapsulate types if you use typescript +interface UserData { + prop: string +} + +// Encapsulate all node.js api +// Everything you exported from preload/index.ts may be called in renderer +export function getUserData(): Promise { + return readFile('/path/to/file/in/user/filesystem.json', {encoding:'utf8'}).then(JSON.parse); +} +``` + +Now you can import and call the method in renderer + +```ts +// renderer/anywere/component.ts +import { getUserData } from '#preload' +const userData = await getUserData() +``` + +> Find more in [Context Isolation tutorial](https://www.electronjs.org/docs/tutorial/context-isolation#security-considerations). + +### Working with Electron API + +Although the preload has access to all of Node.js's API, it **still runs in the BrowserWindow context**, so a limited +electron modules are available in it. Check the [electron docs](https://www.electronjs.org/ru/docs/latest/api/clipboard) +for full list of available methods. + +All other electron methods can be invoked in the `main`. + +As a result, the architecture of interaction between all modules is as follows: + +```mermaid +sequenceDiagram +renderer->>+preload: Read data from file system +preload->>-renderer: Data +renderer->>preload: Maximize window +activate preload +preload-->>main: Invoke IPC command +activate main +main-->>preload: IPC response +deactivate main +preload->>renderer: Window maximized +deactivate preload +``` + +> Find more in [Inter-Process Communication tutorial](https://www.electronjs.org/docs/latest/tutorial/ipc). + +### Modes and Environment Variables + +All environment variables are set as part of the `import.meta`, so you can access them vie the following +way: `import.meta.env`. + +> **Note**: +> If you are using TypeScript and want to get code completion you must add all the environment variables to +the [`ImportMetaEnv` in `types/env.d.ts`](types/env.d.ts). + +The mode option is used to specify the value of `import.meta.env.MODE` and the corresponding environment variables files +that need to be loaded. + +By default, there are two modes: + +- `production` is used by default +- `development` is used by `npm run watch` script + +When running the build script, the environment variables are loaded from the following files in your project root: + +``` +.env # loaded in all cases +.env.local # loaded in all cases, ignored by git +.env.[mode] # only loaded in specified env mode +.env.[mode].local # only loaded in specified env mode, ignored by git +``` + +> **Warning**: +> To prevent accidentally leaking env variables to the client, only variables prefixed with `VITE_` are exposed to your +Vite-processed code. + +For example let's take the following `.env` file: + +``` +DB_PASSWORD=foobar +VITE_SOME_KEY=123 +``` + +Only `VITE_SOME_KEY` will be exposed as `import.meta.env.VITE_SOME_KEY` to your client source code, but `DB_PASSWORD` +will not. + +You can change that prefix or add another. See [`envPrefix`](https://vitejs.dev/config/shared-options.html#envprefix) + +## Contribution + +See [Contributing Guide](contributing.md). + + +[vite]: https://github.com/vitejs/vite/ + +[electron]: https://github.com/electron/electron + +[electron-builder]: https://github.com/electron-userland/electron-builder + +[vue]: https://github.com/vuejs/vue-next + +[vue-router]: https://github.com/vuejs/vue-router-next/ + +[typescript]: https://github.com/microsoft/TypeScript/ + +[playwright]: https://playwright.dev + +[vitest]: https://vitest.dev + +[vue-tsc]: https://github.com/johnsoncodehk/vue-tsc + +[eslint-plugin-vue]: https://github.com/vuejs/eslint-plugin-vue + +[cawa-93-github]: https://github.com/cawa-93/ + +[cawa-93-sponsor]: https://www.patreon.com/Kozack/ diff --git a/buildResources/.gitkeep b/buildResources/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/buildResources/icon.icns b/buildResources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..d20a6d17a4105ce48005d338aa69e31ddb5faf6b GIT binary patch literal 76548 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.0.0" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", + "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", + "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", + "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", + "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", + "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", + "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", + "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", + "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", + "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", + "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", + "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", + "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", + "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", + "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", + "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", + "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", + "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", + "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", + "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", + "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", + "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", + "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz", + "integrity": "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "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==", + "dev": true + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "optional": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.16.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.7.tgz", + "integrity": "sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==", + "dev": true + }, + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", + "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==" + }, + "node_modules/@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "dev": true, + "optional": true + }, + "node_modules/@types/yargs": { + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.8.tgz", + "integrity": "sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz", + "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/type-utils": "5.59.5", + "@typescript-eslint/utils": "5.59.5", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.1.tgz", + "integrity": "sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.8.1", + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/typescript-estree": "5.8.1", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz", + "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz", + "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/utils": "5.59.5", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz", + "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz", + "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz", + "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz", + "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==", + "dev": true, + "peer": true, + "dependencies": { + "@typescript-eslint/types": "5.8.1", + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.2.tgz", + "integrity": "sha512-kNH4wMAqs13UiZe/2If1ioO0Mjz71rr2oALTl2c5ajBIox9Vz/UGW/wGkr7GA3SC6Eb29c1HtzAtxdGfbXAkfQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitest/expect": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.0.tgz", + "integrity": "sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.31.0", + "@vitest/utils": "0.31.0", + "chai": "^4.3.7" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.31.0.tgz", + "integrity": "sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.31.0", + "concordance": "^5.0.4", + "p-limit": "^4.0.0", + "pathe": "^1.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.31.0.tgz", + "integrity": "sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "pretty-format": "^27.5.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vitest/snapshot/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/@vitest/spy": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.31.0.tgz", + "integrity": "sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==", + "dev": true, + "dependencies": { + "tinyspy": "^2.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.31.0.tgz", + "integrity": "sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==", + "dev": true, + "dependencies": { + "concordance": "^5.0.4", + "loupe": "^2.3.6", + "pretty-format": "^27.5.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@volar/language-core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.4.1.tgz", + "integrity": "sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.4.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.4.1.tgz", + "integrity": "sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==", + "dev": true, + "dependencies": { + "muggle-string": "^0.2.2" + } + }, + "node_modules/@volar/typescript": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.4.1.tgz", + "integrity": "sha512-phTy6p9yG6bgMIKQWEeDOi/aeT0njZsb1a/G1mrEuDsLmAn24Le4gDwSsGNhea6Uhu+3gdpUZn2PmZXa+WG2iQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.4.1" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/vue-language-core": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.6.4.tgz", + "integrity": "sha512-1o+cAtN2DIDNAX/HS8rkjZc8wTMTK+zCab/qtYbvEVlmokhZiDrQeoD9/l0Ug7YCNg+mVuMNHKNBY7pX8U2/Jw==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.4.1", + "@volar/source-map": "1.4.1", + "@vue/compiler-dom": "^3.3.0-beta.3", + "@vue/compiler-sfc": "^3.3.0-beta.3", + "@vue/reactivity": "^3.3.0-beta.3", + "@vue/shared": "^3.3.0-beta.3", + "minimatch": "^9.0.0", + "muggle-string": "^0.2.2", + "vue-template-compiler": "^2.7.14" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/compiler-core": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.0-beta.3.tgz", + "integrity": "sha512-mv2rPo4JHou6ebm7+U/wO1HpA6W1zDfTqbt4fqjoXrMwU4DWNgRcLKTXG6G3cXV4mOe+2YgWspfxEzo7fPTMKg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.0-beta.3", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/compiler-dom": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.0-beta.3.tgz", + "integrity": "sha512-e7VpjN9wYiuJdJos6Uoe501CzdMkfaEr/27Ks4Ss7Irtcj5YA/S1OROZ35Xl2Pc3ctx6beq5RpcOvnMqh0hcaA==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/compiler-sfc": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.0-beta.3.tgz", + "integrity": "sha512-6shZNooetShjSMHJvgVoE0EM8pOMV5vnrzsHoCU06stzV+kqRJQpbN7xf2s9wK2fgHMIBSMINrM9AuZiQnNCJg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.0-beta.3", + "@vue/compiler-dom": "3.3.0-beta.3", + "@vue/compiler-ssr": "3.3.0-beta.3", + "@vue/reactivity-transform": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/compiler-ssr": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.0-beta.3.tgz", + "integrity": "sha512-egJ0lEVAod3Hpnw96cJ/0a9qv5f5h5/VCBpKYT8scqkzoMsikh8AJant2omokBCL/Ut5UAMLVQlA5b66+2Ys/g==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/reactivity": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.0-beta.3.tgz", + "integrity": "sha512-9VjWfWgZJ18YXEkfnDfZr33RyLBa6zc0RARLkMqMApWvM26eusZAZ4hhyxlgODBU/mEFk4XOGIAtwwSQedA0MQ==", + "dev": true, + "dependencies": { + "@vue/shared": "3.3.0-beta.3" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/reactivity-transform": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.0-beta.3.tgz", + "integrity": "sha512-aM3TgBca9QMMu/9B9ASRVvckeZpAdJO9nmQh5UCznhoDYjVxQPS+sCQvH6TLOjPB1MDQMVQYg4ZiPqfVVo7NbA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@volar/vue-language-core/node_modules/@vue/shared": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.0-beta.3.tgz", + "integrity": "sha512-st1SnB/Bkbb9TsieeI4TRX9TqHYIR5wvIma3ZtEben55EYSWa1q5u2BhTNgABSdH+rv3Xwfrvpwh5PmCw6Y53g==", + "dev": true + }, + "node_modules/@volar/vue-language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@volar/vue-language-core/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@volar/vue-language-core/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.6.4.tgz", + "integrity": "sha512-qKwgP0KVQR/aaH/SN3AP7RB8NnXPWDn3tjyXP6IT6etxkDeZLBLsXWUD9KMak/RvV1DgbXDuz4F9yuZlbt29rA==", + "dev": true, + "dependencies": { + "@volar/typescript": "1.4.1", + "@volar/vue-language-core": "1.6.4" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", + "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", + "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", + "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-ssr": "3.2.47", + "@vue/reactivity-transform": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", + "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", + "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", + "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", + "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", + "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.2.47", + "@vue/shared": "3.2.47", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", + "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.2.47", + "@vue/shared": "3.2.47" + }, + "peerDependencies": { + "vue": "3.2.47" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, + "node_modules/@vue/test-utils": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.3.2.tgz", + "integrity": "sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==", + "dev": true, + "dependencies": { + "js-beautify": "1.14.6" + }, + "optionalDependencies": { + "@vue/compiler-dom": "^3.0.1", + "@vue/server-renderer": "^3.0.1" + }, + "peerDependencies": { + "@vue/compiler-dom": "^3.0.1", + "@vue/server-renderer": "^3.0.1", + "vue": "^3.0.1" + } + }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + "dev": true, + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "dev": true, + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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" + } + ] + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5" + } + }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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" + } + ], + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "dev": true + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "optional": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "dependencies": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", + "dev": true + }, + "node_modules/date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "optional": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, + "node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" + } + }, + "node_modules/dir-compare/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "dev": true, + "dependencies": { + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" + } + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "deprecated": "Disk image license agreements are deprecated by Apple and will probably be removed in a future macOS release. Discussion at: https://github.com/argv-minus-one/dmg-license/issues/11", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-24.3.0.tgz", + "integrity": "sha512-M7PpfpOzGdLeZPr2xhxXuvJeoXPEHMH40Rtv8BCGleRPolwna9BepAGc0H0F+Uz5kGKOv3xcm99fTurvXUH0nw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "dev": true, + "dependencies": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-osx-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/electron-osx-sign/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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/electron-osx-sign/node_modules/isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "dependencies": { + "buffer-alloc": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/electron-osx-sign/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-updater": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz", + "integrity": "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==", + "dependencies": { + "@types/semver": "^7.3.6", + "builder-util-runtime": "9.1.1", + "fs-extra": "^10.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.5", + "typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-updater/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-updater/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/esbuild": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", + "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.12", + "@esbuild/android-arm64": "0.17.12", + "@esbuild/android-x64": "0.17.12", + "@esbuild/darwin-arm64": "0.17.12", + "@esbuild/darwin-x64": "0.17.12", + "@esbuild/freebsd-arm64": "0.17.12", + "@esbuild/freebsd-x64": "0.17.12", + "@esbuild/linux-arm": "0.17.12", + "@esbuild/linux-arm64": "0.17.12", + "@esbuild/linux-ia32": "0.17.12", + "@esbuild/linux-loong64": "0.17.12", + "@esbuild/linux-mips64el": "0.17.12", + "@esbuild/linux-ppc64": "0.17.12", + "@esbuild/linux-riscv64": "0.17.12", + "@esbuild/linux-s390x": "0.17.12", + "@esbuild/linux-x64": "0.17.12", + "@esbuild/netbsd-x64": "0.17.12", + "@esbuild/openbsd-x64": "0.17.12", + "@esbuild/sunos-x64": "0.17.12", + "@esbuild/win32-arm64": "0.17.12", + "@esbuild/win32-ia32": "0.17.12", + "@esbuild/win32-x64": "0.17.12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.11.1.tgz", + "integrity": "sha512-SNtBGDrRkPUFsREswPceqdvZ7YVdWY+iCYiDC+RoxwVieeQ7GJU1FLDlkcaYTOD2os/YuVgI1Fdu8YGM7fmoow==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.3.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "optional": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "dev": true + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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, + "optional": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "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==", + "dev": true, + "optional": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/happy-dom": { + "version": "9.10.9", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-9.10.9.tgz", + "integrity": "sha512-3RnOyu6buPMpDAyOpp8yfR5Xi/k2p5MhrDwlG/dgpVHkptFN5IqubdbGOQU5luB7ANh6a08GOuiB+Bo9JCzCBw==", + "dev": true, + "dependencies": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "iconv-lite": "^0.6.3", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "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, + "optional": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "optional": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "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==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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" + } + ], + "optional": true + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "optional": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "dependencies": { + "blueimp-md5": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minipass": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", + "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/muggle-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz", + "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", + "dev": true + }, + "node_modules/nano-staged": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/nano-staged/-/nano-staged-0.8.0.tgz", + "integrity": "sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0" + }, + "bin": { + "nano-staged": "lib/bin.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + } + }, + "node_modules/playwright": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.33.0.tgz", + "integrity": "sha512-+zzU3V2TslRX2ETBRgQKsKytYBkJeLZ2xzUj4JohnZnxQnivoUvOvNbRBYWSYykQTO0Y4zb8NwZTYFUO+EpPBQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "playwright-core": "1.33.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/playwright-core": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", + "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", + "dev": true, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "dependencies": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/rollup": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.0.tgz", + "integrity": "sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/simple-git-hooks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.8.1.tgz", + "integrity": "sha512-DYpcVR1AGtSfFUNzlBdHrQGPsOhuuEJ/FkmPOOlFysP60AHd3nsEpkGq/QEOdtUyT1Qhk7w9oLmFoMG+75BDog==", + "dev": true, + "hasInstallScript": true, + "bin": { + "simple-git-hooks": "cli.js" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/std-env": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", + "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tinybench": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.4.0.tgz", + "integrity": "sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.5.0.tgz", + "integrity": "sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.0.tgz", + "integrity": "sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "optional": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + "optionalDependencies": { + "rxjs": "*" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/ufo": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.5.tgz", + "integrity": "sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unplugin": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.10.2.tgz", + "integrity": "sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.5" + } + }, + "node_modules/unplugin-auto-expose": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/unplugin-auto-expose/-/unplugin-auto-expose-0.0.4.tgz", + "integrity": "sha512-TMkcJll/FODZW3+O/H/caZg+C5TUdMgu20xvB/YKqVpGjpbxaInSlAZrcKh8ifpCY6V+aMKQ4ubiEVJ87Otlog==", + "dev": true, + "dependencies": { + "magic-string": "^0.26.7", + "mlly": "0.5.16", + "unplugin": "0.10.2" + } + }, + "node_modules/unplugin-auto-expose/node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "optional": true + }, + "node_modules/vite": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.5.tgz", + "integrity": "sha512-0gEnL9wiRFxgz40o/i/eTBwm+NEbpUeTWhzKrZDSdKm6nplj+z4lKz8ANDgildxHm47Vg8EUia0aicKbawUVVA==", + "dev": true, + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.31.0.tgz", + "integrity": "sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.2.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/mlly": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.2.0.tgz", + "integrity": "sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2", + "pathe": "^1.1.0", + "pkg-types": "^1.0.2", + "ufo": "^1.1.1" + } + }, + "node_modules/vite-node/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/vite-node/node_modules/pkg-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz", + "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.1.1", + "pathe": "^1.1.0" + } + }, + "node_modules/vite-node/node_modules/ufo": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.1.tgz", + "integrity": "sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==", + "dev": true + }, + "node_modules/vitest": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.0.tgz", + "integrity": "sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.31.0", + "@vitest/runner": "0.31.0", + "@vitest/snapshot": "0.31.0", + "@vitest/spy": "0.31.0", + "@vitest/utils": "0.31.0", + "acorn": "^8.8.2", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "concordance": "^5.0.4", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.2", + "strip-literal": "^1.0.1", + "tinybench": "^2.4.0", + "tinypool": "^0.5.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.31.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/vue": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", + "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/runtime-dom": "3.2.47", + "@vue/server-renderer": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.2.tgz", + "integrity": "sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.6.4.tgz", + "integrity": "sha512-8rg8S1AhRJ6/WriENQEhyqH5wsxSxuD5iaD+QnkZn2ArZ6evlhqfBAIcVN8mfSyCV9DeLkQXkOSv/MaeJiJPAQ==", + "dev": true, + "dependencies": { + "@volar/vue-language-core": "1.6.4", + "@volar/vue-typescript": "1.6.4", + "semver": "^7.3.8" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.5.tgz", + "integrity": "sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==", + "dev": true + }, + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@electron/get": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", + "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@esbuild/android-arm": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz", + "integrity": "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz", + "integrity": "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz", + "integrity": "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz", + "integrity": "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz", + "integrity": "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz", + "integrity": "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz", + "integrity": "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz", + "integrity": "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz", + "integrity": "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz", + "integrity": "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz", + "integrity": "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz", + "integrity": "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz", + "integrity": "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz", + "integrity": "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz", + "integrity": "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz", + "integrity": "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz", + "integrity": "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz", + "integrity": "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz", + "integrity": "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz", + "integrity": "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz", + "integrity": "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz", + "integrity": "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz", + "integrity": "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.40.0.tgz", + "integrity": "sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@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==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "requires": { + "@types/ms": "*" + } + }, + "@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "optional": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true, + "optional": true + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "@types/node": { + "version": "18.16.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.7.tgz", + "integrity": "sha512-MFg7ua/bRtnA1hYE3pVyWxGd/r7aMqjNOdHvlSsXV3n8iaeGKkOaPzpJh6/ovf4bEXWcojkeMJpTsq3mzXW4IQ==", + "dev": true + }, + "@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/semver": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", + "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==" + }, + "@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "dev": true, + "optional": true + }, + "@types/yargs": { + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.8.tgz", + "integrity": "sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.5.tgz", + "integrity": "sha512-feA9xbVRWJZor+AnLNAr7A8JRWeZqHUf4T9tlP+TN04b05pFVhO5eN7/O93Y/1OUlLMHKbnJisgDURs/qvtqdg==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/type-utils": "5.59.5", + "@typescript-eslint/utils": "5.59.5", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" + } + }, + "@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.1.tgz", + "integrity": "sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/scope-manager": "5.8.1", + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/typescript-estree": "5.8.1", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz", + "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.5.tgz", + "integrity": "sha512-4eyhS7oGym67/pSxA2mmNq7X164oqDYNnZCUayBwJZIRVvKpBCMBzFnFxjeoDeShjtO6RQBHBuwybuX3POnDqg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.59.5", + "@typescript-eslint/utils": "5.59.5", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz", + "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==", + "dev": true, + "peer": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz", + "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.5.tgz", + "integrity": "sha512-sCEHOiw+RbyTii9c3/qN74hYDPNORb8yWCoPLmB7BIflhplJ65u2PBpdRla12e3SSTJ2erRkPjz7ngLHhUegxA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" + } + }, + "@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz", + "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==", + "dev": true, + "peer": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "eslint-visitor-keys": "^3.0.0" + } + }, + "@vitejs/plugin-vue": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.2.tgz", + "integrity": "sha512-kNH4wMAqs13UiZe/2If1ioO0Mjz71rr2oALTl2c5ajBIox9Vz/UGW/wGkr7GA3SC6Eb29c1HtzAtxdGfbXAkfQ==", + "dev": true, + "requires": {} + }, + "@vitest/expect": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.31.0.tgz", + "integrity": "sha512-Jlm8ZTyp6vMY9iz9Ny9a0BHnCG4fqBa8neCF6Pk/c/6vkUk49Ls6UBlgGAU82QnzzoaUs9E/mUhq/eq9uMOv/g==", + "dev": true, + "requires": { + "@vitest/spy": "0.31.0", + "@vitest/utils": "0.31.0", + "chai": "^4.3.7" + } + }, + "@vitest/runner": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.31.0.tgz", + "integrity": "sha512-H1OE+Ly7JFeBwnpHTrKyCNm/oZgr+16N4qIlzzqSG/YRQDATBYmJb/KUn3GrZaiQQyL7GwpNHVZxSQd6juLCgw==", + "dev": true, + "requires": { + "@vitest/utils": "0.31.0", + "concordance": "^5.0.4", + "p-limit": "^4.0.0", + "pathe": "^1.1.0" + }, + "dependencies": { + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@vitest/snapshot": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.31.0.tgz", + "integrity": "sha512-5dTXhbHnyUMTMOujZPB0wjFjQ6q5x9c8TvAsSPUNKjp1tVU7i9pbqcKPqntyu2oXtmVxKbuHCqrOd+Ft60r4tg==", + "dev": true, + "requires": { + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + } + } + }, + "@vitest/spy": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.31.0.tgz", + "integrity": "sha512-IzCEQ85RN26GqjQNkYahgVLLkULOxOm5H/t364LG0JYb3Apg0PsYCHLBYGA006+SVRMWhQvHlBBCyuByAMFmkg==", + "dev": true, + "requires": { + "tinyspy": "^2.1.0" + } + }, + "@vitest/utils": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.31.0.tgz", + "integrity": "sha512-kahaRyLX7GS1urekRXN2752X4gIgOGVX4Wo8eDUGUkTWlGpXzf5ZS6N9RUUS+Re3XEE8nVGqNyxkSxF5HXlGhQ==", + "dev": true, + "requires": { + "concordance": "^5.0.4", + "loupe": "^2.3.6", + "pretty-format": "^27.5.1" + } + }, + "@volar/language-core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.4.1.tgz", + "integrity": "sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==", + "dev": true, + "requires": { + "@volar/source-map": "1.4.1" + } + }, + "@volar/source-map": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.4.1.tgz", + "integrity": "sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==", + "dev": true, + "requires": { + "muggle-string": "^0.2.2" + } + }, + "@volar/typescript": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.4.1.tgz", + "integrity": "sha512-phTy6p9yG6bgMIKQWEeDOi/aeT0njZsb1a/G1mrEuDsLmAn24Le4gDwSsGNhea6Uhu+3gdpUZn2PmZXa+WG2iQ==", + "dev": true, + "requires": { + "@volar/language-core": "1.4.1" + } + }, + "@volar/vue-language-core": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.6.4.tgz", + "integrity": "sha512-1o+cAtN2DIDNAX/HS8rkjZc8wTMTK+zCab/qtYbvEVlmokhZiDrQeoD9/l0Ug7YCNg+mVuMNHKNBY7pX8U2/Jw==", + "dev": true, + "requires": { + "@volar/language-core": "1.4.1", + "@volar/source-map": "1.4.1", + "@vue/compiler-dom": "^3.3.0-beta.3", + "@vue/compiler-sfc": "^3.3.0-beta.3", + "@vue/reactivity": "^3.3.0-beta.3", + "@vue/shared": "^3.3.0-beta.3", + "minimatch": "^9.0.0", + "muggle-string": "^0.2.2", + "vue-template-compiler": "^2.7.14" + }, + "dependencies": { + "@vue/compiler-core": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.0-beta.3.tgz", + "integrity": "sha512-mv2rPo4JHou6ebm7+U/wO1HpA6W1zDfTqbt4fqjoXrMwU4DWNgRcLKTXG6G3cXV4mOe+2YgWspfxEzo7fPTMKg==", + "dev": true, + "requires": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.0-beta.3", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.0-beta.3.tgz", + "integrity": "sha512-e7VpjN9wYiuJdJos6Uoe501CzdMkfaEr/27Ks4Ss7Irtcj5YA/S1OROZ35Xl2Pc3ctx6beq5RpcOvnMqh0hcaA==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3" + } + }, + "@vue/compiler-sfc": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.0-beta.3.tgz", + "integrity": "sha512-6shZNooetShjSMHJvgVoE0EM8pOMV5vnrzsHoCU06stzV+kqRJQpbN7xf2s9wK2fgHMIBSMINrM9AuZiQnNCJg==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.0-beta.3", + "@vue/compiler-dom": "3.3.0-beta.3", + "@vue/compiler-ssr": "3.3.0-beta.3", + "@vue/reactivity-transform": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.0-beta.3.tgz", + "integrity": "sha512-egJ0lEVAod3Hpnw96cJ/0a9qv5f5h5/VCBpKYT8scqkzoMsikh8AJant2omokBCL/Ut5UAMLVQlA5b66+2Ys/g==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3" + } + }, + "@vue/reactivity": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.0-beta.3.tgz", + "integrity": "sha512-9VjWfWgZJ18YXEkfnDfZr33RyLBa6zc0RARLkMqMApWvM26eusZAZ4hhyxlgODBU/mEFk4XOGIAtwwSQedA0MQ==", + "dev": true, + "requires": { + "@vue/shared": "3.3.0-beta.3" + } + }, + "@vue/reactivity-transform": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.0-beta.3.tgz", + "integrity": "sha512-aM3TgBca9QMMu/9B9ASRVvckeZpAdJO9nmQh5UCznhoDYjVxQPS+sCQvH6TLOjPB1MDQMVQYg4ZiPqfVVo7NbA==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.0-beta.3", + "@vue/shared": "3.3.0-beta.3", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "@vue/shared": { + "version": "3.3.0-beta.3", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.0-beta.3.tgz", + "integrity": "sha512-st1SnB/Bkbb9TsieeI4TRX9TqHYIR5wvIma3ZtEben55EYSWa1q5u2BhTNgABSdH+rv3Xwfrvpwh5PmCw6Y53g==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@volar/vue-typescript": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.6.4.tgz", + "integrity": "sha512-qKwgP0KVQR/aaH/SN3AP7RB8NnXPWDn3tjyXP6IT6etxkDeZLBLsXWUD9KMak/RvV1DgbXDuz4F9yuZlbt29rA==", + "dev": true, + "requires": { + "@volar/typescript": "1.4.1", + "@volar/vue-language-core": "1.6.4" + } + }, + "@vue/compiler-core": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", + "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", + "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", + "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-ssr": "3.2.47", + "@vue/reactivity-transform": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-ssr": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", + "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "@vue/reactivity": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", + "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", + "dev": true, + "requires": { + "@vue/shared": "3.2.47" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", + "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", + "dev": true, + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.47", + "@vue/shared": "3.2.47", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", + "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", + "dev": true, + "requires": { + "@vue/reactivity": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "@vue/runtime-dom": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", + "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", + "dev": true, + "requires": { + "@vue/runtime-core": "3.2.47", + "@vue/shared": "3.2.47", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", + "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, + "@vue/test-utils": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.3.2.tgz", + "integrity": "sha512-hJnVaYhbrIm0yBS0+e1Y0Sj85cMyAi+PAbK4JHqMRUZ6S622Goa+G7QzkRSyvCteG8wop7tipuEbHoZo26wsSA==", + "dev": true, + "requires": { + "@vue/compiler-dom": "^3.0.1", + "@vue/server-renderer": "^3.0.1", + "js-beautify": "1.14.6" + } + }, + "7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "app-builder-lib": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-23.6.0.tgz", + "integrity": "sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==", + "dev": true, + "requires": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.2.1", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.7", + "electron-osx-sign": "^0.6.0", + "electron-publish": "23.6.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.10", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.1.2", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.7", + "tar": "^6.1.11", + "temp-file": "^3.4.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "asar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "optional": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "optional": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, + "blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builder-util": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-23.6.0.tgz", + "integrity": "sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==", + "dev": true, + "requires": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "builder-util-runtime": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", + "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "requires": { + "debug": "^4.3.4", + "sax": "^1.2.4" + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "ci-info": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", + "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", + "dev": true + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "optional": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "requires": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.1.0" + } + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", + "dev": true + }, + "date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "requires": { + "time-zone": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "optional": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dmg-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-23.6.0.tgz", + "integrity": "sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==", + "dev": true, + "requires": { + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "dmg-license": "^1.0.11", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", + "dev": true, + "optional": true, + "requires": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-24.3.0.tgz", + "integrity": "sha512-M7PpfpOzGdLeZPr2xhxXuvJeoXPEHMH40Rtv8BCGleRPolwna9BepAGc0H0F+Uz5kGKOv3xcm99fTurvXUH0nw==", + "dev": true, + "requires": { + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" + } + }, + "electron-builder": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-23.6.0.tgz", + "integrity": "sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==", + "dev": true, + "requires": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "23.6.0", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "dmg-builder": "23.6.0", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "simple-update-notifier": "^1.0.7", + "yargs": "^17.5.1" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-osx-sign": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", + "integrity": "sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "electron-publish": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-23.6.0.tgz", + "integrity": "sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "23.6.0", + "builder-util-runtime": "9.1.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-updater": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz", + "integrity": "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==", + "requires": { + "@types/semver": "^7.3.6", + "builder-util-runtime": "9.1.1", + "fs-extra": "^10.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.5", + "typed-emitter": "^2.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.17.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz", + "integrity": "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.17.12", + "@esbuild/android-arm64": "0.17.12", + "@esbuild/android-x64": "0.17.12", + "@esbuild/darwin-arm64": "0.17.12", + "@esbuild/darwin-x64": "0.17.12", + "@esbuild/freebsd-arm64": "0.17.12", + "@esbuild/freebsd-x64": "0.17.12", + "@esbuild/linux-arm": "0.17.12", + "@esbuild/linux-arm64": "0.17.12", + "@esbuild/linux-ia32": "0.17.12", + "@esbuild/linux-loong64": "0.17.12", + "@esbuild/linux-mips64el": "0.17.12", + "@esbuild/linux-ppc64": "0.17.12", + "@esbuild/linux-riscv64": "0.17.12", + "@esbuild/linux-s390x": "0.17.12", + "@esbuild/linux-x64": "0.17.12", + "@esbuild/netbsd-x64": "0.17.12", + "@esbuild/openbsd-x64": "0.17.12", + "@esbuild/sunos-x64": "0.17.12", + "@esbuild/win32-arm64": "0.17.12", + "@esbuild/win32-ia32": "0.17.12", + "@esbuild/win32-x64": "0.17.12" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.40.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.5.2", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-plugin-vue": { + "version": "9.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.11.1.tgz", + "integrity": "sha512-SNtBGDrRkPUFsREswPceqdvZ7YVdWY+iCYiDC+RoxwVieeQ7GJU1FLDlkcaYTOD2os/YuVgI1Fdu8YGM7fmoow==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.3.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "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==", + "dev": true + }, + "espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "dev": true, + "optional": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "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==", + "dev": true, + "optional": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + } + }, + "globals": { + "version": "13.19.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", + "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalthis": { + "version": "1.0.3", + "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" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "got": { + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "happy-dom": { + "version": "9.10.9", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-9.10.9.tgz", + "integrity": "sha512-3RnOyu6buPMpDAyOpp8yfR5Xi/k2p5MhrDwlG/dgpVHkptFN5IqubdbGOQU5luB7ANh6a08GOuiB+Bo9JCzCBw==", + "dev": true, + "requires": { + "css.escape": "^1.5.1", + "he": "^1.2.0", + "iconv-lite": "^0.6.3", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "optional": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "optional": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "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==", + "dev": true, + "optional": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "requires": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "optional": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "js-beautify": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", + "dev": true, + "requires": { + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, + "js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "optional": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + } + }, + "md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "requires": { + "blueimp-md5": "^2.10.0" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.3.tgz", + "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "muggle-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz", + "integrity": "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==", + "dev": true + }, + "nano-staged": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/nano-staged/-/nano-staged-0.8.0.tgz", + "integrity": "sha512-QSEqPGTCJbkHU2yLvfY6huqYPjdBrOaTMKatO1F8nCSrkQGXeKwtCiCnsdxnuMhbg3DTVywKaeWLGCE5oJpq0g==", + "dev": true, + "requires": { + "picocolors": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "optional": true + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + } + }, + "playwright": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.33.0.tgz", + "integrity": "sha512-+zzU3V2TslRX2ETBRgQKsKytYBkJeLZ2xzUj4JohnZnxQnivoUvOvNbRBYWSYykQTO0Y4zb8NwZTYFUO+EpPBQ==", + "dev": true, + "requires": { + "playwright-core": "1.33.0" + } + }, + "playwright-core": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", + "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", + "dev": true + }, + "plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "dev": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + } + } + }, + "postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dev": true, + "requires": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "rollup": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.0.tgz", + "integrity": "sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "optional": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "requires": { + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "simple-git-hooks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.8.1.tgz", + "integrity": "sha512-DYpcVR1AGtSfFUNzlBdHrQGPsOhuuEJ/FkmPOOlFysP60AHd3nsEpkGq/QEOdtUyT1Qhk7w9oLmFoMG+75BDog==", + "dev": true + }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, + "stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true + }, + "std-env": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", + "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "requires": { + "acorn": "^8.8.2" + } + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "requires": { + "debug": "^4.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "requires": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "dev": true + }, + "tinybench": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.4.0.tgz", + "integrity": "sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==", + "dev": true + }, + "tinypool": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.5.0.tgz", + "integrity": "sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==", + "dev": true + }, + "tinyspy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.0.tgz", + "integrity": "sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "requires": { + "tmp": "^0.2.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "optional": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + "requires": { + "rxjs": "*" + } + }, + "typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true + }, + "ufo": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.5.tgz", + "integrity": "sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unplugin": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.10.2.tgz", + "integrity": "sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.5" + } + }, + "unplugin-auto-expose": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/unplugin-auto-expose/-/unplugin-auto-expose-0.0.4.tgz", + "integrity": "sha512-TMkcJll/FODZW3+O/H/caZg+C5TUdMgu20xvB/YKqVpGjpbxaInSlAZrcKh8ifpCY6V+aMKQ4ubiEVJ87Otlog==", + "dev": true, + "requires": { + "magic-string": "^0.26.7", + "mlly": "0.5.16", + "unplugin": "0.10.2" + }, + "dependencies": { + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "optional": true + } + } + }, + "vite": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.5.tgz", + "integrity": "sha512-0gEnL9wiRFxgz40o/i/eTBwm+NEbpUeTWhzKrZDSdKm6nplj+z4lKz8ANDgildxHm47Vg8EUia0aicKbawUVVA==", + "dev": true, + "requires": { + "esbuild": "^0.17.5", + "fsevents": "~2.3.2", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + } + }, + "vite-node": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.31.0.tgz", + "integrity": "sha512-8x1x1LNuPvE2vIvkSB7c1mApX5oqlgsxzHQesYF7l5n1gKrEmrClIiZuOFbFDQcjLsmcWSwwmrWrcGWm9Fxc/g==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.2.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "dependencies": { + "mlly": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.2.0.tgz", + "integrity": "sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==", + "dev": true, + "requires": { + "acorn": "^8.8.2", + "pathe": "^1.1.0", + "pkg-types": "^1.0.2", + "ufo": "^1.1.1" + } + }, + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "pkg-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz", + "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.1.1", + "pathe": "^1.1.0" + } + }, + "ufo": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.1.tgz", + "integrity": "sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==", + "dev": true + } + } + }, + "vitest": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.31.0.tgz", + "integrity": "sha512-JwWJS9p3GU9GxkG7eBSmr4Q4x4bvVBSswaCFf1PBNHiPx00obfhHRJfgHcnI0ffn+NMlIh9QGvG75FlaIBdKGA==", + "dev": true, + "requires": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.31.0", + "@vitest/runner": "0.31.0", + "@vitest/snapshot": "0.31.0", + "@vitest/spy": "0.31.0", + "@vitest/utils": "0.31.0", + "acorn": "^8.8.2", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "concordance": "^5.0.4", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.2", + "strip-literal": "^1.0.1", + "tinybench": "^2.4.0", + "tinypool": "^0.5.0", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.31.0", + "why-is-node-running": "^2.2.2" + }, + "dependencies": { + "magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + }, + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + } + } + }, + "vue": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", + "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.47", + "@vue/compiler-sfc": "3.2.47", + "@vue/runtime-dom": "3.2.47", + "@vue/server-renderer": "3.2.47", + "@vue/shared": "3.2.47" + } + }, + "vue-eslint-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.0.2.tgz", + "integrity": "sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", + "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "vue-tsc": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.6.4.tgz", + "integrity": "sha512-8rg8S1AhRJ6/WriENQEhyqH5wsxSxuD5iaD+QnkZn2ArZ6evlhqfBAIcVN8mfSyCV9DeLkQXkOSv/MaeJiJPAQ==", + "dev": true, + "requires": { + "@volar/vue-language-core": "1.6.4", + "@volar/vue-typescript": "1.6.4", + "semver": "^7.3.8" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "requires": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "optional": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", + "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true + }, + "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" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..be63f08 --- /dev/null +++ b/package.json @@ -0,0 +1,56 @@ +{ + "name": "vite-electron-builder", + "description": "Secure boilerplate for Electron app based on Vite", + "version": "1.0.2", + "private": true, + "author": { + "email": "kozackunisoft@gmail.com", + "name": "Alex Kozack", + "url": "https://kozack.me" + }, + "main": "packages/main/dist/index.cjs", + "scripts": { + "build": "npm run build:main && npm run build:preload && npm run build:renderer", + "build:main": "cd ./packages/main && vite build", + "build:preload": "cd ./packages/preload && vite build", + "build:renderer": "cd ./packages/renderer && vite build", + "compile": "cross-env MODE=production npm run build && electron-builder build --config .electron-builder.config.js --dir --config.asar=false", + "test": "npm run test:main && npm run test:preload && npm run test:renderer && npm run test:e2e", + "test:e2e": "npm run build && vitest run", + "test:main": "vitest run -r packages/main --passWithNoTests", + "test:preload": "vitest run -r packages/preload --passWithNoTests", + "test:renderer": "vitest run -r packages/renderer --passWithNoTests", + "watch": "node scripts/watch.mjs", + "lint": "eslint . --ext js,mjs,cjs,ts,mts,cts,vue", + "typecheck:main": "tsc --noEmit -p packages/main/tsconfig.json", + "typecheck:preload": "tsc --noEmit -p packages/preload/tsconfig.json", + "typecheck:renderer": "vue-tsc --noEmit -p packages/renderer/tsconfig.json", + "typecheck": "npm run typecheck:main && npm run typecheck:preload && npm run typecheck:renderer", + "postinstall": "cross-env ELECTRON_RUN_AS_NODE=1 electron scripts/update-electron-vendors.mjs", + "format": "npx prettier --write \"**/*.{js,mjs,cjs,ts,mts,cts,vue,json}\"" + }, + "devDependencies": { + "@types/node": "18.16.7", + "@typescript-eslint/eslint-plugin": "5.59.5", + "@vitejs/plugin-vue": "4.2.2", + "@vue/test-utils": "2.3.2", + "cross-env": "7.0.3", + "electron": "24.3.0", + "electron-builder": "23.6.0", + "eslint": "8.40.0", + "eslint-plugin-vue": "9.11.1", + "happy-dom": "9.10.9", + "nano-staged": "0.8.0", + "playwright": "1.33.0", + "simple-git-hooks": "2.8.1", + "typescript": "5.0.4", + "unplugin-auto-expose": "0.0.4", + "vite": "4.3.5", + "vitest": "0.31.0", + "vue": "3.2.47", + "vue-tsc": "1.6.4" + }, + "dependencies": { + "electron-updater": "5.3.0" + } +} diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts new file mode 100644 index 0000000..0a91ff2 --- /dev/null +++ b/packages/main/src/index.ts @@ -0,0 +1,86 @@ +import {app} from 'electron'; +import './security-restrictions'; +import {restoreOrCreateWindow} from '/@/mainWindow'; +import {platform} from 'node:process'; + +/** + * Prevent electron from running multiple instances. + */ +const isSingleInstance = app.requestSingleInstanceLock(); +if (!isSingleInstance) { + app.quit(); + process.exit(0); +} +app.on('second-instance', restoreOrCreateWindow); + +/** + * Disable Hardware Acceleration to save more system resources. + */ +app.disableHardwareAcceleration(); + +/** + * Shout down background process if all windows was closed + */ +app.on('window-all-closed', () => { + if (platform !== 'darwin') { + app.quit(); + } +}); + +/** + * @see https://www.electronjs.org/docs/latest/api/app#event-activate-macos Event: 'activate'. + */ +app.on('activate', restoreOrCreateWindow); + +/** + * Create the application window when the background process is ready. + */ +app + .whenReady() + .then(restoreOrCreateWindow) + .catch(e => console.error('Failed create window:', e)); + +/** + * Install Vue.js or any other extension in development mode only. + * Note: You must install `electron-devtools-installer` manually + */ +// if (import.meta.env.DEV) { +// app +// .whenReady() +// .then(() => import('electron-devtools-installer')) +// .then(module => { +// const {default: installExtension, VUEJS3_DEVTOOLS} = +// // @ts-expect-error Hotfix for https://github.com/cawa-93/vite-electron-builder/issues/915 +// typeof module.default === 'function' ? module : (module.default as typeof module); +// +// return installExtension(VUEJS3_DEVTOOLS, { +// loadExtensionOptions: { +// allowFileAccess: true, +// }, +// }); +// }) +// .catch(e => console.error('Failed install extension:', e)); +// } + +/** + * Check for app updates, install it in background and notify user that new version was installed. + * No reason run this in non-production build. + * @see https://www.electron.build/auto-update.html#quick-setup-guide + * + * Note: It may throw "ENOENT: no such file app-update.yml" + * if you compile production app without publishing it to distribution server. + * Like `npm run compile` does. It's ok 😅 + */ +if (import.meta.env.PROD) { + app + .whenReady() + .then(() => import('electron-updater')) + .then(module => { + const autoUpdater = + module.autoUpdater || + // @ts-expect-error Hotfix for https://github.com/electron-userland/electron-builder/issues/7338 + (module.default.autoUpdater as (typeof module)['autoUpdater']); + return autoUpdater.checkForUpdatesAndNotify(); + }) + .catch(e => console.error('Failed check and install updates:', e)); +} diff --git a/packages/main/src/mainWindow.ts b/packages/main/src/mainWindow.ts new file mode 100644 index 0000000..4dc9081 --- /dev/null +++ b/packages/main/src/mainWindow.ts @@ -0,0 +1,71 @@ +import {app, BrowserWindow} from 'electron'; +import {join, resolve} from 'node:path'; + +async function createWindow() { + const browserWindow = new BrowserWindow({ + show: false, // Use the 'ready-to-show' event to show the instantiated BrowserWindow. + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + sandbox: false, // Sandbox disabled because the demo of preload script depend on the Node.js api + webviewTag: false, // The webview tag is not recommended. Consider alternatives like an iframe or Electron's BrowserView. @see https://www.electronjs.org/docs/latest/api/webview-tag#warning + preload: join(app.getAppPath(), 'packages/preload/dist/index.cjs'), + }, + }); + + /** + * If the 'show' property of the BrowserWindow's constructor is omitted from the initialization options, + * it then defaults to 'true'. This can cause flickering as the window loads the html content, + * and it also has show problematic behaviour with the closing of the window. + * Use `show: false` and listen to the `ready-to-show` event to show the window. + * + * @see https://github.com/electron/electron/issues/25012 for the afford mentioned issue. + */ + browserWindow.on('ready-to-show', () => { + browserWindow?.show(); + + if (import.meta.env.DEV) { + browserWindow?.webContents.openDevTools(); + } + }); + + /** + * Load the main page of the main window. + */ + if (import.meta.env.DEV && import.meta.env.VITE_DEV_SERVER_URL !== undefined) { + /** + * Load from the Vite dev server for development. + */ + await browserWindow.loadURL(import.meta.env.VITE_DEV_SERVER_URL); + } else { + /** + * Load from the local file system for production and test. + * + * Use BrowserWindow.loadFile() instead of BrowserWindow.loadURL() for WhatWG URL API limitations + * when path contains special characters like `#`. + * Let electron handle the path quirks. + * @see https://github.com/nodejs/node/issues/12682 + * @see https://github.com/electron/electron/issues/6869 + */ + await browserWindow.loadFile(resolve(__dirname, '../../renderer/dist/index.html')); + } + + return browserWindow; +} + +/** + * Restore an existing BrowserWindow or Create a new BrowserWindow. + */ +export async function restoreOrCreateWindow() { + let window = BrowserWindow.getAllWindows().find(w => !w.isDestroyed()); + + if (window === undefined) { + window = await createWindow(); + } + + if (window.isMinimized()) { + window.restore(); + } + + window.focus(); +} diff --git a/packages/main/src/security-restrictions.ts b/packages/main/src/security-restrictions.ts new file mode 100644 index 0000000..7b05cb8 --- /dev/null +++ b/packages/main/src/security-restrictions.ts @@ -0,0 +1,128 @@ +import type {Session} from 'electron'; +import {app, shell} from 'electron'; +import {URL} from 'node:url'; + +/** + * Union for all existing permissions in electron + */ +type Permission = Parameters< + Exclude[0], null> +>[1]; + +/** + * A list of origins that you allow open INSIDE the application and permissions for them. + * + * In development mode you need allow open `VITE_DEV_SERVER_URL`. + */ +const ALLOWED_ORIGINS_AND_PERMISSIONS = new Map>( + import.meta.env.DEV && import.meta.env.VITE_DEV_SERVER_URL + ? [[new URL(import.meta.env.VITE_DEV_SERVER_URL).origin, new Set()]] + : [], +); + +/** + * A list of origins that you allow open IN BROWSER. + * Navigation to the origins below is only possible if the link opens in a new window. + * + * @example + * + */ +const ALLOWED_EXTERNAL_ORIGINS = new Set<`https://${string}`>(['https://github.com']); + +app.on('web-contents-created', (_, contents) => { + /** + * Block navigation to origins not on the allowlist. + * + * Navigation exploits are quite common. If an attacker can convince the app to navigate away from its current page, + * they can possibly force the app to open arbitrary web resources/websites on the web. + * + * @see https://www.electronjs.org/docs/latest/tutorial/security#13-disable-or-limit-navigation + */ + contents.on('will-navigate', (event, url) => { + const {origin} = new URL(url); + if (ALLOWED_ORIGINS_AND_PERMISSIONS.has(origin)) { + return; + } + + // Prevent navigation + event.preventDefault(); + + if (import.meta.env.DEV) { + console.warn(`Blocked navigating to disallowed origin: ${origin}`); + } + }); + + /** + * Block requests for disallowed permissions. + * By default, Electron will automatically approve all permission requests. + * + * @see https://www.electronjs.org/docs/latest/tutorial/security#5-handle-session-permission-requests-from-remote-content + */ + contents.session.setPermissionRequestHandler((webContents, permission, callback) => { + const {origin} = new URL(webContents.getURL()); + + const permissionGranted = !!ALLOWED_ORIGINS_AND_PERMISSIONS.get(origin)?.has(permission); + callback(permissionGranted); + + if (!permissionGranted && import.meta.env.DEV) { + console.warn(`${origin} requested permission for '${permission}', but was rejected.`); + } + }); + + /** + * Hyperlinks leading to allowed sites are opened in the default browser. + * + * The creation of new `webContents` is a common attack vector. Attackers attempt to convince the app to create new windows, + * frames, or other renderer processes with more privileges than they had before; or with pages opened that they couldn't open before. + * You should deny any unexpected window creation. + * + * @see https://www.electronjs.org/docs/latest/tutorial/security#14-disable-or-limit-creation-of-new-windows + * @see https://www.electronjs.org/docs/latest/tutorial/security#15-do-not-use-openexternal-with-untrusted-content + */ + contents.setWindowOpenHandler(({url}) => { + const {origin} = new URL(url); + + if (ALLOWED_EXTERNAL_ORIGINS.has(origin as `https://${string}`)) { + // Open url in default browser. + shell.openExternal(url).catch(console.error); + } else if (import.meta.env.DEV) { + console.warn(`Blocked the opening of a disallowed origin: ${origin}`); + } + + // Prevent creating a new window. + return {action: 'deny'}; + }); + + /** + * Verify webview options before creation. + * + * Strip away preload scripts, disable Node.js integration, and ensure origins are on the allowlist. + * + * @see https://www.electronjs.org/docs/latest/tutorial/security#12-verify-webview-options-before-creation + */ + contents.on('will-attach-webview', (event, webPreferences, params) => { + const {origin} = new URL(params.src); + if (!ALLOWED_ORIGINS_AND_PERMISSIONS.has(origin)) { + if (import.meta.env.DEV) { + console.warn(`A webview tried to attach ${params.src}, but was blocked.`); + } + + event.preventDefault(); + return; + } + + // Strip away preload scripts if unused or verify their location is legitimate. + delete webPreferences.preload; + // @ts-expect-error `preloadURL` exists. - @see https://www.electronjs.org/docs/latest/api/web-contents#event-will-attach-webview + delete webPreferences.preloadURL; + + // Disable Node.js integration + webPreferences.nodeIntegration = false; + + // Enable contextIsolation + webPreferences.contextIsolation = true; + }); +}); diff --git a/packages/main/tests/unit.spec.ts b/packages/main/tests/unit.spec.ts new file mode 100644 index 0000000..859d621 --- /dev/null +++ b/packages/main/tests/unit.spec.ts @@ -0,0 +1,80 @@ +import type {MockedClass, MockedObject} from 'vitest'; +import {beforeEach, expect, test, vi} from 'vitest'; +import {restoreOrCreateWindow} from '../src/mainWindow'; + +import {BrowserWindow} from 'electron'; + +/** + * Mock real electron BrowserWindow API + */ +vi.mock('electron', () => { + // Use "as unknown as" because vi.fn() does not have static methods + const bw = vi.fn() as unknown as MockedClass; + bw.getAllWindows = vi.fn(() => bw.mock.instances); + bw.prototype.loadURL = vi.fn((_: string, __?: Electron.LoadURLOptions) => Promise.resolve()); + bw.prototype.loadFile = vi.fn((_: string, __?: Electron.LoadFileOptions) => Promise.resolve()); + // Use "any" because the on function is overloaded + // eslint-disable-next-line @typescript-eslint/no-explicit-any + bw.prototype.on = vi.fn(); + bw.prototype.destroy = vi.fn(); + bw.prototype.isDestroyed = vi.fn(); + bw.prototype.isMinimized = vi.fn(); + bw.prototype.focus = vi.fn(); + bw.prototype.restore = vi.fn(); + + const app: Pick = { + getAppPath(): string { + return ''; + }, + }; + + return {BrowserWindow: bw, app}; +}); + +beforeEach(() => { + vi.clearAllMocks(); +}); + +test('Should create a new window', async () => { + const {mock} = vi.mocked(BrowserWindow); + expect(mock.instances).toHaveLength(0); + + await restoreOrCreateWindow(); + expect(mock.instances).toHaveLength(1); + const instance = mock.instances[0] as MockedObject; + const loadURLCalls = instance.loadURL.mock.calls.length; + const loadFileCalls = instance.loadFile.mock.calls.length; + expect(loadURLCalls + loadFileCalls).toBe(1); + if (loadURLCalls === 1) { + expect(instance.loadURL).toHaveBeenCalledWith(expect.stringMatching(/index\.html$/)); + } else { + expect(instance.loadFile).toHaveBeenCalledWith(expect.stringMatching(/index\.html$/)); + } +}); + +test('Should restore an existing window', async () => { + const {mock} = vi.mocked(BrowserWindow); + + // Create a window and minimize it. + await restoreOrCreateWindow(); + expect(mock.instances).toHaveLength(1); + const appWindow = vi.mocked(mock.instances[0]); + appWindow.isMinimized.mockReturnValueOnce(true); + + await restoreOrCreateWindow(); + expect(mock.instances).toHaveLength(1); + expect(appWindow.restore).toHaveBeenCalledOnce(); +}); + +test('Should create a new window if the previous one was destroyed', async () => { + const {mock} = vi.mocked(BrowserWindow); + + // Create a window and destroy it. + await restoreOrCreateWindow(); + expect(mock.instances).toHaveLength(1); + const appWindow = vi.mocked(mock.instances[0]); + appWindow.isDestroyed.mockReturnValueOnce(true); + + await restoreOrCreateWindow(); + expect(mock.instances).toHaveLength(2); +}); diff --git a/packages/main/tsconfig.json b/packages/main/tsconfig.json new file mode 100644 index 0000000..e236d3f --- /dev/null +++ b/packages/main/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "sourceMap": false, + "moduleResolution": "Node", + "skipLibCheck": true, + "strict": true, + "isolatedModules": true, + "types": ["node"], + "baseUrl": ".", + "paths": { + "/@/*": ["./src/*"] + } + }, + "include": ["src/**/*.ts", "../../types/**/*.d.ts"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} diff --git a/packages/main/vite.config.js b/packages/main/vite.config.js new file mode 100644 index 0000000..af67c7c --- /dev/null +++ b/packages/main/vite.config.js @@ -0,0 +1,43 @@ +import {node} from '../../.electron-vendors.cache.json'; +import {join} from 'node:path'; +import {injectAppVersion} from '../../version/inject-app-version-plugin.mjs'; + +const PACKAGE_ROOT = __dirname; +const PROJECT_ROOT = join(PACKAGE_ROOT, '../..'); + +/** + * @type {import('vite').UserConfig} + * @see https://vitejs.dev/config/ + */ +const config = { + mode: process.env.MODE, + root: PACKAGE_ROOT, + envDir: PROJECT_ROOT, + resolve: { + alias: { + '/@/': join(PACKAGE_ROOT, 'src') + '/', + }, + }, + build: { + ssr: true, + sourcemap: 'inline', + target: `node${node}`, + outDir: 'dist', + assetsDir: '.', + minify: process.env.MODE !== 'development', + lib: { + entry: 'src/index.ts', + formats: ['cjs'], + }, + rollupOptions: { + output: { + entryFileNames: '[name].cjs', + }, + }, + emptyOutDir: true, + reportCompressedSize: false, + }, + plugins: [injectAppVersion()], +}; + +export default config; diff --git a/packages/preload/src/index.ts b/packages/preload/src/index.ts new file mode 100644 index 0000000..884f94a --- /dev/null +++ b/packages/preload/src/index.ts @@ -0,0 +1,6 @@ +/** + * @module preload + */ + +export {sha256sum} from './nodeCrypto'; +export {versions} from './versions'; diff --git a/packages/preload/src/nodeCrypto.ts b/packages/preload/src/nodeCrypto.ts new file mode 100644 index 0000000..758f101 --- /dev/null +++ b/packages/preload/src/nodeCrypto.ts @@ -0,0 +1,5 @@ +import {type BinaryLike, createHash} from 'node:crypto'; + +export function sha256sum(data: BinaryLike) { + return createHash('sha256').update(data).digest('hex'); +} diff --git a/packages/preload/src/versions.ts b/packages/preload/src/versions.ts new file mode 100644 index 0000000..acecff9 --- /dev/null +++ b/packages/preload/src/versions.ts @@ -0,0 +1 @@ +export {versions} from 'node:process'; diff --git a/packages/preload/tests/unit.spec.ts b/packages/preload/tests/unit.spec.ts new file mode 100644 index 0000000..6b8114c --- /dev/null +++ b/packages/preload/tests/unit.spec.ts @@ -0,0 +1,15 @@ +import {createHash} from 'crypto'; +import {expect, test} from 'vitest'; +import {sha256sum, versions} from '../src'; + +test('versions', async () => { + expect(versions).toBe(process.versions); +}); + +test('nodeCrypto', async () => { + // Test hashing a random string. + const testString = Math.random().toString(36).slice(2, 7); + const expectedHash = createHash('sha256').update(testString).digest('hex'); + + expect(sha256sum(testString)).toBe(expectedHash); +}); diff --git a/packages/preload/tsconfig.json b/packages/preload/tsconfig.json new file mode 100644 index 0000000..b1c0201 --- /dev/null +++ b/packages/preload/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "sourceMap": false, + "moduleResolution": "Node", + "skipLibCheck": true, + "strict": true, + "isolatedModules": true, + "types": ["node"], + "baseUrl": "." + }, + "include": ["src/**/*.ts", "../../types/**/*.d.ts"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} diff --git a/packages/preload/vite.config.js b/packages/preload/vite.config.js new file mode 100644 index 0000000..1e85b3f --- /dev/null +++ b/packages/preload/vite.config.js @@ -0,0 +1,39 @@ +import {chrome} from '../../.electron-vendors.cache.json'; +import {preload} from 'unplugin-auto-expose'; +import {join} from 'node:path'; +import {injectAppVersion} from '../../version/inject-app-version-plugin.mjs'; + +const PACKAGE_ROOT = __dirname; +const PROJECT_ROOT = join(PACKAGE_ROOT, '../..'); + +/** + * @type {import('vite').UserConfig} + * @see https://vitejs.dev/config/ + */ +const config = { + mode: process.env.MODE, + root: PACKAGE_ROOT, + envDir: PROJECT_ROOT, + build: { + ssr: true, + sourcemap: 'inline', + target: `chrome${chrome}`, + outDir: 'dist', + assetsDir: '.', + minify: process.env.MODE !== 'development', + lib: { + entry: 'src/index.ts', + formats: ['cjs'], + }, + rollupOptions: { + output: { + entryFileNames: '[name].cjs', + }, + }, + emptyOutDir: true, + reportCompressedSize: false, + }, + plugins: [preload.vite(), injectAppVersion()], +}; + +export default config; diff --git a/packages/renderer/.eslintrc.json b/packages/renderer/.eslintrc.json new file mode 100644 index 0000000..3cf7c2f --- /dev/null +++ b/packages/renderer/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "env": { + "browser": true, + "node": false + }, + "extends": [ + /** @see https://eslint.vuejs.org/rules/ */ + "plugin:vue/vue3-recommended" + ], + "parserOptions": { + "parser": "@typescript-eslint/parser", + "ecmaVersion": 12, + "sourceType": "module" + }, + "rules": { + /** These rules are disabled because they are incompatible with prettier */ + "vue/html-self-closing": "off", + "vue/singleline-html-element-content-newline": "off" + } +} diff --git a/packages/renderer/assets/logo.svg b/packages/renderer/assets/logo.svg new file mode 100644 index 0000000..1ac91f5 --- /dev/null +++ b/packages/renderer/assets/logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/packages/renderer/index.html b/packages/renderer/index.html new file mode 100644 index 0000000..f62f3ee --- /dev/null +++ b/packages/renderer/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/packages/renderer/src/App.vue b/packages/renderer/src/App.vue new file mode 100644 index 0000000..4a2a8b3 --- /dev/null +++ b/packages/renderer/src/App.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/packages/renderer/src/components/ElectronVersions.vue b/packages/renderer/src/components/ElectronVersions.vue new file mode 100644 index 0000000..842183a --- /dev/null +++ b/packages/renderer/src/components/ElectronVersions.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/packages/renderer/src/components/ReactiveCounter.vue b/packages/renderer/src/components/ReactiveCounter.vue new file mode 100644 index 0000000..e218d2d --- /dev/null +++ b/packages/renderer/src/components/ReactiveCounter.vue @@ -0,0 +1,11 @@ + + + diff --git a/packages/renderer/src/components/ReactiveHash.vue b/packages/renderer/src/components/ReactiveHash.vue new file mode 100644 index 0000000..d943ced --- /dev/null +++ b/packages/renderer/src/components/ReactiveHash.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/packages/renderer/src/index.ts b/packages/renderer/src/index.ts new file mode 100644 index 0000000..8fdab3b --- /dev/null +++ b/packages/renderer/src/index.ts @@ -0,0 +1,4 @@ +import {createApp} from 'vue'; +import App from '/@/App.vue'; + +createApp(App).mount('#app'); diff --git a/packages/renderer/tests/ElectronVersions.spec.ts b/packages/renderer/tests/ElectronVersions.spec.ts new file mode 100644 index 0000000..ece6fa2 --- /dev/null +++ b/packages/renderer/tests/ElectronVersions.spec.ts @@ -0,0 +1,23 @@ +import {mount} from '@vue/test-utils'; +import {expect, test, vi} from 'vitest'; +import ElectronVersions from '../src/components/ElectronVersions.vue'; + +vi.mock('#preload', () => { + return { + versions: {lib1: 1, lib2: 2}, + }; +}); + +test('ElectronVersions component', async () => { + expect(ElectronVersions).toBeTruthy(); + const wrapper = mount(ElectronVersions); + + const rows = wrapper.findAll('tr'); + expect(rows.length).toBe(2); + + expect(rows[0].find('th').text()).toBe('lib1 :'); + expect(rows[0].find('td').text()).toBe('v1'); + + expect(rows[1].find('th').text()).toBe('lib2 :'); + expect(rows[1].find('td').text()).toBe('v2'); +}); diff --git a/packages/renderer/tests/ReactiveCounter.spec.ts b/packages/renderer/tests/ReactiveCounter.spec.ts new file mode 100644 index 0000000..71f3772 --- /dev/null +++ b/packages/renderer/tests/ReactiveCounter.spec.ts @@ -0,0 +1,14 @@ +import {mount} from '@vue/test-utils'; +import {expect, test} from 'vitest'; +import ReactiveCounter from '../src/components/ReactiveCounter.vue'; + +test('ReactiveHash component', async () => { + expect(ReactiveCounter).toBeTruthy(); + const wrapper = mount(ReactiveCounter); + + const button = wrapper.get('button'); + + expect(button.text()).toBe('count is: 0'); + await button.trigger('click'); + expect(button.text()).toBe('count is: 1'); +}); diff --git a/packages/renderer/tests/ReactiveHash.spec.ts b/packages/renderer/tests/ReactiveHash.spec.ts new file mode 100644 index 0000000..522184c --- /dev/null +++ b/packages/renderer/tests/ReactiveHash.spec.ts @@ -0,0 +1,21 @@ +import {mount} from '@vue/test-utils'; +import {expect, test, vi} from 'vitest'; +import ReactiveHash from '../src/components/ReactiveHash.vue'; + +vi.mock('#preload', () => { + return { + sha256sum: vi.fn((s: string) => `${s}:HASHED`), + }; +}); + +test('ReactiveHash component', async () => { + expect(ReactiveHash).toBeTruthy(); + const wrapper = mount(ReactiveHash); + + const dataInput = wrapper.get('input:not([readonly])'); + const hashInput = wrapper.get('input[readonly]'); + + const dataToHashed = Math.random().toString(36).slice(2, 7); + await dataInput.setValue(dataToHashed); + expect(hashInput.element.value).toBe(`${dataToHashed}:HASHED`); +}); diff --git a/packages/renderer/tsconfig.json b/packages/renderer/tsconfig.json new file mode 100644 index 0000000..b51626c --- /dev/null +++ b/packages/renderer/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "sourceMap": false, + "moduleResolution": "Node", + "skipLibCheck": true, + "strict": true, + "isolatedModules": true, + "jsx": "preserve", + "types": ["node"], + "baseUrl": ".", + "paths": { + "#preload": ["../preload/src/index"], + "/@/*": ["./src/*"] + }, + "lib": ["ESNext", "dom", "dom.iterable"] + }, + "include": [ + "src/**/*.vue", + "src/**/*.ts", + "src/**/*.tsx", + "types/**/*.d.ts", + "../../types/**/*.d.ts" + ], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} diff --git a/packages/renderer/types/shims-vue.d.ts b/packages/renderer/types/shims-vue.d.ts new file mode 100644 index 0000000..f6feabb --- /dev/null +++ b/packages/renderer/types/shims-vue.d.ts @@ -0,0 +1,6 @@ +declare module '*.vue' { + import type {DefineComponent} from 'vue'; + // eslint-disable-next-line @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/packages/renderer/vite.config.js b/packages/renderer/vite.config.js new file mode 100644 index 0000000..af5bc12 --- /dev/null +++ b/packages/renderer/vite.config.js @@ -0,0 +1,54 @@ +/* eslint-env node */ + +import {chrome} from '../../.electron-vendors.cache.json'; +import vue from '@vitejs/plugin-vue'; +import {renderer} from 'unplugin-auto-expose'; +import {join} from 'node:path'; +import {injectAppVersion} from '../../version/inject-app-version-plugin.mjs'; + +const PACKAGE_ROOT = __dirname; +const PROJECT_ROOT = join(PACKAGE_ROOT, '../..'); + +/** + * @type {import('vite').UserConfig} + * @see https://vitejs.dev/config/ + */ +const config = { + mode: process.env.MODE, + root: PACKAGE_ROOT, + envDir: PROJECT_ROOT, + resolve: { + alias: { + '/@/': join(PACKAGE_ROOT, 'src') + '/', + }, + }, + base: '', + server: { + fs: { + strict: true, + }, + }, + build: { + sourcemap: true, + target: `chrome${chrome}`, + outDir: 'dist', + assetsDir: '.', + rollupOptions: { + input: join(PACKAGE_ROOT, 'index.html'), + }, + emptyOutDir: true, + reportCompressedSize: false, + }, + test: { + environment: 'happy-dom', + }, + plugins: [ + vue(), + renderer.vite({ + preloadEntry: join(PACKAGE_ROOT, '../preload/src/index.ts'), + }), + injectAppVersion(), + ], +}; + +export default config; diff --git a/scripts/update-electron-vendors.mjs b/scripts/update-electron-vendors.mjs new file mode 100644 index 0000000..e6e9cc0 --- /dev/null +++ b/scripts/update-electron-vendors.mjs @@ -0,0 +1,18 @@ +/** + * This script should be run in electron context + * @example + * ELECTRON_RUN_AS_NODE=1 electron scripts/update-electron-vendors.mjs + */ + +import {writeFileSync} from 'fs'; +import path from 'path'; + +const electronRelease = process.versions; + +const node = electronRelease.node.split('.')[0]; +const chrome = electronRelease.v8.split('.').splice(0, 2).join(''); + +const browserslistrcPath = path.resolve(process.cwd(), '.browserslistrc'); + +writeFileSync('./.electron-vendors.cache.json', JSON.stringify({chrome, node})); +writeFileSync(browserslistrcPath, `Chrome ${chrome}`, 'utf8'); diff --git a/scripts/watch.mjs b/scripts/watch.mjs new file mode 100644 index 0000000..17d0f5d --- /dev/null +++ b/scripts/watch.mjs @@ -0,0 +1,104 @@ +#!/usr/bin/env node + +import {build, createServer} from 'vite'; +import electronPath from 'electron'; +import {spawn} from 'child_process'; + +/** @type 'production' | 'development'' */ +const mode = (process.env.MODE = process.env.MODE || 'development'); + +/** @type {import('vite').LogLevel} */ +const logLevel = 'warn'; + +/** + * Setup watcher for `main` package + * On file changed it totally re-launch electron app. + * @param {import('vite').ViteDevServer} watchServer Renderer watch server instance. + * Needs to set up `VITE_DEV_SERVER_URL` environment variable from {@link import('vite').ViteDevServer.resolvedUrls} + */ +function setupMainPackageWatcher({resolvedUrls}) { + process.env.VITE_DEV_SERVER_URL = resolvedUrls.local[0]; + + /** @type {ChildProcess | null} */ + let electronApp = null; + + return build({ + mode, + logLevel, + configFile: 'packages/main/vite.config.js', + build: { + /** + * Set to {} to enable rollup watcher + * @see https://vitejs.dev/config/build-options.html#build-watch + */ + watch: {}, + }, + plugins: [ + { + name: 'reload-app-on-main-package-change', + writeBundle() { + /** Kill electron if process already exist */ + if (electronApp !== null) { + electronApp.removeListener('exit', process.exit); + electronApp.kill('SIGINT'); + electronApp = null; + } + + /** Spawn new electron process */ + electronApp = spawn(String(electronPath), ['--inspect', '.'], { + stdio: 'inherit', + }); + + /** Stops the watch script when the application has been quit */ + electronApp.addListener('exit', process.exit); + }, + }, + ], + }); +} + +/** + * Setup watcher for `preload` package + * On file changed it reload web page. + * @param {import('vite').ViteDevServer} watchServer Renderer watch server instance. + * Required to access the web socket of the page. By sending the `full-reload` command to the socket, it reloads the web page. + */ +function setupPreloadPackageWatcher({ws}) { + return build({ + mode, + logLevel, + configFile: 'packages/preload/vite.config.js', + build: { + /** + * Set to {} to enable rollup watcher + * @see https://vitejs.dev/config/build-options.html#build-watch + */ + watch: {}, + }, + plugins: [ + { + name: 'reload-page-on-preload-package-change', + writeBundle() { + ws.send({ + type: 'full-reload', + }); + }, + }, + ], + }); +} + +/** + * Dev server for Renderer package + * This must be the first, + * because the {@link setupMainPackageWatcher} and {@link setupPreloadPackageWatcher} + * depend on the dev server properties + */ +const rendererWatchServer = await createServer({ + mode, + logLevel, + configFile: 'packages/renderer/vite.config.js', +}).then(s => s.listen()); + +await setupPreloadPackageWatcher(rendererWatchServer); +await setupMainPackageWatcher(rendererWatchServer); diff --git a/tests/e2e.spec.ts b/tests/e2e.spec.ts new file mode 100644 index 0000000..2878b0d --- /dev/null +++ b/tests/e2e.spec.ts @@ -0,0 +1,94 @@ +import type {ElectronApplication, JSHandle} from 'playwright'; +import {_electron as electron} from 'playwright'; +import {afterAll, beforeAll, expect, test} from 'vitest'; +import {createHash} from 'crypto'; +import type {BrowserWindow} from 'electron'; + +let electronApp: ElectronApplication; + +beforeAll(async () => { + electronApp = await electron.launch({args: ['.']}); +}); + +afterAll(async () => { + await electronApp.close(); +}); + +test('Main window state', async () => { + const page = await electronApp.firstWindow(); + const window: JSHandle = await electronApp.browserWindow(page); + const windowState = await window.evaluate( + (mainWindow): Promise<{isVisible: boolean; isDevToolsOpened: boolean; isCrashed: boolean}> => { + const getState = () => ({ + isVisible: mainWindow.isVisible(), + isDevToolsOpened: mainWindow.webContents.isDevToolsOpened(), + isCrashed: mainWindow.webContents.isCrashed(), + }); + + return new Promise(resolve => { + /** + * The main window is created hidden, and is shown only when it is ready. + * See {@link ../packages/main/src/mainWindow.ts} function + */ + if (mainWindow.isVisible()) { + resolve(getState()); + } else mainWindow.once('ready-to-show', () => resolve(getState())); + }); + }, + ); + + expect(windowState.isCrashed, 'The app has crashed').toBeFalsy(); + expect(windowState.isVisible, 'The main window was not visible').toBeTruthy(); + expect(windowState.isDevToolsOpened, 'The DevTools panel was open').toBeFalsy(); +}); + +test('Main window web content', async () => { + const page = await electronApp.firstWindow(); + const element = await page.$('#app', {strict: true}); + expect(element, 'Was unable to find the root element').toBeDefined(); + expect((await element.innerHTML()).trim(), 'Window content was empty').not.equal(''); +}); + +test('Preload versions', async () => { + const page = await electronApp.firstWindow(); + const versionsElement = page.locator('#process-versions'); + expect(await versionsElement.count(), 'expect find one element #process-versions').toStrictEqual( + 1, + ); + + /** + * In this test we check only text value and don't care about formatting. That's why here we remove any space symbols + */ + const renderedVersions = (await versionsElement.innerText()).replace(/\s/g, ''); + const expectedVersions = await electronApp.evaluate(() => process.versions); + + for (const expectedVersionsKey in expectedVersions) { + expect(renderedVersions).include( + `${expectedVersionsKey}:v${expectedVersions[expectedVersionsKey]}`, + ); + } +}); + +test('Preload nodeCrypto', async () => { + const page = await electronApp.firstWindow(); + + // Test hashing a random string + const testString = Math.random().toString(36).slice(2, 7); + + const rawInput = page.locator('input#reactive-hash-raw-value'); + expect( + await rawInput.count(), + 'expect find one element input#reactive-hash-raw-value', + ).toStrictEqual(1); + + const hashedInput = page.locator('input#reactive-hash-hashed-value'); + expect( + await hashedInput.count(), + 'expect find one element input#reactive-hash-hashed-value', + ).toStrictEqual(1); + + await rawInput.fill(testString); + const renderedHash = await hashedInput.inputValue(); + const expectedHash = createHash('sha256').update(testString).digest('hex'); + expect(renderedHash).toEqual(expectedHash); +}); diff --git a/types/env.d.ts b/types/env.d.ts new file mode 100644 index 0000000..ad80819 --- /dev/null +++ b/types/env.d.ts @@ -0,0 +1,25 @@ +/// + +/** + * Describes all existing environment variables and their types. + * Required for Code completion/intellisense and type checking. + * + * Note: To prevent accidentally leaking env variables to the client, only variables prefixed with `VITE_` are exposed to your Vite-processed code. + * + * @see https://github.com/vitejs/vite/blob/0a699856b248116632c1ac18515c0a5c7cf3d1db/packages/vite/types/importMeta.d.ts#L7-L14 Base Interface. + * @see https://vitejs.dev/guide/env-and-mode.html#env-files Vite Env Variables Doc. + */ +interface ImportMetaEnv { + /** + * URL where `renderer` web page is running. + * This variable is initialized in scripts/watch.ts + */ + readonly VITE_DEV_SERVER_URL: undefined | string; + + /** Current app version */ + readonly VITE_APP_VERSION: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/version/getVersion.mjs b/version/getVersion.mjs new file mode 100644 index 0000000..3a1176a --- /dev/null +++ b/version/getVersion.mjs @@ -0,0 +1,9 @@ +/** + * Entry function for get app version. + * In current implementation, it returns `version` from `package.json`, but you can implement any logic here. + * Runs several times for each vite configs and electron-builder config. + * @return {string} + */ +export function getVersion() { + return process.env.npm_package_version; +} diff --git a/version/inject-app-version-plugin.mjs b/version/inject-app-version-plugin.mjs new file mode 100644 index 0000000..9a38669 --- /dev/null +++ b/version/inject-app-version-plugin.mjs @@ -0,0 +1,13 @@ +import {getVersion} from './getVersion.mjs'; + +/** + * Somehow inject app version to vite build context + * @return {import('vite').Plugin} + */ +export const injectAppVersion = () => ({ + name: 'inject-version', + config: () => { + // TODO: Find better way to inject app version + process.env.VITE_APP_VERSION = getVersion(); + }, +}); diff --git a/vitest.config.js b/vitest.config.js new file mode 100644 index 0000000..de85d9d --- /dev/null +++ b/vitest.config.js @@ -0,0 +1,23 @@ +/** + * Configuration for the global end-to-end testing, + * placed in the project's root 'tests' folder. + * @type {import('vite').UserConfig} + * @see https://vitest.dev/config/ + */ +const config = { + test: { + /** + * By default, vitest searches for the test files in all packages. + * For e2e tests, have vitest search only in the project root 'tests' folder. + */ + include: ['./tests/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + + /** + * The default timeout of 5000ms is sometimes not enough for playwright. + */ + testTimeout: 30_000, + hookTimeout: 30_000, + }, +}; + +export default config;