diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..58d5f03b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,24 @@ +# Dependencies +node_modules + +# Test output +.nyc_output +.playwright +coverage + +# Build directories +build +dist + +# Mock files +mock-files + +# Docker files +Dockerfile +docker-compose.yml +docker-compose.yaml + +.github +.junie +.idea + diff --git a/.eslintignore b/.eslintignore index 33e41d8c..2d071444 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,9 @@ -.eslintrc.js .github node_modules/ +wallaby.main.js +wallaby.renderer.js +babel.config.js +lint-staged.config.js +vue.config.js +**/*.eslintrc* +src/__tests__/e2e/util/files/ \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index b0fb6323..32d251ba 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,25 +1,10 @@ module.exports = { root: true, - - env: { - node: true, - }, - - 'extends': [ - 'plugin:vue/vue3-essential', - 'eslint:recommended', - '@vue/typescript/recommended', - '@vue/prettier', - '@vue/prettier/@typescript-eslint' + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "prettier", ], - - parserOptions: { - parser: '@typescript-eslint/parser', - }, - - rules: { - 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', - 'prettier/prettier': ['error', { 'endOfLine': 'auto' }] - } -} + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"] +}; diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index dbe1e12f..15d860ed 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -2,12 +2,34 @@ ## Install dependencies +_Note: currently only supports Node 18 and requires python 2.7_ + +### Install python + +Install pyenv and then + +```shell +pyenv install 2.7.18 +``` + +```shell +export PATH="${HOME}/.pyenv/shims:${PATH}" +``` + ``` npm install ``` ## Running +_Note_ +The application must be run against a valid modpack. +If you do not have a valid modpack, a "dummy" modpack can be generated. + +```shell +npm run generate:modpack-files +``` + Start the application ``` npm run start @@ -15,6 +37,13 @@ npm run start npm run start:dev ``` +If you have generated a modpack you might need to point the application to the right APP_DATA. +This can be set with an environment variable + +```shell +APPDATA="$(pwd)/mock-files/local" npm run start +``` + ## Building The application will be built and published automatically when merged to the main branch. diff --git a/.github/workflows/pre-merge.yml b/.github/workflows/pre-merge.yml index dbfd4284..6aa19ec5 100644 --- a/.github/workflows/pre-merge.yml +++ b/.github/workflows/pre-merge.yml @@ -16,9 +16,14 @@ jobs: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '16' + node-version: '18' + cache: 'npm' + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' - run: npm ci --legacy-peer-deps - run: npm run lint -- --no-fix @@ -30,12 +35,113 @@ jobs: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - uses: actions/setup-python@v5 with: - node-version: '16' + python-version: '3.10' - run: npm ci --legacy-peer-deps - - run: npm run test:coverage + - run: npm run test:unit + + test-e2e: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + shardIndex: [1, 2, 3, 4, 5] + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install dependencies + run: npm ci --legacy-peer-deps + + - name: Install Playwright dependencies + run: npx playwright install + + - name: Run E2E tests + run: npm run test:e2e -- --shard=${{ matrix.shardIndex }}/${{ strategy.job-total }} + + - name: Upload test results + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v4 + with: + name: playwright-report-${{ matrix.shardIndex }} + path: .playwright/ + include-hidden-files: 'true' + + merge-reports: + if: always() + needs: [test-e2e] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install dependencies + run: npm ci --legacy-peer-deps + + - name: Download artifacts from shards + uses: actions/download-artifact@v4 + with: + pattern: playwright-report-* + path: all-reports + merge-multiple: true + + - name: List files in all-reports + run: ls -R ./all-reports + + - name: Merge reports + run: npx playwright merge-reports --reporter html ./all-reports/blob-report + + - name: Upload merged report + uses: actions/upload-artifact@v4 + with: + name: playwright-report-merged + path: playwright-report + include-hidden-files: 'true' + + test-screenshot: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Run Playwright screenshot tests in Docker + run: npm run test:e2e:screenshot:ci + + - name: Copy test results from container + if: ${{ !cancelled() }} + run: | + CONTAINER_ID=$(docker ps -a --filter ancestor=playwright-screenshot-e2e-tests-ci:latest --format "{{.ID}}") + docker cp $CONTAINER_ID:/home/app/.playwright . + + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: .playwright + retention-days: 30 + include-hidden-files: 'true' # Validate that commits are following the conventional commit format commit-validate: @@ -48,9 +154,14 @@ jobs: fetch-depth: 0 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: '16' + node-version: '18' + cache: 'npm' + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' - name: install dependencies run: npm ci --legacy-peer-deps @@ -64,9 +175,14 @@ jobs: - uses: actions/checkout@v3 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - uses: actions/setup-python@v5 with: - node-version: '16' + python-version: '3.10' - name: bump version dry run - run: npx standard-version --dry-run + run: npx standard-version --dry-run \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8e245ab5..6aefcfbb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,11 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' - name: Install dependencies run: npm ci --legacy-peer-deps diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 73a2f43b..70e64439 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -24,7 +24,11 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' - name: bump version run: npx standard-version --no-verify diff --git a/.gitignore b/.gitignore index ac9aa5e3..ed0fecf6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ node_modules /dist /coverage .nyc_output +.tsbuildinfo # local env files .env.local @@ -25,5 +26,14 @@ pnpm-debug.log* dev-app-update.yml -# Mock directory to replicate %APPDATA% -local +mock-modpack-install +mock-files +.windows-data + +# Playwright +.playwright + +.junie/plans/completed/ +.junie/plans/archived/ + +out \ No newline at end of file diff --git a/.junie/guidelines.md b/.junie/guidelines.md new file mode 100644 index 00000000..09294ecb --- /dev/null +++ b/.junie/guidelines.md @@ -0,0 +1,168 @@ +# Junie Development Guidelines + +## Core Principles + +### 1. TypeScript Strict Settings + +- **Always follow TypeScript strict settings** in all projects +- **Note:** Use `vue-tsc` instead of `tsc` for Vue projects + +### 2. Planning When Requested + +- **By default, Junie should proceed directly to implementation unless a plan is specifically requested** +- When plans are requested, they must be comprehensive and detailed before any code changes +- Plans should be approved before implementation begins when they are created +- For complex tasks, consider requesting a plan to ensure proper structure and approach + +### 3. Plan Management + +- **When creating a plan, store it as markdown in `.junie/plans/`** +- **Plan creations and changes should be committed to git** to maintain a proper development history +- Plans should be updated as Junie makes progress +- **Plans should be updated after implementation to include implementation details** +- **Plans should be kept local** +- **Completed plans should be moved to `.junie/plans/completed/` to maintain organization** +- **Abandoned plans should be moved to `.junie/plans/archived/` to maintain organization** +- **Note:** Once plans are moved to `completed/` or `archived/` directories, git will no longer track them as these directories are gitignored +- **Important:** When updating implementation plans, do not remove completed items from the plan. Only check off items as completed to maintain a complete record of all work done. +- **Note:** When iterating on an already existing plan, implementation should be done directly without creating a new plan. Update the original plan. +- **Note:** When instructed to update multiple plan phases, Junie should update the plan as it goes along and not at the end. + +## Plan Structure Requirements + +For detailed plan structure requirements and formatting guidelines, see the plan template at `.junie/templates/plan.template.md`. + +## Workflow Process + +### Phase 1: Planning (Only When Requested) + +1. **Create comprehensive plan** in `.junie/plans/[task-name].plan.md` +2. **Include all required sections** as outlined in the plan template +3. **Automatically perform Current State Analysis** - this analysis phase must always be completed when creating the plan, including: + - Analysis of existing code/system + - Identification of current issues or areas for improvement + - Assessment of existing components, files, and structure +4. **STOP and wait for explicit approval** - do NOT proceed to implementation +5. **Address feedback** and update plan if necessary + +### Phase 2: Implementation (Junie's Default Behavior) + +1. **Follow the approved plan** step by step (if a plan exists) +2. **Update plan progress** as tasks are completed (if a plan exists) +3. **Document any deviations** from the original plan (if applicable) +4. **Test thoroughly** at each milestone + +### Phase 3: Post-Implementation + +1. **Update plan with implementation details** (if a plan exists) +2. **Complete the Implementation Summary section** (if a plan exists) +3. **Document lessons learned and best practices** +4. **Move completed plans to `.junie/plans/completed/`** to maintain organization (if a plan exists) + +## Quality Standards + +### Code Quality + +- All code must pass TypeScript strict checks +- Follow established coding standards and conventions +- Include proper error handling and edge case management +- Write comprehensive tests for new functionality + +### Documentation + +- Plans must be clear, detailed, and actionable (when created) +- Use proper markdown formatting +- Include diagrams or visual aids when helpful +- Keep plans updated and accurate (when they exist) +- **Note:** Ignore syntax errors in formatted code blocks when they are used for illustrative purposes in documentation +- **Code Formatting:** Always include a bullet point list of simple steps above code sections. Code should appear below bullet points and should not be included within bullet point lists themselves + +### Testing + +- All implementations must include appropriate tests +- Existing tests must continue to pass +- Edge cases and error scenarios must be covered +- Performance implications should be considered +- **E2E Test IDs:** All e2e test IDs should be abstracted as page object class properties (static readonly) to ensure maintainability and reusability + +### Directory Structure + +``` +.junie/ +├── guidelines.md (this file) +├── plans/ +│ ├── [task-name].md +│ ├── [feature-name].md +│ ├── archived/ +│ │ └── [abandoned-plans].md +│ └── completed/ +│ └── [successfully-completed-plans].md +└── templates/ + └── plan.template.md +``` + +### Directory Purpose + +- **`plans/`**: Active plans currently being worked on +- **`plans/archived/`**: Abandoned plans moved here to maintain organization +- **`plans/completed/`**: Successfully completed plans moved here to maintain organization + +### Directory Usage Guidelines + +**When to use `completed/`:** +- Plans that have been successfully implemented and all success criteria met +- Plans where all phases have been completed as intended +- Plans that resulted in working, tested solutions + +**When to use `archived/`:** +- Plans that were abandoned before completion +- Plans that were started but not finished due to changing requirements +- Plans that Junie is told to abandon during development +- Plans moved manually when no longer relevant + +**Automation:** +- Junie will automatically move plans to `archived/` when explicitly told to abandon a plan +- Users can manually move plans between directories as needed + +### Naming Conventions + +- Use kebab-case for plan file names +- Use descriptive names that clearly indicate the scope + +## Best Practices + +### Planning Best Practices + +- Break down complex tasks into manageable phases +- Consider dependencies and prerequisites +- Plan for testing and validation +- Include rollback strategies for risky changes + +### Implementation Best Practices + +- Follow the plan strictly unless approved deviations occur (if a plan exists) +- **When told to continue with a plan implementation, implement only the next minor phase one at a time** (e.g., implement just 2.1 and not all of phase 2) +- **When implementing more than one phase, update the plan alongside implementation changes and not just at the end** to maintain accurate progress tracking and documentation +- **When implementing code that will be modified in a later phase, add a comment explaining this** and remove the comment after making the planned changes + +- Test incrementally as you progress +- Update documentation alongside code changes +- **Always run `npm run lint:fix` at the end of each implementation block and fix any linting issues that arise** +- **Run tests after each change** to ensure functionality remains intact and no regressions are introduced + +### Communication Best Practices + +- Plans should be self-explanatory to other developers (when created) +- Use clear, concise language +- Include context and rationale for decisions +- Document assumptions and constraints + +## Compliance + +All Junie development work must adhere to these guidelines. Any deviations must be: + +1. Documented with clear justification +2. Approved by appropriate stakeholders +3. Updated in the relevant plan documentation (if a plan exists) + +These guidelines ensure consistent, high-quality development practices and maintainable project documentation. diff --git a/.junie/plans/renderer-components-testing.md b/.junie/plans/renderer-components-testing.md new file mode 100644 index 00000000..2099986f --- /dev/null +++ b/.junie/plans/renderer-components-testing.md @@ -0,0 +1,50 @@ +# Renderer Components Testing Requirements + +## All renderer components require comprehensive tests + +**Note:** Every time a component has a plan to test it, once the testing implementation is completed, this plan should be updated to reflect the completion status. + +## Component Testing Checklist + +Below is a complete list of all renderer components that require testing: + +### Base Components +- [x] AppDropdownFileSelect.vue - completed ✓ +- [ ] AppModal.vue +- [ ] AppPage.vue +- [ ] AppPageContent.vue +- [ ] BaseButton.vue +- [ ] BaseDropdown.vue +- [ ] BaseImage.vue +- [ ] BaseInput.vue +- [ ] BaseLabel.vue +- [ ] BaseLink.vue +- [ ] BaseList.vue + +### Feature Components +- [ ] Community.vue +- [ ] ENB.vue +- [ ] GraphicsSelection.vue +- [ ] ImageWithText.vue +- [ ] LauncherVersion.vue +- [ ] MO2RunningModal.vue +- [ ] ModDirectory.vue +- [ ] NavigationItem.vue +- [ ] News.vue +- [ ] Patrons.vue +- [ ] ProfileSelection.vue +- [ ] Resolution.vue + +### Layout Components +- [ ] TheHeader.vue +- [ ] TheNavigation.vue +- [ ] TheTitleBar.vue + +## Total Components: 26 + +Each component should have: +- Unit tests covering all functionality +- Tests should focus on having single assertions per test where possible +- Tests should be written in Jest +- Child components should always be mocked using shallow mocking by passing shallow:true to the mount function unless the child component is required to be mocked in a specific way. +- If a child component is required to be mocked, a comment should be added to the test file explaining why the component is being mocked. \ No newline at end of file diff --git a/.junie/templates/plan.template.md b/.junie/templates/plan.template.md new file mode 100644 index 00000000..68b9c67f --- /dev/null +++ b/.junie/templates/plan.template.md @@ -0,0 +1,105 @@ +# Plan Template + +## Plan Structure Requirements + +All plans must include the following sections: + +### Required Plan Sections + +#### 1. **Overview** + +- Brief description of the task/feature/refactoring +- High-level goals and objectives +- **Status**: Phase x.y Complete + +#### 2. **Current State Analysis** + +- Analysis of existing code/system +- Identification of current issues or areas for improvement +- Assessment of existing components, files, and structure + +#### 3. **Implementation Plan** + +- Detailed phases with numbered tasks +- Clear task breakdown with sub-tasks +- Progress tracking with checkmarks (✓ for completed, ! for failed, * for in progress) +- Each phase should have specific deliverables +- Each phase should have specific code that will be implemented + +**Example Structure (should be followed as close as possible):** + +```markdown +### Phase 1: Implementation +- [ ] 1.1 Core functionality + - [ ] 1.1.1 Create base components + - [ ] 1.1.2 Implement business logic + - [ ] 1.1.3 Add error handling +- [ ] 1.2 Integration + - [ ] 1.2.1 Connect to existing systems + - [ ] 1.2.2 Update routing + +### Phase 2: Implementation of x +- [ ] 2.1 Core functionality + - [ ] 2.1.1 Create base components + - [ ] 2.1.2 Implement business logic + - [ ] 2.1.3 Add error handling +- [ ] 2.2 Integration + - [ ] 2.2.1 Connect to existing systems + - [ ] 2.2.2 Update routing + +### Phase 1 code + +``` + +#### 4. **File Structure (Target)** + +- Clear representation of the intended file/directory structure +- Use code blocks with tree structure visualization +- Show both existing and new files + +#### 5. **Implementation Summary** (Post-Implementation) + +- Summary of what was accomplished +- Any deviations from the original plan + +#### 6. **Notes** + +- Important considerations +- Dependencies or prerequisites + +### Plan Formatting Guidelines + +#### Task Tracking + +- Use `[✓]` for completed tasks +- Use `[!]` for failed tasks +- Use `[*]` for tasks in progress +- Use `[ ]` for pending tasks +- Maintain hierarchical progress tracking (parent tasks reflect sub-task status) + +**Example of Hierarchical Progress Tracking:** + +```markdown +- [✓] 1.1 Analyze current codebase + - [✓] 1.1.1 Review existing components + - [✓] 1.1.2 Identify dependencies + - [✓] 1.1.3 Document current architecture +- [*] 1.2 Setup development environment + - [✓] 1.2.1 Install required dependencies + - [ ] 1.2.2 Configure build tools +``` + +*Note: Parent task status should reflect the overall progress of its sub-tasks.* + +#### Code Examples + +- Use proper markdown code blocks with language specification +- Always include any code that will be generated +- Include file paths and line numbers when relevant +- Show before/after comparisons when applicable + +#### File References + +- Always use full file paths +- Use backticks for inline file references +- Group related files logically diff --git a/.mocharc.json b/.mocharc.json index 60cab294..2b3c16ed 100644 --- a/.mocharc.json +++ b/.mocharc.json @@ -1,10 +1,16 @@ { + "$schema": "https://json.schemastore.org/mochrarc", + "exit": true, "recursive": true, "require": [ + "ts-node/register", + "tsconfig-paths/register", "source-map-support/register", - "tsconfig-paths/register" + "src/__tests__/unit/helpers/setup.ts" ], - "file": [ - "./dist/__tests__/unit/setup/global-setup.js" + "reporter": "spec", + "extensions": ["ts"], + "spec": [ + "src/__tests__/**/!(*renderer*)/*.test.ts" ] } diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..c3f7c274 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v18.20.8 diff --git a/.nycrc b/.nycrc index abd55251..8bdeb770 100644 --- a/.nycrc +++ b/.nycrc @@ -1,14 +1,25 @@ { - "include": ["dist"], - "exclude": ["dist/__tests__/"], + "extends": "@istanbuljs/nyc-config-typescript", + "include": ["src"], + "exclude": [ + "src/__tests__/**", + "**/*.d.ts", + "**/*.eslintrc.js", + "src/main/controllers/**/*", + "src/renderer/**/*", + "src/main.ts", + "src/preload/index.ts", + "src/main/application.ts", + "src/main/logger.ts" + ], "extension": [".js", ".ts"], "reporter": ["text", "html"], "exclude-after-remap": false, "check-coverage": true, "per-file": true, "all": true, - "branches": 0, - "lines": 0, - "functions": 0, - "statements": 0 + "branches": 100, + "lines": 100, + "functions": 100, + "statements": 100 } diff --git a/.prettierignore b/.prettierignore index 0859b014..bb5535a6 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,3 @@ node_modules dist_electron -.eslintrc.js .github diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..d31afdba --- /dev/null +++ b/Dockerfile @@ -0,0 +1,44 @@ +# This Dockerfile is designed to be used to facilitate e2e tests using Playwright +# It can be used to run consistent screenshot UI tests across OS + +# Using a Python base image because the current node-sass version requires Python +# Once node-sass is removed, all Python requirements can be removed and the playwright base image can be used +# FROM mcr.microsoft.com/playwright:v1.52.0 +FROM mcr.microsoft.com/playwright/python + +ARG APP_USER=app +ARG APP_HOME=/home/${APP_USER} + +# Create app user and set up home directory +RUN groupadd -r ${APP_USER} && \ + useradd -r -g ${APP_USER} -m -d ${APP_HOME} ${APP_USER} && \ + mkdir -p ${APP_HOME}/.npm && \ + chown -R ${APP_USER}:${APP_USER} ${APP_HOME} + +# Install Node.js 16.x directly +# Install xvfb to support virtual display for Electron +RUN apt-get update && \ + apt-get install -y curl gnupg xvfb build-essential && \ + curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ + apt-get install -y nodejs + +WORKDIR ${APP_HOME} + +USER ${APP_USER} + +# Install app dependencies +COPY --chown=${APP_USER}:${APP_USER} package*.json ./ +RUN npm ci + +# Copy the rest of the application +COPY --chown=${APP_USER}:${APP_USER} ./ ./ + +# Ubuntu has a security feature that prevents electron from running if the Chrome sandbox is not owned by root. +# Because this is a test file, ensure that is owned by root and continue +# https://github.com/electron/electron/issues/42510 +USER root +RUN chown root ./node_modules/electron/dist/chrome-sandbox && \ + chmod 4755 ./node_modules/electron/dist/chrome-sandbox +USER ${APP_USER} + +RUN npm run compile \ No newline at end of file diff --git a/babel.config.js b/babel.config.js index 162a3ea9..fd03f009 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,5 @@ module.exports = { presets: ["@vue/cli-plugin-babel/preset"], + // TODO only include in test mode + plugins: ["istanbul"], }; diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..11539f3f --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,33 @@ +name: playwright-screenshot + +services: + e2e-tests-base: + build: + context: . + dockerfile: Dockerfile + command: npx xvfb-maybe playwright test --grep @screenshot + environment: + WORKERS: 1 +# DEBUG: "pw:*" + init: true + ipc: host + cap_add: + - 'SYS_ADMIN' + + e2e-tests-ci: + environment: + CI: true + extends: + service: e2e-tests-base + + e2e-tests: + extends: + service: e2e-tests-base + volumes: + - ./.playwright:/home/app/.playwright + - ./src/__tests__/e2e/screenshot.e2e.ts-snapshots:/home/app/src/__tests__/e2e/screenshot.e2e.ts-snapshots + + e2e-tests-update-screenshots: + extends: + service: e2e-tests + command: npx xvfb-maybe playwright test --grep @screenshot --update-snapshots diff --git a/electron.vite.config.ts b/electron.vite.config.ts new file mode 100644 index 00000000..7e98ccc2 --- /dev/null +++ b/electron.vite.config.ts @@ -0,0 +1,49 @@ +import { resolve } from "path"; +import { defineConfig, externalizeDepsPlugin, swcPlugin } from "electron-vite"; +import vue from "@vitejs/plugin-vue"; + +export default defineConfig({ + main: { + plugins: [externalizeDepsPlugin()], + resolve: { + alias: { + "@": resolve(__dirname, "src"), + }, + }, + build: { + rollupOptions: { + input: { + index: resolve(__dirname, "src/main.ts"), + }, + output: { + preserveModules: true, + preserveModulesRoot: "src/main", + }, + }, + }, + }, + preload: { + plugins: [externalizeDepsPlugin()], + resolve: { + alias: { + "@": resolve(__dirname, "src"), + }, + }, + }, + renderer: { + plugins: [vue()], + build: { + rollupOptions: { + external: [ + '@/main/logger', + ] + } + }, + resolve: { + alias: { + "@": resolve(__dirname, "src"), + "@renderer": resolve(__dirname, "src/renderer/src"), + }, + }, + }, +}); diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000..54cf299f --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,204 @@ +/** + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/configuration + */ + +import type {Config} from '@jest/types'; + +const config: Config.InitialOptions = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/gz/dp_vjf49079c66mllbw6zcqh0000gn/T/jest_dx", + + // Automatically clear mock calls, instances, contexts and results before every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: true, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + collectCoverageFrom: ["**/src/renderer/**/*.{js,ts,vue}"], + + // The directory where Jest should output its coverage files + coverageDirectory: "coverage", + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + // coverageProvider: "babel", + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // The default configuration for fake timers + // fakeTimers: { + // "enableGlobally": false + // }, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + moduleFileExtensions: ["js", "ts", "json", "vue"], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + moduleNameMapper: { + "^@/(.*)$": "/src/$1", + }, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state before every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state and implementation before every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [ + // "/src/__tests__/unit/renderer/setup.ts" + // ], + + // Global TypeScript configuration + globals: { + "ts-jest": { + tsconfig: "/tsconfig.renderer.json", + }, + }, + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + testEnvironment: "jsdom", + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + testMatch: ["**/src/__tests__/unit/renderer/**/*.test.(js|ts)"], + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + modulePathIgnorePatterns: ["/dist/"], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jest-circus/runner", + + // A map from regular expressions to paths to transformers + transform: { + "^.+\\.vue$": "vue-jest", + "^.+\\.(ts|tsx)$": "ts-jest", + }, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/", + // "\\.pnp\\.[^\\/]+$" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; + +export default config; diff --git a/lint-staged.config.js b/lint-staged.config.js index 15ec7cc9..5c1b0586 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,4 +1,7 @@ module.exports = { - "*.{js,jsx,vue,ts,tsx}": ["vue-cli-service lint", () => "npm run test"], + "*.{ts,tsx,js,jsx,vue,json,scss,css}": [ + () => "npm run lint:fix", + () => "npm run test:unit", + ], "*.scss": ["npm run lint:styles"], }; diff --git a/package-lock.json b/package-lock.json index 718674ca..8ce26111 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,25 @@ "version": "2.19.0", "hasInstallScript": true, "dependencies": { - "@loopback/boot": "^5.0.2", - "@loopback/context": "^5.0.1", - "@loopback/core": "^4.0.2", + "@electron-toolkit/preload": "^3.0.2", + "@electron-toolkit/utils": "^4.0.0", + "@loopback/boot": "^5.0.10", + "@loopback/context": "^5.0.10", + "@loopback/core": "^4.0.10", "@vueform/toggle": "^2.1.1", "electron-context-menu": "^3.4.0", - "electron-log": "^4.4.8", + "electron-log": "^5.4.2", "electron-shutdown-command": "^2.0.1", "electron-store": "^8.1.0", "electron-updater": "^4.6.5", "fetch-installed-software": "^0.0.7", - "fs-extra": "^10.1.0", - "js-ini": "^1.5.1", + "fs-extra": "^11.1.1", + "js-ini": "^1.6.0", "junk": "^3.1.0", "mitt": "^3.0.0", "node-fetch": "^2.6.7", "ps-list": "^7.2.0", - "tslib": "^2.5.0", + "tslib": "^2.0.0", "vue": "^3.2.31", "vue-class-component": "^8.0.0-0", "vue-final-modal": "^3.4.4", @@ -37,94 +39,170 @@ "@babel/plugin-proposal-class-properties": "^7.16.7", "@babel/preset-typescript": "^7.16.5", "@commitlint/config-conventional": "^15.0.0", - "@loopback/build": "^9.0.2", - "@loopback/testlab": "^5.0.2", + "@istanbuljs/nyc-config-typescript": "^1.0.2", + "@loopback/build": "^9.0.10", + "@loopback/eslint-config": "^14.0.2", + "@loopback/testlab": "^5.0.10", + "@playwright/test": "^1.52.0", + "@swc/core": "^1.13.3", + "@tsconfig/node16-strictest": "^1.0.4", + "@tsconfig/strictest": "^2.0.1", "@types/electron-devtools-installer": "^2.2.0", "@types/fs-extra": "^9.0.13", "@types/ini": "^1.3.31", - "@types/mocha": "^9.1.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-lib-report": "^3.0.3", + "@types/istanbul-reports": "^3.0.4", + "@types/jest": "^30.0.0", + "@types/mocha": "^10.0.1", "@types/mock-fs": "^4.13.1", "@types/mock-require": "^2.0.1", "@types/ncp": "^2.0.5", + "@types/node": "^18.19.111", "@types/node-fetch": "^2.6.1", - "@typescript-eslint/eslint-plugin": "^2.33.0", - "@typescript-eslint/parser": "^2.33.0", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.9", + "@vitejs/plugin-vue": "^5.2.4", "@vue/cli-plugin-babel": "~4.5.15", - "@vue/cli-plugin-eslint": "^4.5.15", + "@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-router": "~4.5.15", "@vue/cli-plugin-typescript": "^4.5.15", "@vue/cli-service": "~4.5.15", "@vue/compiler-sfc": "^3.2.26", - "@vue/eslint-config-prettier": "^6.0.0", - "@vue/eslint-config-standard": "^5.1.2", - "@vue/eslint-config-typescript": "^5.0.2", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-standard": "^8.0.1", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/test-utils": "^2.4.6", + "@vue/tsconfig": "^0.4.0", "babel-eslint": "^10.1.0", + "babel-plugin-istanbul": "^5.2.0", "commitlint": "^15.0.0", + "cross-env": "^7.0.3", "electron": "^16.0.5", "electron-devtools-installer": "^3.1.0", - "eslint": "^6.7.2", + "electron-vite": "^3.1.0", + "eslint": "^8.42.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.4.1", "eslint-plugin-promise": "^6.0.0", "eslint-plugin-standard": "^4.0.0", - "eslint-plugin-vue": "^8.2.0", + "eslint-plugin-vue": "^9.14.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.7", + "jest": "^26.6.3", "lint-staged": "^12.1.3", - "mocha": "^10.0.0", - "mock-fs": "^5.1.3", + "mocha": "^10.2.0", + "mock-fs": "^5.5.0", "mock-require": "^3.0.3", + "nock": "^13.5.4", "node-sass": "^6.0.1", "nodemon": "^2.0.15", - "prettier": "^2.5.1", + "nyc": "^15.1.0", + "playwright": "^1.52.0", + "prettier": "^2.8.7", "reflect-metadata": "^0.1.13", + "sass-embedded": "^1.90.0", "sass-loader": "^10.2.0", "stylelint": "^13.12.0", "stylelint-config-recommended-scss": "^4.3.0", "stylelint-scss": "^3.21.0", + "ts-jest": "^26.5.6", + "ts-node": "^10.9.1", "tsc-alias": "^1.6.4", "tsconfig-paths": "^4.0.0", - "typescript": "^4.5.4", + "typescript": "~4.9.5", + "vite": "^6.3.5", "vue-cli-plugin-electron-builder": "~2.1.1", - "vue-property-decorator": "^10.0.0-rc.3" + "vue-jest": "^5.0.0-alpha.10", + "vue-property-decorator": "^10.0.0-rc.3", + "xvfb-maybe": "^0.2.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.6.tgz", + "integrity": "sha512-ULSIYPy4ZPM301dfCxRz0l2GJjOwIo/PqmWonIu1bLml7UmnVQmH+juJcoyXp6E8gIRRNAjGYftJnNQlfy4vPg==", + "dev": true, + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.14.0", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.14.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.3", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.2", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.3", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2", - "convert-source-map": "^1.7.0", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -134,23 +212,33 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" @@ -181,27 +269,46 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.16", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.17.6", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", @@ -313,6 +420,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", @@ -338,26 +455,35 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.13.12" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.14.2", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -373,10 +499,11 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -411,11 +538,16 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.13.12" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { @@ -441,19 +573,33 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { "version": "7.16.0", @@ -470,32 +616,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.14.0", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", + "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.17.7", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.0" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -705,79 +846,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/@babel/compat-data": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/browserslist": { - "version": "4.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/electron-to-chromium": { - "version": "1.3.894", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/node-releases": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/plugin-proposal-object-rest-spread/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.16.0", "dev": true, @@ -867,6 +935,19 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "dev": true, @@ -928,6 +1009,35 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "dev": true, @@ -1062,11 +1172,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1091,17 +1203,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.16.0", "dev": true, @@ -1295,46 +1396,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd/node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd/node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd/node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.16.0", "dev": true, @@ -1352,46 +1413,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs/node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs/node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs/node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.16.0", "dev": true, @@ -1410,46 +1431,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.16.0", "dev": true, @@ -1465,46 +1446,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-umd/node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd/node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd/node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.16.0", "dev": true, @@ -1623,17 +1564,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.0", "dev": true, @@ -1845,71 +1775,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/compat-data": { - "version": "7.16.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/preset-env/node_modules/browserslist": { - "version": "4.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/@babel/preset-env/node_modules/electron-to-chromium": { - "version": "1.3.894", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/preset-env/node_modules/node-releases": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.0", "dev": true, @@ -1949,14 +1814,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-typescript/node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/runtime": { "version": "7.16.3", "dev": true, @@ -1969,53 +1826,83 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.6.3.tgz", + "integrity": "sha512-w/gJKME9mYN7ZoUAmSMAWXk4hkVpxRKvEJCb3dV5g9wwWdxTJJ0ayOJAVcNxtdqaxDyFuC0uz4RSGVacJ030PQ==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, "node_modules/@commitlint/config-conventional": { "version": "15.0.0", "dev": true, @@ -2263,6 +2150,16 @@ "node": ">=8" } }, + "node_modules/@commitlint/load/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/@commitlint/message": { "version": "15.0.0", "dev": true, @@ -2298,6 +2195,20 @@ "node": ">=v12" } }, + "node_modules/@commitlint/read/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/@commitlint/resolve-extends": { "version": "15.0.0", "dev": true, @@ -2625,6 +2536,28 @@ "node": ">=8" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@develar/schema-utils": { "version": "2.6.5", "dev": true, @@ -2641,9 +2574,26 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/@electron-toolkit/preload": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@electron-toolkit/preload/-/preload-3.0.2.tgz", + "integrity": "sha512-TWWPToXd8qPRfSXwzf5KVhpXMfONaUuRAZJHsKthKgZR/+LqX1dZVSSClQ8OTAEduvLGdecljCsoT2jSshfoUg==", + "license": "MIT", + "peerDependencies": { + "electron": ">=13.0.0" + } + }, + "node_modules/@electron-toolkit/utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@electron-toolkit/utils/-/utils-4.0.0.tgz", + "integrity": "sha512-qXSntwEzluSzKl4z5yFNBknmPGjPa3zFhE4mp9+h0cgokY5ornAeP+CJQDBhKsL1S58aOQfcwkD3NwLZCl+64g==", + "license": "MIT", + "peerDependencies": { + "electron": ">=13.0.0" + } + }, "node_modules/@electron/get": { "version": "1.13.1", - "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.1", @@ -2664,7 +2614,6 @@ }, "node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -2677,7 +2626,6 @@ }, "node_modules/@electron/get/node_modules/jsonfile": { "version": "4.0.0", - "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -2685,7 +2633,6 @@ }, "node_modules/@electron/get/node_modules/semver": { "version": "6.3.0", - "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -2693,7 +2640,6 @@ }, "node_modules/@electron/get/node_modules/universalify": { "version": "0.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -2772,74 +2718,543 @@ "cosmiconfig": ">=6" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader/node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.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" + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" } }, - "node_modules/@eslint/eslintrc/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], "dev": true, - "bin": { - "acorn": "bin/acorn" - }, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=0.4.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/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==", - "dev": true + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", "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/eslint-utils/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-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "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/eslintrc/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==", + "dev": true + }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2852,9 +3267,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -2908,6 +3323,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@exodus/schemasafe": { "version": "1.0.0-rc.7", "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.7.tgz", @@ -2941,19 +3365,19 @@ } }, "node_modules/@hapi/shot": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.0.tgz", - "integrity": "sha512-RLGgzXy9GciJDunhY40NbVnLgYqp5gfBooZ2fOkAr4KbCEav/SJtYQS1N+knR7WFGzy8aooCR3XBUPI4ghHAkQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", "dev": true, "dependencies": { - "@hapi/hoek": "^10.0.0", - "@hapi/validate": "^2.0.0" + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" } }, "node_modules/@hapi/shot/node_modules/@hapi/hoek": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", - "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", + "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", "dev": true }, "node_modules/@hapi/topo": { @@ -2965,49 +3389,64 @@ } }, "node_modules/@hapi/validate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.0.tgz", - "integrity": "sha512-w5m8MvBgqGndbMIB+AWmXTb8CLtF1DlIxbnbAHNAo7aFuNQuI1Ywc2e0zDLK5fbFXDoqRzNrHnC7JjNJ+hDigw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", "dev": true, "dependencies": { - "@hapi/hoek": "^10.0.0", - "@hapi/topo": "^6.0.0" + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" } }, "node_modules/@hapi/validate/node_modules/@hapi/hoek": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", - "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", + "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", "dev": true }, "node_modules/@hapi/validate/node_modules/@hapi/topo": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.0.tgz", - "integrity": "sha512-aorJvN1Q1n5xrZuA50Z4X6adI6VAM2NalIVm46ALL9LUvdoqhof3JPY69jdJH8asM3PsWr2SUVYzp57EqUP41A==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "dependencies": { - "@hapi/hoek": "^10.0.0" + "@hapi/hoek": "^11.0.2" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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" @@ -3061,6 +3500,95 @@ "node": ">=0.10.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3095,6 +3623,21 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/nyc-config-typescript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.2.tgz", + "integrity": "sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "nyc": ">=15" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -3104,237 +3647,156 @@ "node": ">=8" } }, - "node_modules/@loopback/boot": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-5.0.2.tgz", - "integrity": "sha512-5M2t9AA3nx3mXy8KejOffseIK6DBBcalvHbekWGMPI6gr37ydc2WZSG/JJX7ndmKmd+NhxPagm5ZlmWC2OpYHQ==", + "node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "license": "MIT", "dependencies": { - "@loopback/model-api-builder": "^4.0.2", - "@loopback/repository": "^5.0.2", - "@loopback/service-proxy": "^5.0.2", - "@types/debug": "^4.1.7", - "@types/glob": "^7.2.0", - "debug": "^4.3.4", - "glob": "^8.0.3", - "tslib": "^2.4.0" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" }, "engines": { - "node": "14 || 16 || 17 || 18" - }, - "peerDependencies": { - "@loopback/core": "^4.0.2" - } - }, - "node_modules/@loopback/boot/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==", - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/boot/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/@jest/console/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, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@loopback/boot/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/@loopback/build": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@loopback/build/-/build-9.0.2.tgz", - "integrity": "sha512-nxvaWdsGDk47K86FIvKTtjqi3hftHgBffvBXKK1LpZEgrEnz5zzOA13cMg1y5Ms5zhxWmsuq3k8YuBKxiXCA7Q==", - "dev": true, - "dependencies": { - "@loopback/eslint-config": "^13.0.2", - "@types/mocha": "^9.1.1", - "@types/node": "^14.18.21", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "eslint": "^8.19.0", - "fs-extra": "^10.1.0", - "glob": "^8.0.3", - "lodash": "^4.17.21", - "mocha": "^10.0.0", - "nyc": "^15.1.0", - "prettier": "^2.7.1", - "rimraf": "^3.0.2", - "source-map-support": "^0.5.21", - "typescript": "~4.7.4" - }, - "bin": { - "lb-clean": "bin/run-clean.js", - "lb-eslint": "bin/run-eslint.js", - "lb-mocha": "bin/run-mocha.js", - "lb-nyc": "bin/run-nyc.js", - "lb-prettier": "bin/run-prettier.js", - "lb-tsc": "bin/compile-package.js", - "lb-ttsc": "bin/compile-package.js" }, - "engines": { - "node": "14 || 16 || 17 || 18" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@loopback/build/node_modules/@loopback/eslint-config": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-13.0.2.tgz", - "integrity": "sha512-IxNBB9OEexiS0tYEsQX63KQ96IU0mQD/H6paHQw2ghcxOTiicPijT7Lg1B8Yt+Qv8GrnyACynRkNAhltgXRmhg==", + "node_modules/@jest/console/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, + "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^5.30.6", - "@typescript-eslint/parser": "^5.30.6", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-eslint-plugin": "^4.4.1", - "eslint-plugin-mocha": "^10.0.5" + "color-name": "~1.1.4" }, "engines": { - "node": "14 || 16 || 17 || 18" - }, - "peerDependencies": { - "eslint": "^8.19.0" + "node": ">=7.0.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/console/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, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@loopback/build/node_modules/@types/node": { - "version": "14.18.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.23.tgz", - "integrity": "sha512-MhbCWN18R4GhO8ewQWAFK4TGQdBpXWByukz7cWyJmXhvRuCIaM/oWytGPqVmDzgEnnaIc9ss6HbU5mUi+vyZPA==", - "dev": true + "license": "MIT" }, - "node_modules/@loopback/build/node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.32.0.tgz", - "integrity": "sha512-CHLuz5Uz7bHP2WgVlvoZGhf0BvFakBJKAD/43Ty0emn4wXWv5k01ND0C0fHcl/Im8Td2y/7h44E9pca9qAu2ew==", + "node_modules/@jest/console/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, - "dependencies": { - "@typescript-eslint/scope-manager": "5.32.0", - "@typescript-eslint/type-utils": "5.32.0", - "@typescript-eslint/utils": "5.32.0", - "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, + "license": "MIT", "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": ">=8" } }, - "node_modules/@loopback/build/node_modules/@typescript-eslint/parser": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.32.0.tgz", - "integrity": "sha512-IxRtsehdGV9GFQ35IGm5oKKR2OGcazUoiNBxhRV160iF9FoyuXxjY+rIqs1gfnd+4eL98OjeGnMpE7RF/NBb3A==", + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.32.0", - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/typescript-estree": "5.32.0", - "debug": "^4.3.4" - }, + "license": "MIT", "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": ">=8" } }, - "node_modules/@loopback/build/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz", - "integrity": "sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "has-flag": "^4.0.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": ">=8" } }, - "node_modules/@loopback/build/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/node_modules/ansi-styles": { + "node_modules/@jest/core/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, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3345,38 +3807,25 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@loopback/build/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==", - "dev": true - }, - "node_modules/@loopback/build/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/@loopback/build/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@jest/core/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/@loopback/build/node_modules/chalk": { + "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3388,11 +3837,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@loopback/build/node_modules/color-convert": { + "node_modules/@jest/core/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, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3400,611 +3850,653 @@ "node": ">=7.0.0" } }, - "node_modules/@loopback/build/node_modules/color-name": { + "node_modules/@jest/core/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 + "dev": true, + "license": "MIT" }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/core/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/core/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, - "dependencies": { - "path-type": "^4.0.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/core/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, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12.0" } }, - "node_modules/@loopback/build/node_modules/eslint": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", - "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", + "node_modules/@jest/core/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "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", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.6" } }, - "node_modules/@loopback/build/node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@loopback/build/node_modules/eslint-plugin-mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", - "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-utils": "^3.0.0", - "rambda": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/core/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, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "is-number": "^7.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8.0" } }, - "node_modules/@loopback/build/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@loopback/build/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@jest/expect-utils": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.5.tgz", + "integrity": "sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.0.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@loopback/build/node_modules/espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@jest/fake-timers/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, - "engines": { - "node": ">=4.0" + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, + "license": "BSD-3-Clause", "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" - }, + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", + "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.6.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" }, "engines": { - "node": ">= 6" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "node-notifier": "^8.0.0" } }, - "node_modules/@loopback/build/node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/@jest/reporters/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, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@loopback/build/node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "node_modules/@loopback/build/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/reporters/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, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10.13.0" + "node": ">=7.0.0" } }, - "node_modules/@loopback/build/node_modules/glob/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==", + "node_modules/@jest/reporters/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, - "dependencies": { - "balanced-match": "^1.0.0" + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@loopback/build/node_modules/glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" } }, - "node_modules/@loopback/build/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@loopback/build/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { - "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" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@loopback/build/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, "engines": { - "node": ">= 4" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/@jest/transform/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, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@loopback/build/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@jest/transform/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "brace-expansion": "^1.1.7" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/@loopback/build/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/@jest/transform/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "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" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/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, + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/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, + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/@loopback/build/node_modules/path-type": { + "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/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, + "license": "MIT", "engines": { - "node": ">= 0.8.0" + "node": ">=0.12.0" } }, - "node_modules/@loopback/build/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/@jest/transform/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=8" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@loopback/build/node_modules/slash": { + "node_modules/@jest/transform/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/@loopback/build/node_modules/supports-color": { + "node_modules/@jest/transform/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4012,11 +4504,12 @@ "node": ">=8" } }, - "node_modules/@loopback/build/node_modules/to-regex-range": { + "node_modules/@jest/transform/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, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4024,227 +4517,269 @@ "node": ">=8.0" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10.14.2" } }, - "node_modules/@loopback/build/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==", + "node_modules/@jest/types/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@loopback/build/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@loopback/context": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/context/-/context-5.0.2.tgz", - "integrity": "sha512-aQMvi0asJ+ejslq8dT/tUShxOf7Vv6Z4rO75WYIv7+cNK5b/gcafCuon7sEbDpSB4vtuzBWJncfACcoC2m3VEw==", + "node_modules/@jest/types/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, + "license": "MIT", "dependencies": { - "@loopback/metadata": "^5.0.2", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "hyperid": "^3.0.1", - "p-event": "^4.2.0", - "tslib": "^2.4.0", - "uuid": "^8.3.2" + "color-name": "~1.1.4" }, "engines": { - "node": "14 || 16 || 17 || 18" + "node": ">=7.0.0" } }, - "node_modules/@loopback/context/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@jest/types/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, + "license": "MIT" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@loopback/core": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@loopback/core/-/core-4.0.2.tgz", - "integrity": "sha512-R+cik+p5i+cBH1uae6wbap1zrQKMVrgnDTIKXn4FWc9UjQFo0BhEuwhz/73sJr9zRLRI7gDNM2FRC7IfE5o3Xg==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "@loopback/context": "^5.0.2", - "debug": "^4.3.4", - "tslib": "^2.4.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "14 || 16 || 17 || 18" + "node": ">=8" } }, - "node_modules/@loopback/filter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-3.0.2.tgz", - "integrity": "sha512-cGSUbz3gRuIGch9yJ/14R5Pm05JKjKvu4pBxHJxWaPlZFlpISw47ZK+qoXtz+HEz5uqZOVJ1v4BSTjswx/1jCQ==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" - }, + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, "engines": { - "node": "14 || 16 || 17 || 18" + "node": ">=6.0.0" } }, - "node_modules/@loopback/metadata": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-5.0.2.tgz", - "integrity": "sha512-zu2c490jhBrmSWSpwUgcVCy/0gsdxM4o7g9HnxGd+VKNNtNOWJzNR71hIeI50Dp71+kgYypZ58PCIlPaeXtoLw==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.3.4", - "lodash": "^4.17.21", - "reflect-metadata": "^0.1.13", - "tslib": "^2.4.0" - }, - "engines": { - "node": "14 || 16 || 17 || 18" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@loopback/model-api-builder": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-4.0.2.tgz", - "integrity": "sha512-X9kc2JkTKjcTfZNKmzlNq6B3rebR5fkiOVHmFZsGrnAF0CXdVRaawt2KtZ63D+J/MspSOjXOq+4KtZb1q5y/iw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" - }, - "engines": { - "node": "14 || 16 || 17 || 18" - }, - "peerDependencies": { - "@loopback/core": "^4.0.2", - "@loopback/repository": "^5.0.2" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@loopback/repository": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-5.0.2.tgz", - "integrity": "sha512-qbAVLWXuZM+e/owvWnuEIsPYuF0x8hqld4WO1DV5TBA6l5F09Y6wnYx6ytLs/eiuM41HP7sBgRMWyGVtAwRqLw==", + "node_modules/@loopback/boot": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-5.0.10.tgz", + "integrity": "sha512-dft1pHOFqs6urbzZ/m+vtB5RTqRogCY79AN3lej9YYcwFS+sX3zj8qYpyNDYWmMfZ0SSlLdTA7+K9IiitKCSYg==", "dependencies": { - "@loopback/filter": "^3.0.2", + "@loopback/model-api-builder": "^4.0.10", + "@loopback/repository": "^5.1.5", + "@loopback/service-proxy": "^5.0.10", "@types/debug": "^4.1.7", + "@types/glob": "^8.1.0", "debug": "^4.3.4", - "lodash": "^4.17.21", - "loopback-datasource-juggler": "^4.27.1", - "tslib": "^2.4.0" + "glob": "^10.0.0", + "tslib": "^2.5.0" }, "engines": { - "node": "14 || 16 || 17 || 18" + "node": "14 || 16 || 18 || 19" }, "peerDependencies": { - "@loopback/core": "^4.0.2" + "@loopback/core": "^4.0.10" } }, - "node_modules/@loopback/service-proxy": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-5.0.2.tgz", - "integrity": "sha512-JWK9WeWgsh5OSisho5z99Q2P3TTqDluzBEUsfkTSFetoIFm2ypXAWzNwaqLhdO3n098mRkEON2Ke0l0GsofiKQ==", + "node_modules/@loopback/boot/node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@loopback/boot/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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@loopback/boot/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==", "dependencies": { - "loopback-datasource-juggler": "^4.27.1", - "tslib": "^2.4.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "14 || 16 || 17 || 18" - }, - "peerDependencies": { - "@loopback/core": "^4.0.2" + "node": ">= 8" } }, - "node_modules/@loopback/testlab": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-5.0.2.tgz", - "integrity": "sha512-iZK36htP1uAle5gyIj0n8tbTPnQ/SUQ32cFC/o583EXiNyg62oj9bN31PKbLeGnks1BfQc82yMYWAxcN4UZUTA==", - "dev": true, + "node_modules/@loopback/boot/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dependencies": { - "@hapi/shot": "^6.0.0", - "@types/express": "^4.17.13", - "@types/fs-extra": "^9.0.13", - "@types/shot": "^4.0.1", - "@types/sinon": "^10.0.12", - "@types/supertest": "^2.0.12", - "express": "^4.18.1", - "fs-extra": "^10.1.0", - "oas-validator": "^5.0.8", - "should": "^13.2.3", - "sinon": "^11.1.2", - "supertest": "^6.2.3", - "tslib": "^2.4.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": "14 || 16 || 17 || 18" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", - "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" - } - ], - "license": "Apache-2.0", + "node_modules/@loopback/boot/node_modules/glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dependencies": { - "cross-spawn": "^7.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">= 10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@malept/cross-spawn-promise/node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", + "node_modules/@loopback/boot/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@malept/cross-spawn-promise/node_modules/path-key": { + "node_modules/@loopback/boot/node_modules/minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@loopback/boot/node_modules/path-key": { "version": "3.1.1", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, - "node_modules/@malept/cross-spawn-promise/node_modules/shebang-command": { + "node_modules/@loopback/boot/node_modules/shebang-command": { "version": "2.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -4252,18 +4787,29 @@ "node": ">=8" } }, - "node_modules/@malept/cross-spawn-promise/node_modules/shebang-regex": { + "node_modules/@loopback/boot/node_modules/shebang-regex": { "version": "3.0.0", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { "node": ">=8" } }, - "node_modules/@malept/cross-spawn-promise/node_modules/which": { + "node_modules/@loopback/boot/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@loopback/boot/node_modules/which": { "version": "2.0.2", - "dev": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -4274,1670 +4820,2013 @@ "node": ">= 8" } }, - "node_modules/@malept/flatpak-bundler": { - "version": "0.4.0", + "node_modules/@loopback/build": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@loopback/build/-/build-9.0.10.tgz", + "integrity": "sha512-YMdwM7J5o7/+GGJwqW3U0Ua1zpZVT/Ok2V1/i87zwALXQvvQwNMbTncbEKbYGRqN4yicqiv1dswrmf8bnw+wdg==", "dev": true, - "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "tmp-promise": "^3.0.2" + "@loopback/eslint-config": "^13.0.10", + "@types/mocha": "^10.0.1", + "@types/node": "^14.18.42", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "eslint": "^8.38.0", + "fs-extra": "^11.1.1", + "glob": "^10.0.0", + "lodash": "^4.17.21", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "prettier": "^2.8.7", + "rimraf": "^5.0.0", + "source-map-support": "^0.5.21", + "typescript": "~4.9.5" + }, + "bin": { + "lb-clean": "bin/run-clean.js", + "lb-eslint": "bin/run-eslint.js", + "lb-mocha": "bin/run-mocha.js", + "lb-nyc": "bin/run-nyc.js", + "lb-prettier": "bin/run-prettier.js", + "lb-tsc": "bin/compile-package.js", + "lb-ttsc": "bin/compile-package.js" }, "engines": { - "node": ">= 10.0.0" + "node": "14 || 16 || 18 || 19" } }, - "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { - "version": "9.1.0", + "node_modules/@loopback/build/node_modules/@loopback/eslint-config": { + "version": "13.0.10", + "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-13.0.10.tgz", + "integrity": "sha512-P76txTw4NrQD+d/ZUY1UjU4G3EXGPcKqrcJSag35GYHsJ+u0y3cb9A1jOiZfD7LyfZC7nmcjXFk3Ixp8zXMr+w==", "dev": true, - "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-eslint-plugin": "^5.0.8", + "eslint-plugin-mocha": "^10.1.0" }, "engines": { - "node": ">=10" + "node": "14 || 16 || 18 || 19" + }, + "peerDependencies": { + "eslint": "^8.38.0" } }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", + "node_modules/@loopback/build/node_modules/@types/node": { + "version": "14.18.53", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz", + "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==", + "dev": true + }, + "node_modules/@loopback/build/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - }, - "engines": { - "node": ">=4" + "balanced-match": "^1.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==", + "node_modules/@loopback/build/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": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, - "node_modules/@nodelib/fs.scandir/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==", + "node_modules/@loopback/build/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nodelib/fs.stat": { - "version": "1.1.3", + "node_modules/@loopback/build/node_modules/glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, - "license": "MIT", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, "engines": { - "node": ">= 6" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/@loopback/build/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", + "node_modules/@loopback/build/node_modules/minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/@loopback/build/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@popperjs/core": { - "version": "2.11.0", - "license": "MIT", + "node_modules/@loopback/build/node_modules/rimraf": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "dependencies": { + "glob": "^10.2.5" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", + "node_modules/@loopback/build/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@loopback/build/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, - "dependencies": { - "type-detect": "4.0.8" + "engines": { + "node": ">=8" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", - "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "node_modules/@loopback/build/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@sinonjs/samsam": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", - "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "node_modules/@loopback/build/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": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@soda/friendly-errors-webpack-plugin": { - "version": "1.8.0", - "dev": true, - "license": "MIT", + "node_modules/@loopback/context": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/context/-/context-5.0.10.tgz", + "integrity": "sha512-FRfDTRm32w2/G62aLJS5ur96JI2RLk5xngFirz16ncTiOWy5JwNqgfupe5cfi+ayZ6JthrbGgFgRkVdyncraHw==", "dependencies": { - "chalk": "^2.4.2", - "error-stack-parser": "^2.0.2", - "string-width": "^2.0.0", - "strip-ansi": "^5" + "@loopback/metadata": "^5.0.10", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "hyperid": "^3.1.1", + "p-event": "^4.2.0", + "tslib": "^2.5.0", + "uuid": "^9.0.0" }, "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": "14 || 16 || 18 || 19" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "node_modules/@loopback/context/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/@loopback/core": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@loopback/core/-/core-4.0.10.tgz", + "integrity": "sha512-1UXOh19dfr/LSOEpR5iHaTkzzfjBiR43XIvMmLElLgxuHaZIdWYtPfiK3rtnWC7Hw+PG+xRMuPWyxq0aMfrMsg==", + "dependencies": { + "@loopback/context": "^5.0.10", + "debug": "^4.3.4", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=4" + "node": "14 || 16 || 18 || 19" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": { - "version": "2.1.1", + "node_modules/@loopback/eslint-config": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.2.tgz", + "integrity": "sha512-3T6rspVwU1Gs51wwrhEtae++yRCUn6KS6qKU20ziLn888zwa5X/jAAnO7/Vo2r2dsVZFiA+Fv8Awy6lNlX+y4A==", "dev": true, - "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-eslint-plugin": "^5.1.0", + "eslint-plugin-mocha": "^10.1.0" }, "engines": { - "node": ">=4" + "node": "16 || 18 || 20" + }, + "peerDependencies": { + "eslint": "^8.45.0" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/@loopback/filter": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-3.0.10.tgz", + "integrity": "sha512-5bbIJSXNebL7RocF4wXCjwIovyRJ98WtBTSKHO2DraFCrG1EbuSjvcloiH4iR4FXhzJI2gLPQv0N9Zgdypvdrg==", "dependencies": { - "ansi-regex": "^3.0.0" + "tslib": "^2.5.0" }, "engines": { - "node": ">=4" + "node": "14 || 16 || 18 || 19" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", + "node_modules/@loopback/metadata": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-5.0.10.tgz", + "integrity": "sha512-FME4Hla/A1s3nFc5guVCRcvWx7AXQHa3JbbCftkW0CWwAsjcE9Yt2KMU4l0YS0movR9KWRF9HcSt9Tg2vfY9bQ==", "dependencies": { - "ansi-regex": "^4.1.0" + "debug": "^4.3.4", + "lodash": "^4.17.21", + "reflect-metadata": "^0.1.13", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6" + "node": "14 || 16 || 18 || 19" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/@loopback/model-api-builder": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-4.0.10.tgz", + "integrity": "sha512-0P/uHcuJBdjG7X3vBLVQwLTcfOsZHBhwIQIw/S682tWpzUM4Gw82cYsCEaoe2veNtYnezyv3qGc0fnm8JnAoZQ==", + "dependencies": { + "tslib": "^2.5.0" + }, "engines": { - "node": ">=6" + "node": "14 || 16 || 18 || 19" + }, + "peerDependencies": { + "@loopback/core": "^4.0.10", + "@loopback/repository": "^5.1.5" } }, - "node_modules/@soda/get-current-script": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "dev": true, - "license": "MIT", + "node_modules/@loopback/repository": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-5.1.5.tgz", + "integrity": "sha512-v0rOpt8Sp/XofXEzEJBT4sgOEYqm3b5GyE2Zlmj074BIMIgIKCudsC8Sfwlg5O4J5I2zLaZaCXDDRg4OZSPwfg==", "dependencies": { - "@babel/core": ">=7.9.0" + "@loopback/filter": "^3.0.10", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "loopback-datasource-juggler": "^4.28.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": "14 || 16 || 18 || 19" }, "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "@loopback/core": "^4.0.10" } }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "dev": true, - "license": "MIT", + "node_modules/@loopback/service-proxy": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-5.0.10.tgz", + "integrity": "sha512-xqEB9DmJNpDr4+jVW9YOpUkQJUgGWLk3WgCSNPQiM6uao5YThJsD2JHMn89SeKzoCreOBAtMsHCVBop5uXxCqw==", "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" + "loopback-datasource-juggler": "^4.28.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": "14 || 16 || 18 || 19" }, "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "@loopback/core": "^4.0.10" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", + "node_modules/@loopback/testlab": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-5.0.10.tgz", + "integrity": "sha512-OPzxm8jM+LdQX0LPen7E7/iusMIg9HAct7IRlThM3o+ZjPg9oHAMLvICmbgW2P/vRUtwfgoMmbYF0ZPoOboaaw==", "dev": true, - "license": "MIT", "dependencies": { - "defer-to-connect": "^1.0.1" + "@hapi/shot": "^6.0.1", + "@types/express": "^4.17.17", + "@types/fs-extra": "^11.0.1", + "@types/shot": "^4.0.1", + "@types/sinon": "^10.0.13", + "@types/supertest": "^2.0.12", + "express": "^4.18.2", + "fs-extra": "^11.1.1", + "oas-validator": "^5.0.8", + "should": "^13.2.3", + "sinon": "^15.0.3", + "supertest": "^6.3.3", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6" + "node": "14 || 16 || 18 || 19" } }, - "node_modules/@types/body-parser": { - "version": "1.19.1", + "node_modules/@loopback/testlab/node_modules/@types/fs-extra": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", + "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/connect": "*", + "@types/jsonfile": "*", "@types/node": "*" } }, - "node_modules/@types/connect": { - "version": "3.4.35", + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", "dev": true, - "license": "MIT", + "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" + } + ], + "license": "Apache-2.0", "dependencies": { - "@types/node": "*" + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", + "node_modules/@malept/cross-spawn-promise/node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, "license": "MIT", "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true + "node_modules/@malept/cross-spawn-promise/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/debug": { - "version": "4.1.7", + "node_modules/@malept/cross-spawn-promise/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { - "@types/ms": "*" + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/electron-devtools-installer": { - "version": "2.2.0", + "node_modules/@malept/cross-spawn-promise/node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", + "node_modules/@malept/cross-spawn-promise/node_modules/which": { + "version": "2.0.2", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } }, - "node_modules/@types/express": { - "version": "4.17.13", + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", "dev": true, "license": "MIT", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "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/@types/express-serve-static-core": { - "version": "4.17.25", + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "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==", + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" } }, - "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==", + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" } }, - "node_modules/@types/http-proxy": { - "version": "1.17.7", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/ini": { - "version": "1.3.31", + "node_modules/@nodelib/fs.scandir/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, - "license": "MIT" + "engines": { + "node": ">= 8" + } }, - "node_modules/@types/json-schema": { - "version": "7.0.9", + "node_modules/@nodelib/fs.stat": { + "version": "1.1.3", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 6" + } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "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/@types/mdast": { - "version": "3.0.3", + "node_modules/@npmcli/move-file": { + "version": "1.1.2", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "*" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/mime": { - "version": "1.3.2", + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "3.0.4", - "license": "MIT" + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@types/minimist": { - "version": "1.2.1", + "node_modules/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "dev": true, "license": "MIT" }, - "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", - "dev": true - }, - "node_modules/@types/mock-fs": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.1.tgz", - "integrity": "sha512-m6nFAJ3lBSnqbvDZioawRvpLXSaPyn52Srf7OfzjubYbYX8MTUdIgDxQl0wEapm4m/pNYSd9TXocpQ0TvZFlYA==", + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mock-require": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/mock-require/-/mock-require-2.0.1.tgz", - "integrity": "sha512-O7U5DVGboY/Crueb5/huUCIRjKtRVRaLmRDbZJBlDQgJn966z3aiFDN+6AtYviu2ExwMkl34LjT/IiC0OPtKuQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "license": "MIT" - }, - "node_modules/@types/ncp": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "15.6.0", - "license": "MIT" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/q": { - "version": "1.5.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/shot": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.1.tgz", - "integrity": "sha512-LUJWxDKYWmmUpVXDWZ78hFIrqb/ho9RoKqBAFRJw4OHOS3qCKCoXCyzrfmf24lbO4COYfqL0iEWNArOfKEYW9g==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/sinon": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", - "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", - "dev": true, - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", - "dev": true - }, - "node_modules/@types/source-list-map": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/superagent": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", - "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", - "dev": true, - "dependencies": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", - "dev": true, - "dependencies": { - "@types/superagent": "*" - } - }, - "node_modules/@types/tapable": { - "version": "1.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/uglify-js": { - "version": "3.13.1", + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/@types/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@types/unist": { - "version": "2.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/webpack": { - "version": "4.41.31", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/@types/webpack-dev-server": { - "version": "3.11.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect-history-api-fallback": "*", - "@types/express": "*", - "@types/serve-static": "*", - "@types/webpack": "^4", - "http-proxy-middleware": "^1.0.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@types/webpack-env": { - "version": "1.16.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/webpack-sources": { - "version": "3.2.0", + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" - } - }, - "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.3", - "dev": true, - "license": "BSD-3-Clause", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@types/webpack/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@types/yargs-parser": { - "version": "20.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "2.34.0", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^2.0.0", - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "2.34.0", + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/parser": { - "version": "2.34.0", + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.32.0.tgz", - "integrity": "sha512-KyAE+tUON0D7tNz92p1uetRqVJiiAkeluvwvZOqBmW9z2XApmk5WSMV9FrzOroAcVxJZB3GfUwVKr98Dr/OjOg==", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.32.0.tgz", - "integrity": "sha512-0gSsIhFDduBz3QcHJIp3qRCvVYbqzHg8D6bHFsDMrm0rURYDj+skBK2zmYebdCp+4nrd9VWd13egvhYFJj/wZg==", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.32.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.32.0.tgz", - "integrity": "sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ==", + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "2.34.0", + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.32.0.tgz", - "integrity": "sha512-W7lYIAI5Zlc5K082dGR27Fczjb3Q57ECcXefKU/f0ajM5ToM0P+N9NmJWip8GmGu/g6QISNT+K6KYB+iSHjXCQ==", + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.32.0", - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/typescript-estree": "5.32.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 8" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz", - "integrity": "sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==", + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/parcel" } }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@parcel/watcher/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "fill-range": "^7.1.1" + }, "engines": { "node": ">=8" } }, - "node_modules/@typescript-eslint/utils/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@parcel/watcher/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "fill-range": "^7.0.1" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@parcel/watcher/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, - "dependencies": { - "path-type": "^4.0.0" - }, + "license": "MIT", + "optional": true, "engines": { - "node": ">=8" + "node": ">=0.12.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/@parcel/watcher/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=8.6" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, - "engines": { - "node": ">=10" - } + "license": "MIT", + "optional": true }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@parcel/watcher/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, + "license": "MIT", + "optional": 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" + "is-number": "^7.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=8.0" } }, - "node_modules/@typescript-eslint/utils/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" - }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/@typescript-eslint/utils/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/@playwright/test": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", + "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", "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" + "playwright": "1.52.0" }, - "engines": { - "node": ">=10" + "bin": { + "playwright": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/utils/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": ">=18" } }, - "node_modules/@typescript-eslint/utils/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/@popperjs/core": { + "version": "2.11.0", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" } }, - "node_modules/@typescript-eslint/utils/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@typescript-eslint/utils/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz", - "integrity": "sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g==", + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.32.0", - "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" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "cpu": [ + "arm" + ], "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.2.1", + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.1.1", + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@vue/babel-plugin-transform-vue-jsx": { - "version": "1.2.1", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "node_modules/@sideway/address/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.40", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", + "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/@vue/babel-preset-app": { - "version": "4.5.15", + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" - }, - "peerDependencies": { - "@babel/core": "*", - "core-js": "^3", - "vue": "^2 || ^3.0.0-0" - }, - "peerDependenciesMeta": { - "core-js": { - "optional": true - }, - "vue": { - "optional": true - } + "type-detect": "4.0.8" } }, - "node_modules/@vue/babel-preset-app/node_modules/semver": { - "version": "6.3.0", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@vue/babel-preset-jsx": { - "version": "1.2.4", + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", "dev": true, - "license": "MIT", "dependencies": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", - "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", - "@vue/babel-sugar-functional-vue": "^1.2.2", - "@vue/babel-sugar-inject-h": "^1.2.2", - "@vue/babel-sugar-v-model": "^1.2.3", - "@vue/babel-sugar-v-on": "^1.2.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/@vue/babel-sugar-composition-api-inject-h": { - "version": "1.2.1", + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "type-detect": "4.0.8" } }, - "node_modules/@vue/babel-sugar-composition-api-render-instance": { - "version": "1.2.4", + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" + }, + "engines": { + "node": ">=8.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@vue/babel-sugar-functional-vue": { - "version": "1.2.2", + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-regex": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@vue/babel-sugar-inject-h": { - "version": "1.2.2", + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@vue/babel-sugar-v-model": { - "version": "1.2.3", + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { - "version": "2.0.0", + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, "engines": { "node": ">=4" } }, - "node_modules/@vue/babel-sugar-v-on": { - "version": "1.2.3", + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" + "ansi-regex": "^4.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.0", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/@vue/cli-overlay": { - "version": "4.5.15", + "node_modules/@soda/get-current-script": { + "version": "1.0.2", "dev": true, "license": "MIT" }, - "node_modules/@vue/cli-plugin-babel": { - "version": "4.5.15", + "node_modules/@stylelint/postcss-css-in-js": { + "version": "0.37.2", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.0", - "@vue/babel-preset-app": "^4.5.15", - "@vue/cli-shared-utils": "^4.5.15", - "babel-loader": "^8.1.0", - "cache-loader": "^4.1.0", - "thread-loader": "^2.1.3", - "webpack": "^4.0.0" + "@babel/core": ">=7.9.0" }, "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" } }, - "node_modules/@vue/cli-plugin-babel/node_modules/@vue/cli-shared-utils": { - "version": "4.5.15", + "node_modules/@stylelint/postcss-markdown": { + "version": "0.36.2", "dev": true, "license": "MIT", "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" } }, - "node_modules/@vue/cli-plugin-babel/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@swc/core": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.3.tgz", + "integrity": "sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==", "dev": true, - "license": "ISC", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "yallist": "^3.0.2" + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.23" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.13.3", + "@swc/core-darwin-x64": "1.13.3", + "@swc/core-linux-arm-gnueabihf": "1.13.3", + "@swc/core-linux-arm64-gnu": "1.13.3", + "@swc/core-linux-arm64-musl": "1.13.3", + "@swc/core-linux-x64-gnu": "1.13.3", + "@swc/core-linux-x64-musl": "1.13.3", + "@swc/core-win32-arm64-msvc": "1.13.3", + "@swc/core-win32-ia32-msvc": "1.13.3", + "@swc/core-win32-x64-msvc": "1.13.3" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, - "node_modules/@vue/cli-plugin-babel/node_modules/semver": { - "version": "6.3.0", + "node_modules/@swc/core-darwin-arm64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.3.tgz", + "integrity": "sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@vue/cli-plugin-babel/node_modules/yallist": { - "version": "3.1.1", + "node_modules/@swc/core-darwin-x64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.3.tgz", + "integrity": "sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } }, - "node_modules/@vue/cli-plugin-eslint": { - "version": "4.5.15", + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.3.tgz", + "integrity": "sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@vue/cli-shared-utils": "^4.5.15", - "eslint-loader": "^2.2.1", - "globby": "^9.2.0", - "inquirer": "^7.1.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0", - "eslint": ">= 1.6.0 < 7.0.0" + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@vue/cli-plugin-eslint/node_modules/@vue/cli-shared-utils": { - "version": "4.5.15", + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.3.tgz", + "integrity": "sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@vue/cli-plugin-eslint/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.3.tgz", + "integrity": "sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@vue/cli-plugin-eslint/node_modules/semver": { - "version": "6.3.0", + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.3.tgz", + "integrity": "sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@vue/cli-plugin-eslint/node_modules/yallist": { - "version": "3.1.1", + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.3.tgz", + "integrity": "sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } }, - "node_modules/@vue/cli-plugin-router": { - "version": "4.5.15", + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.3.tgz", + "integrity": "sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "@vue/cli-shared-utils": "^4.5.15" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@vue/cli-plugin-router/node_modules/@vue/cli-shared-utils": { - "version": "4.5.15", + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.3.tgz", + "integrity": "sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==", + "cpu": [ + "ia32" + ], "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.3.tgz", + "integrity": "sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.24.tgz", + "integrity": "sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", "license": "MIT", "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@vue/cli-plugin-router/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@tsconfig/node16-strictest": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest/-/node16-strictest-1.0.4.tgz", + "integrity": "sha512-kp6/DuAoKzHVv5U+p0uOesYbjrEvrYVNdQMl163a+yXXUv9twabvkCGEn3pmVxKXB45JU5MPGolDDWnONZL5ZQ==", + "deprecated": "TypeScript 5.0 supports combining TSConfigs using array syntax in extends", + "dev": true + }, + "node_modules/@tsconfig/strictest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.1.tgz", + "integrity": "sha512-7JHHCbyCsGUxLd0pDbp24yz3zjxw2t673W5oAP6HCEdr/UUhaRhYd3SSnUsGCk+VnPVJVA4mXROzbhI+nyIk+w==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@vue/cli-plugin-router/node_modules/semver": { - "version": "6.3.0", + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/@vue/cli-plugin-router/node_modules/yallist": { - "version": "3.1.1", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "node_modules/@vue/cli-plugin-typescript": { - "version": "4.5.15", + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/webpack-env": "^1.15.2", - "@vue/cli-shared-utils": "^4.5.15", - "cache-loader": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^3.1.1", - "globby": "^9.2.0", - "thread-loader": "^2.1.3", - "ts-loader": "^6.2.2", - "tslint": "^5.20.1", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "optionalDependencies": { - "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0", - "@vue/compiler-sfc": "^3.0.0-beta.14", - "typescript": ">=2" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - } + "@babel/types": "^7.28.2" } }, - "node_modules/@vue/cli-plugin-typescript/node_modules/@vue/cli-shared-utils": { - "version": "4.5.15", + "node_modules/@types/body-parser": { + "version": "1.19.1", "dev": true, "license": "MIT", "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@vue/cli-plugin-typescript/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@types/connect": { + "version": "3.4.35", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" + "@types/node": "*" } }, - "node_modules/@vue/cli-plugin-typescript/node_modules/semver": { - "version": "6.3.0", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@vue/cli-plugin-typescript/node_modules/yallist": { - "version": "3.1.1", + "node_modules/@types/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/electron-devtools-installer": { + "version": "2.2.0", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@vue/cli-plugin-vuex": { - "version": "4.5.15", + "node_modules/@types/eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@vue/cli-service": { - "version": "4.5.15", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "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, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", "dependencies": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@soda/get-current-script": "^1.0.0", - "@types/minimist": "^1.2.0", - "@types/webpack": "^4.0.0", - "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.15", - "@vue/cli-plugin-router": "^4.5.15", - "@vue/cli-plugin-vuex": "^4.5.15", - "@vue/cli-shared-utils": "^4.5.15", - "@vue/component-compiler-utils": "^3.1.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.4.0", - "acorn-walk": "^7.1.1", - "address": "^1.1.2", - "autoprefixer": "^9.8.6", - "browserslist": "^4.12.0", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.3.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.5.3", - "cssnano": "^4.1.10", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.5", - "pnp-webpack-plugin": "^1.6.4", - "portfinder": "^1.0.26", - "postcss-loader": "^3.0.0", - "ssri": "^8.0.1", - "terser-webpack-plugin": "^1.4.4", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.9.2", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.8.0", - "webpack-chain": "^6.4.0", - "webpack-dev-server": "^3.11.0", - "webpack-merge": "^4.2.2" - }, - "bin": { - "vue-cli-service": "bin/vue-cli-service.js" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "vue-loader-v16": "npm:vue-loader@^16.1.0" - }, - "peerDependencies": { - "@vue/compiler-sfc": "^3.0.0-beta.14", - "vue-template-compiler": "^2.0.0" - }, - "peerDependenciesMeta": { - "@vue/compiler-sfc": { - "optional": true - }, - "less-loader": { - "optional": true - }, - "pug-plain-loader": { - "optional": true - }, - "raw-loader": { - "optional": true - }, - "sass-loader": { - "optional": true - }, - "stylus-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } + "@types/node": "*" } }, - "node_modules/@vue/cli-service/node_modules/@vue/cli-shared-utils": { - "version": "4.5.15", + "node_modules/@types/http-proxy": { + "version": "1.17.7", "dev": true, "license": "MIT", "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "@types/node": "*" } }, - "node_modules/@vue/cli-service/node_modules/acorn": { - "version": "7.4.1", + "node_modules/@types/ini": { + "version": "1.3.31", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", + "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=0.4.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/ansi-styles": { + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/jest/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, "license": "MIT", "dependencies": { @@ -5950,18 +6839,56 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@vue/cli-service/node_modules/cliui": { - "version": "6.0.0", + "node_modules/@types/jest/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@vue/cli-service/node_modules/color-convert": { + "node_modules/@types/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/ci-info": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/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, "license": "MIT", "dependencies": { @@ -5971,839 +6898,854 @@ "node": ">=7.0.0" } }, - "node_modules/@vue/cli-service/node_modules/color-name": { + "node_modules/@types/jest/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, "license": "MIT" }, - "node_modules/@vue/cli-service/node_modules/fs-extra": { - "version": "7.0.1", + "node_modules/@types/jest/node_modules/expect": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.5.tgz", + "integrity": "sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@jest/expect-utils": "30.0.5", + "@jest/get-type": "30.0.1", + "jest-matcher-utils": "30.0.5", + "jest-message-util": "30.0.5", + "jest-mock": "30.0.5", + "jest-util": "30.0.5" }, "engines": { - "node": ">=6 <7 || >=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@types/jest/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/@vue/cli-service/node_modules/jsonfile": { + "node_modules/@types/jest/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=8" } }, - "node_modules/@vue/cli-service/node_modules/loader-utils": { - "version": "2.0.2", + "node_modules/@types/jest/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, "license": "MIT", - "optional": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, "engines": { - "node": ">=8.9.0" + "node": ">=0.12.0" } }, - "node_modules/@vue/cli-service/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.5.tgz", + "integrity": "sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@vue/cli-service/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "pretty-format": "30.0.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/ssri": { - "version": "8.0.1", + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz", + "integrity": "sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.1.1" + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "jest-diff": "30.0.5", + "pretty-format": "30.0.5" }, "engines": { - "node": ">= 8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", + "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.5", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.5", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/universalify": { - "version": "0.1.2", + "node_modules/@types/jest/node_modules/jest-mock": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", + "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "30.0.5", + "@types/node": "*", + "jest-util": "30.0.5" + }, "engines": { - "node": ">= 4.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/vue-loader-v16": { - "name": "vue-loader", - "version": "16.8.3", + "node_modules/@types/jest/node_modules/jest-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", + "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" + "@jest/types": "30.0.5", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, - "peerDependencies": { - "webpack": "^4.1.0 || ^5.0.0-0" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-service/node_modules/vue-loader-v16/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@types/jest/node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@vue/cli-service/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/@types/jest/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/@vue/cli-service/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@vue/cli-shared-utils": { - "version": "4.5.13", + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", + "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", "dev": true, "license": "MIT", "dependencies": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@types/jest/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, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@vue/cli-shared-utils/node_modules/semver": { - "version": "6.3.0", + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "license": "MIT" }, - "node_modules/@vue/cli-shared-utils/node_modules/yallist": { - "version": "3.1.1", + "node_modules/@types/jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "ISC" - }, - "node_modules/@vue/compiler-core": { - "version": "3.2.31", "license": "MIT", - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.31", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-core/node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.2.31", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.2.31", - "@vue/shared": "3.2.31" + "node": ">=8" } }, - "node_modules/@vue/compiler-sfc": { - "version": "3.2.31", + "node_modules/@types/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.31", - "@vue/compiler-dom": "3.2.31", - "@vue/compiler-ssr": "3.2.31", - "@vue/reactivity-transform": "3.2.31", - "@vue/shared": "3.2.31", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.2.31", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.2.31", - "@vue/shared": "3.2.31" + "node": ">=8" } }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.3.0", + "node_modules/@types/jest/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, "license": "MIT", "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" + "is-number": "^7.0.0" }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" + "engines": { + "node": ">=8.0" } }, - "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { - "version": "1.0.2", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, - "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { - "version": "4.1.5", + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/jsonfile": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", + "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", "dev": true, - "license": "ISC", "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "@types/node": "*" } }, - "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@vue/component-compiler-utils/node_modules/postcss": { - "version": "7.0.39", + "node_modules/@types/mdast": { + "version": "3.0.3", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "@types/unist": "*" } }, - "node_modules/@vue/component-compiler-utils/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@types/mime": { + "version": "1.3.2", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/@vue/component-compiler-utils/node_modules/yallist": { - "version": "2.1.2", + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, + "node_modules/@types/minimist": { + "version": "1.2.1", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@vue/devtools-api": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz", - "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + "node_modules/@types/mocha": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "dev": true }, - "node_modules/@vue/eslint-config-prettier": { - "version": "6.0.0", + "node_modules/@types/mock-fs": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.1.tgz", + "integrity": "sha512-m6nFAJ3lBSnqbvDZioawRvpLXSaPyn52Srf7OfzjubYbYX8MTUdIgDxQl0wEapm4m/pNYSd9TXocpQ0TvZFlYA==", "dev": true, - "license": "MIT", "dependencies": { - "eslint-config-prettier": "^6.0.0" - }, - "peerDependencies": { - "eslint": ">= 5.0.0", - "eslint-plugin-prettier": "^3.1.0", - "prettier": ">= 1.13.0" + "@types/node": "*" } }, - "node_modules/@vue/eslint-config-standard": { - "version": "5.1.2", + "node_modules/@types/mock-require": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mock-require/-/mock-require-2.0.1.tgz", + "integrity": "sha512-O7U5DVGboY/Crueb5/huUCIRjKtRVRaLmRDbZJBlDQgJn966z3aiFDN+6AtYviu2ExwMkl34LjT/IiC0OPtKuQ==", "dev": true, - "license": "MIT", "dependencies": { - "eslint-config-standard": "^14.1.0", - "eslint-import-resolver-node": "^0.3.3", - "eslint-import-resolver-webpack": "^0.12.1" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0-0", - "eslint": ">=6.2.2", - "eslint-plugin-import": ">= 2.18.0", - "eslint-plugin-node": ">= 9.1.0", - "eslint-plugin-promise": ">= 4.2.1", - "eslint-plugin-standard": ">= 4.0.0", - "eslint-plugin-vue": ">= 6.1.2" - }, - "peerDependenciesMeta": { - "@vue/cli-service": { - "optional": true - } + "@types/node": "*" } }, - "node_modules/@vue/eslint-config-typescript": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "vue-eslint-parser": "^7.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^2.7.0", - "@typescript-eslint/parser": "^2.7.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0", - "eslint-plugin-vue": "^5.2.3 || ^6.0.0 || ^7.0.0-0" - } + "node_modules/@types/ms": { + "version": "0.7.31", + "license": "MIT" }, - "node_modules/@vue/preload-webpack-plugin": { - "version": "1.1.2", + "node_modules/@types/ncp": { + "version": "2.0.5", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "html-webpack-plugin": ">=2.26.0", - "webpack": ">=4.0.0" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.2.31", "license": "MIT", "dependencies": { - "@vue/shared": "3.2.31" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.31", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.31", - "@vue/shared": "3.2.31", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" + "@types/node": "*" } }, - "node_modules/@vue/runtime-core": { - "version": "3.2.31", + "node_modules/@types/node": { + "version": "18.19.111", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.111.tgz", + "integrity": "sha512-90sGdgA+QLJr1F9X79tQuEut0gEYIfkX9pydI4XGRgvFo9g2JWswefI+WUSUHPYVBHYSEfTEqBxA5hQvAZB3Mw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.2.31", - "@vue/shared": "3.2.31" + "undici-types": "~5.26.4" } }, - "node_modules/@vue/runtime-dom": { - "version": "3.2.31", - "license": "MIT", + "node_modules/@types/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "dev": true, "dependencies": { - "@vue/runtime-core": "3.2.31", - "@vue/shared": "3.2.31", - "csstype": "^2.6.8" + "@types/node": "*", + "form-data": "^3.0.0" } }, - "node_modules/@vue/server-renderer": { - "version": "3.2.31", - "license": "MIT", + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.2.31", - "@vue/shared": "3.2.31" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "peerDependencies": { - "vue": "3.2.31" + "engines": { + "node": ">= 6" } }, - "node_modules/@vue/shared": { - "version": "3.2.31", + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "dev": true, "license": "MIT" }, - "node_modules/@vue/web-component-wrapper": { - "version": "1.3.0", + "node_modules/@types/parse-json": { + "version": "4.0.0", "dev": true, "license": "MIT" }, - "node_modules/@vueform/toggle": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@vueform/toggle/-/toggle-2.1.1.tgz", - "integrity": "sha512-5o//0DkYMFSICD1ShT0CZN9RywtwX79FkeYfl0N6Xe/rpTLsqZ6g2b/jRFimU+0CUOiGCcA27hTrzSUx9p3Iiw==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", + "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, - "license": "MIT", + "optional": true, "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@types/node": "*", + "xmlbuilder": ">=11.0.1" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", + "node_modules/@types/q": { + "version": "1.5.5", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", + "node_modules/@types/qs": { + "version": "6.9.7", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", + "node_modules/@types/range-parser": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", + "node_modules/@types/shot": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.1.tgz", + "integrity": "sha512-LUJWxDKYWmmUpVXDWZ78hFIrqb/ho9RoKqBAFRJw4OHOS3qCKCoXCyzrfmf24lbO4COYfqL0iEWNArOfKEYW9g==", "dev": true, - "license": "ISC" + "dependencies": { + "@types/node": "*" + } }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", + "node_modules/@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "@types/sinonjs__fake-timers": "*" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } + "license": "MIT" }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", + "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", "dev": true, - "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@types/cookiejar": "*", + "@types/node": "*" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", + "node_modules/@types/supertest": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", + "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", "dev": true, - "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "@types/superagent": "*" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", + "node_modules/@types/tapable": { + "version": "1.0.8", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", + "node_modules/@types/uglify-js": { + "version": "3.13.1", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "source-map": "^0.6.1" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", + "node_modules/@types/uglify-js/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", + "node_modules/@types/unist": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/webpack": { + "version": "4.41.31", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", + "node_modules/@types/webpack-dev-server": { + "version": "3.11.6", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" } }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", + "node_modules/@types/webpack-env": { + "version": "1.16.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webpack-sources": { + "version": "3.2.0", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", + "node_modules/@types/webpack/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@xtuc/long": { - "version": "4.2.2", + "node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } }, - "node_modules/7zip-bin": { - "version": "5.1.1", + "node_modules/@types/yargs-parser": { + "version": "20.2.0", "dev": true, "license": "MIT" }, - "node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/accept-language": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", - "integrity": "sha512-sUofgqBPzgfcF20sPoBYGQ1IhQLt2LSkxTnlQSuLF3n5gPEqd5AimbvOvHEi0T1kLMiGVqPWzI5a9OteBRth3A==", - "dependencies": { - "bcp47": "^1.1.2", - "stable": "^0.1.6" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "6.4.2", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "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": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/address": { - "version": "1.1.2", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.12.0" + "node": ">= 4" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, - "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/ajv": { - "version": "6.12.6", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "MIT", "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" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "^8.0.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "ajv": "^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "ajv": { + "typescript": { "optional": true } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, - "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "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": { - "ajv": "^6.9.1" + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/alphanum-sort": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/amdefine": { - "version": "1.0.1", + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "BSD-3-Clause OR MIT", "engines": { - "node": ">=0.4.2" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/ansi-align": { - "version": "3.0.0", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "ISC", "dependencies": { - "string-width": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "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/ansi-align/node_modules/emoji-regex": { - "version": "7.0.3", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT" + "engines": { + "node": ">= 8" + } }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "3.1.0", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/ansi-colors": { - "version": "3.2.4", + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dev": true, - "license": "MIT", + "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": ">=6" + "node": ">=8.6.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "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" }, @@ -6811,1491 +7753,1539 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" + "engines": { + "node": ">= 4" } }, - "node_modules/ansi-regex": { - "version": "4.1.0", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.12.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=4" + "node": ">=8.6" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.2", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/app-builder-bin": { - "version": "3.5.13", - "dev": true, - "license": "MIT" - }, - "node_modules/app-builder-lib": { - "version": "22.11.7", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "MIT", "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.0.5", - "@malept/flatpak-bundler": "^0.4.0", - "7zip-bin": "~5.1.1", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.7", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.2", - "ejs": "^3.1.6", - "electron-publish": "22.11.7", - "fs-extra": "^10.0.0", - "hosted-git-info": "^4.0.2", - "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.8", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^3.0.4", - "read-config-file": "6.2.0", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.5", - "temp-file": "^3.4.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" } }, - "node_modules/app-builder-lib/node_modules/argparse": { - "version": "2.0.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "Python-2.0" + "engines": { + "node": ">=8" + } }, - "node_modules/app-builder-lib/node_modules/builder-util-runtime": { - "version": "8.7.7", + "node_modules/@typescript-eslint/typescript-estree/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, - "license": "MIT", "dependencies": { - "debug": "^4.3.2", - "sax": "^1.2.4" + "is-number": "^7.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=8.0" } }, - "node_modules/app-builder-lib/node_modules/ci-info": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/app-builder-lib/node_modules/ejs": { - "version": "3.1.6", + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "jake": "^10.6.1" - }, - "bin": { - "ejs": "bin/cli.js" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": ">=0.10.0" + "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/app-builder-lib/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, + "bin": { + "semver": "bin/semver.js" + }, "engines": { "node": ">=10" } }, - "node_modules/app-builder-lib/node_modules/is-ci": { - "version": "3.0.0", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, - "license": "MIT", "dependencies": { - "ci-info": "^3.1.1" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/app-builder-lib/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/@typescript-eslint/visitor-keys/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, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" } }, - "node_modules/aproba": { - "version": "1.2.0", + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/arch": { - "version": "2.2.0", + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", "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" - } - ], "license": "MIT" }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.5", + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.1", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" } }, - "node_modules/arg": { - "version": "4.1.3", + "node_modules/@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/arr-union": { - "version": "3.1.0", + "node_modules/@vue/babel-preset-app": { + "version": "4.5.15", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.0.0-0" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } } }, - "node_modules/array-find": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/array-ify": { - "version": "1.0.0", + "node_modules/@vue/babel-preset-app/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/array-includes": { - "version": "3.1.4", + "node_modules/@vue/babel-preset-jsx": { + "version": "1.2.4", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-includes/node_modules/es-abstract": { - "version": "1.19.1", + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "@babel/plugin-syntax-jsx": "^7.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-includes/node_modules/is-callable": { + "node_modules/@vue/babel-sugar-composition-api-render-instance": { "version": "1.2.4", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-includes/node_modules/is-regex": { - "version": "1.1.4", + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.2.2", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/plugin-syntax-jsx": "^7.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-includes/node_modules/is-string": { - "version": "1.0.7", + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.2.2", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/plugin-syntax-jsx": "^7.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-union": { - "version": "1.0.2", + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.2.3", "dev": true, "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array-uniq": { - "version": "1.0.3", + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/array-unique": { - "version": "0.3.2", + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.2.3", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "engines": { - "node": ">= 0.4" + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/array.prototype.flat/node_modules/es-abstract": { - "version": "1.19.1", + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/array.prototype.flat/node_modules/is-callable": { - "version": "1.2.4", + "node_modules/@vue/cli-overlay": { + "version": "4.5.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "4.5.15", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.15", + "@vue/cli-shared-utils": "^4.5.15", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, - "node_modules/array.prototype.flat/node_modules/is-regex": { - "version": "1.1.4", + "node_modules/@vue/cli-plugin-babel/node_modules/@vue/cli-shared-utils": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" } }, - "node_modules/array.prototype.flat/node_modules/is-string": { - "version": "1.0.7", + "node_modules/@vue/cli-plugin-babel/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "yallist": "^3.0.2" } }, - "node_modules/arrify": { - "version": "1.0.1", + "node_modules/@vue/cli-plugin-babel/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "node_modules/@vue/cli-plugin-babel/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" }, - "node_modules/asar": { - "version": "3.0.3", + "node_modules/@vue/cli-plugin-eslint": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz", + "integrity": "sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg==", "dev": true, - "license": "MIT", "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" + "@vue/cli-shared-utils": "^5.0.8", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" }, - "optionalDependencies": { - "@types/glob": "^7.1.1" + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": ">=7.5.0" } }, - "node_modules/asar/node_modules/commander": { - "version": "5.1.0", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/asn1": { - "version": "0.2.4", + "node_modules/@vue/cli-plugin-eslint/node_modules/@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", "dev": true, - "license": "MIT", "dependencies": { - "safer-buffer": "~2.1.0" + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" } }, - "node_modules/asn1.js": { - "version": "5.4.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, - "node_modules/assert": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "license": "MIT" }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/astral-regex": { - "version": "1.0.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/async": { - "version": "2.6.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "lodash": "^4.17.14" + "@xtuc/long": "4.2.2" } }, - "node_modules/async-each": { - "version": "1.0.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, - "node_modules/async-exit-hook": { - "version": "2.0.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.12.0" + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/async-foreach": { - "version": "0.1.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, - "engines": { - "node": "*" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/async-limiter": { - "version": "1.0.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } }, - "node_modules/asynckit": { - "version": "0.4.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } }, - "node_modules/at-least-node": { - "version": "1.0.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/atob": { - "version": "2.1.2", + "node_modules/@vue/cli-plugin-eslint/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, - "license": "(MIT OR Apache-2.0)", + "license": "MIT", "bin": { - "atob": "bin/atob.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "engines": { - "node": ">=10.12.0" + "node": ">=0.4.0" } }, - "node_modules/autoprefixer": { - "version": "9.8.6", + "node_modules/@vue/cli-plugin-eslint/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "license": "ISC" + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/autoprefixer/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/aws4": { - "version": "1.11.0", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/@vue/cli-plugin-eslint/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/@vue/cli-plugin-eslint/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, - "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/babel-eslint": { - "version": "10.1.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" + "node": ">=10.13.0" } }, - "node_modules/babel-loader": { - "version": "8.2.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", "dev": true, - "license": "MIT", "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 8.9" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, - "license": "MIT", "dependencies": { - "object.assign": "^4.1.0" + "@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/babel-plugin-polyfill-corejs2": { - "version": "0.2.3", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.4", - "semver": "^6.1.1" + "to-regex-range": "^5.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "license": "BSD-2-Clause" }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.3.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.4", - "core-js-compat": "^3.18.0" + "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" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.3", + "node_modules/@vue/cli-plugin-eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/bail": { - "version": "1.0.5", + "node_modules/@vue/cli-plugin-eslint/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 4" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base": { - "version": "0.11.2", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { + "node_modules/@vue/cli-plugin-eslint/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6.11.5" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "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" - } - ], - "license": "MIT" - }, - "node_modules/batch": { - "version": "0.6.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT" - }, - "node_modules/bcp47": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", - "integrity": "sha512-JnkkL4GUpOvvanH9AZPX38CxhiLsXMBicBY2IAtqiVN8YulGDQybUydWA4W6yAMtw6iShtw+8HEF6cfrTHU+UQ==", "engines": { - "node": ">=0.10" + "node": ">=6" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", + "node_modules/@vue/cli-plugin-eslint/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "tweetnacl": "^0.14.3" + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bfj": { - "version": "6.1.2", + "node_modules/@vue/cli-plugin-eslint/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/big.js": { - "version": "5.2.2", + "node_modules/@vue/cli-plugin-eslint/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, - "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "node_modules/@vue/cli-plugin-eslint/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "license": "MIT" - }, - "node_modules/bluebird-lst": { - "version": "1.0.9", + "node_modules/@vue/cli-plugin-eslint/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { - "bluebird": "^3.5.5" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "node_modules/bn.js": { - "version": "5.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "node_modules/@vue/cli-plugin-eslint/node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@vue/cli-plugin-eslint/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ms": "2.0.0" + "randombytes": "^2.1.0" } }, - "node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/@vue/cli-plugin-eslint/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": ">= 0.8" + "node": ">=8" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/@vue/cli-plugin-eslint/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": { - "side-channel": "^1.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/bonjour": { - "version": "3.5.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "dev": true, "license": "MIT", - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "engines": { + "node": ">=6" } }, - "node_modules/bonjour/node_modules/array-flatten": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/boolean": { - "version": "3.1.4", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/boxen": { - "version": "5.0.1", + "node_modules/@vue/cli-plugin-eslint/node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 10.13.0" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@vue/cli-plugin-eslint/node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-number": "^7.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.0" } }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@vue/cli-plugin-eslint/node_modules/webpack": { + "version": "5.99.9", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", + "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/@vue/cli-plugin-eslint/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, - "license": "MIT", - "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/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=10.13.0" } }, - "node_modules/braces": { - "version": "2.3.2", + "node_modules/@vue/cli-plugin-router": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "@vue/cli-shared-utils": "^4.5.15" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/@vue/cli-plugin-router/node_modules/@vue/cli-shared-utils": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" } }, - "node_modules/brorand": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", + "node_modules/@vue/cli-plugin-router/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "yallist": "^3.0.2" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", + "node_modules/@vue/cli-plugin-router/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/browserify-des": { - "version": "1.0.2", + "node_modules/@vue/cli-plugin-router/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/@vue/cli-plugin-typescript": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^4.5.15", + "cache-loader": "^4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "globby": "^9.2.0", + "thread-loader": "^2.1.3", + "ts-loader": "^6.2.2", + "tslint": "^5.20.1", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "optionalDependencies": { + "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0", + "@vue/compiler-sfc": "^3.0.0-beta.14", + "typescript": ">=2" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } } }, - "node_modules/browserify-rsa": { - "version": "4.1.0", + "node_modules/@vue/cli-plugin-typescript/node_modules/@vue/cli-shared-utils": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" } }, - "node_modules/browserify-sign": { - "version": "4.2.1", + "node_modules/@vue/cli-plugin-typescript/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, "license": "ISC", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "yallist": "^3.0.2" } }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/@vue/cli-plugin-typescript/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", + "node_modules/@vue/cli-plugin-typescript/node_modules/yallist": { + "version": "3.1.1", "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" - } - ], - "license": "MIT" + "license": "ISC" }, - "node_modules/browserify-zlib": { - "version": "0.2.0", + "node_modules/@vue/cli-plugin-vuex": { + "version": "4.5.15", "dev": true, "license": "MIT", - "dependencies": { - "pako": "~1.0.5" + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, - "node_modules/browserslist": { - "version": "4.16.6", + "node_modules/@vue/cli-service": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.15", + "@vue/cli-plugin-router": "^4.5.15", + "@vue/cli-plugin-vuex": "^4.5.15", + "@vue/cli-shared-utils": "^4.5.15", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" }, "bin": { - "browserslist": "cli.js" + "vue-cli-service": "bin/vue-cli-service.js" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=8" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "optionalDependencies": { + "vue-loader-v16": "npm:vue-loader@^16.1.0" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.0.0-beta.14", + "vue-template-compiler": "^2.0.0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/buffer": { - "version": "4.9.2", + "node_modules/@vue/cli-service/node_modules/@vue/cli-shared-utils": { + "version": "4.5.15", "dev": true, "license": "MIT", "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "dev": true, - "license": "MIT", - "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" + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-json": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/builder-util": { - "version": "22.11.7", + "node_modules/@vue/cli-service/node_modules/acorn": { + "version": "7.4.1", "dev": true, "license": "MIT", - "dependencies": { - "@types/debug": "^4.1.5", - "@types/fs-extra": "^9.0.11", - "7zip-bin": "~5.1.1", - "app-builder-bin": "3.5.13", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.7.7", - "chalk": "^4.1.1", - "debug": "^4.3.2", - "fs-extra": "^10.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": "8.9.2", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", - "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", - "dependencies": { - "debug": "^4.3.2", - "sax": "^1.2.4" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=12.0.0" + "node": ">=0.4.0" } }, - "node_modules/builder-util/node_modules/ansi-styles": { + "node_modules/@vue/cli-service/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "license": "MIT", @@ -8309,1876 +9299,1938 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/builder-util/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/builder-util/node_modules/builder-util-runtime": { - "version": "8.7.7", + "node_modules/@vue/cli-service/node_modules/cliui": { + "version": "6.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "debug": "^4.3.2", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/builder-util/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@vue/cli-service/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=7.0.0" } }, - "node_modules/builder-util/node_modules/ci-info": { - "version": "3.2.0", + "node_modules/@vue/cli-service/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/builder-util/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@vue/cli-service/node_modules/fs-extra": { + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/builder-util/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/builder-util/node_modules/has-flag": { + "node_modules/@vue/cli-service/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=8" } }, - "node_modules/builder-util/node_modules/is-ci": { - "version": "3.0.0", + "node_modules/@vue/cli-service/node_modules/jsonfile": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "ci-info": "^3.1.1" - }, - "bin": { - "is-ci": "bin.js" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/builder-util/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/@vue/cli-service/node_modules/loader-utils": { + "version": "2.0.2", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "argparse": "^2.0.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8.9.0" } }, - "node_modules/builder-util/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@vue/cli-service/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "yallist": "^3.0.2" } }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", + "node_modules/@vue/cli-service/node_modules/semver": { + "version": "6.3.0", "dev": true, "license": "ISC", - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@vue/cli-service/node_modules/ssri": { + "version": "8.0.1", "dev": true, "license": "ISC", "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" + "minipass": "^3.1.1" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 8" } }, - "node_modules/cacache/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/cache-base": { - "version": "1.0.1", + "node_modules/@vue/cli-service/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/cache-loader": { - "version": "4.1.0", + "node_modules/@vue/cli-service/node_modules/universalify": { + "version": "0.1.2", "dev": true, "license": "MIT", - "dependencies": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" - }, "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" + "node": ">= 4.0.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", + "node_modules/@vue/cli-service/node_modules/vue-loader-v16": { + "name": "vue-loader", + "version": "16.8.3", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", + "node_modules/@vue/cli-service/node_modules/vue-loader-v16/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "pump": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", + "node_modules/@vue/cli-service/node_modules/wrap-ansi": { + "version": "6.2.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/normalize-url": { - "version": "4.5.1", + "node_modules/@vue/cli-service/node_modules/yallist": { + "version": "3.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "node_modules/@vue/cli-shared-utils": { + "version": "4.5.13", "dev": true, + "license": "MIT", "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", + "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "yallist": "^3.0.2" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", + "node_modules/@vue/cli-shared-utils/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/caller-callsite": { - "version": "2.0.0", + "node_modules/@vue/cli-shared-utils/node_modules/yallist": { + "version": "3.1.1", "dev": true, + "license": "ISC" + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.31", "license": "MIT", "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" } }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/@vue/compiler-core/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/caller-path": { - "version": "2.0.0", - "dev": true, + "node_modules/@vue/compiler-dom": { + "version": "3.2.31", "license": "MIT", "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31" } }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.31", "license": "MIT", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-ssr": "3.2.31", + "@vue/reactivity-transform": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/camel-case": { - "version": "3.0.0", - "dev": true, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.31", "license": "MIT", "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "@vue/compiler-dom": "3.2.31", + "@vue/shared": "3.2.31" } }, - "node_modules/camelcase": { - "version": "6.2.0", + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/@vue/component-compiler-utils/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/caniuse-api": { - "version": "3.0.0", + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } + "license": "ISC" }, - "node_modules/caniuse-lite": { - "version": "1.0.30001409", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz", - "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] + "node_modules/@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "node_modules/@vue/eslint-config-prettier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==", + "dev": true, "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + }, + "peerDependencies": { + "eslint": ">= 7.28.0", + "prettier": ">= 2.0.0" } }, - "node_modules/capital-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "node_modules/@vue/eslint-config-prettier/node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, "dependencies": { - "tslib": "^2.0.3" + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/capital-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/@vue/eslint-config-standard": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-8.0.1.tgz", + "integrity": "sha512-+FsTb8kOf2GSbXXTwbigRBRRur/byMbwL6Ijii2JoXW4hsLB4arl9lbgV54OUOV5o20INLHDmBVONO16rP/a1g==", + "dev": true, "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "eslint-config-standard": "^17.0.0", + "eslint-import-resolver-custom-alias": "^1.3.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.4", + "eslint-plugin-promise": "^6.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-vue": "^9.2.0" } }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", + "node_modules/@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", "dev": true, - "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + }, "engines": { - "node": ">=4" + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/caseless": { - "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/chalk": { - "version": "2.4.2", + "node_modules/@vue/preload-webpack-plugin": { + "version": "1.1.2", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=6.0.0" + }, + "peerDependencies": { + "html-webpack-plugin": ">=2.26.0", + "webpack": ">=4.0.0" } }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "node_modules/@vue/reactivity": { + "version": "3.2.31", + "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" + "@vue/shared": "3.2.31" } }, - "node_modules/change-case/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "node_modules/@vue/reactivity-transform": { + "version": "3.2.31", + "license": "MIT", "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" } }, - "node_modules/change-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "node_modules/@vue/runtime-core": { + "version": "3.2.31", + "license": "MIT", "dependencies": { - "tslib": "^2.0.3" + "@vue/reactivity": "3.2.31", + "@vue/shared": "3.2.31" } }, - "node_modules/change-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/@vue/runtime-dom": { + "version": "3.2.31", + "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "@vue/runtime-core": "3.2.31", + "@vue/shared": "3.2.31", + "csstype": "^2.6.8" } }, - "node_modules/change-case/node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "node_modules/@vue/server-renderer": { + "version": "3.2.31", + "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "@vue/compiler-ssr": "3.2.31", + "@vue/shared": "3.2.31" + }, + "peerDependencies": { + "vue": "3.2.31" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/@vue/shared": { + "version": "3.2.31", + "license": "MIT" }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", + "node_modules/@vue/test-utils": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz", + "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^2.0.0" } }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@vueform/toggle": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vueform/toggle/-/toggle-2.1.1.tgz", + "integrity": "sha512-5o//0DkYMFSICD1ShT0CZN9RywtwX79FkeYfl0N6Xe/rpTLsqZ6g2b/jRFimU+0CUOiGCcA27hTrzSUx9p3Iiw==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/chardet": { - "version": "0.7.0", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", "dev": true, "license": "MIT" }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "engines": { - "node": "*" + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/check-types": { - "version": "8.0.3", + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "dev": true, + "license": "MIT", "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" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@xtuc/long": "4.2.2" } }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.12.0" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/chownr": { - "version": "1.1.4", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", "dev": true, "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.9.tgz", + "integrity": "sha512-4VSbbcMoxc4KLjb1gs96SRmi7w4h1SF+fCoiK0XaQX62buCc1G5d0DC5bJ9xJBNPDSVCmIrcl8BiYxzjrqaaJA==", + "dev": true, + "optional": true, "engines": { - "node": ">=6.0" + "node": ">=10.0.0" } }, - "node_modules/chromium-pickle-js": { - "version": "0.2.0", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause" }, - "node_modules/ci-info": { - "version": "1.6.0", + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/7zip-bin": { + "version": "5.1.1", "dev": true, "license": "MIT" }, - "node_modules/cipher-base": { - "version": "1.0.4", + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/accept-language": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", + "integrity": "sha512-sUofgqBPzgfcF20sPoBYGQ1IhQLt2LSkxTnlQSuLF3n5gPEqd5AimbvOvHEi0T1kLMiGVqPWzI5a9OteBRth3A==", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "bcp47": "^1.1.2", + "stable": "^0.1.6" } }, - "node_modules/class-utils": { - "version": "0.3.6", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, - "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", + "node_modules/acorn": { + "version": "6.4.2", "dev": true, "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/cldrjs": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", - "integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA==" - }, - "node_modules/clean-css": { - "version": "4.2.4", + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "license": "MIT", "dependencies": { - "source-map": "~0.6.0" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 4.0" + "node": ">=0.4.0" } }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/acorn-walk": { + "version": "7.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.4.0" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", + "node_modules/address": { + "version": "1.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.12.0" } }, - "node_modules/cli-cursor": { - "version": "2.1.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, "license": "MIT", "dependencies": { - "restore-cursor": "^2.0.0" + "debug": "4" }, "engines": { - "node": ">=4" + "node": ">= 6.0.0" } }, - "node_modules/cli-highlight": { - "version": "2.1.11", + "node_modules/aggregate-error": { + "version": "3.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "bin": { - "highlight": "bin/highlight" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" + "node": ">=8" } }, - "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/ajv": { + "version": "6.12.6", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "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": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/cli-highlight/node_modules/chalk": { - "version": "4.1.2", + "node_modules/ajv-errors": { + "version": "1.0.1", "dev": true, "license": "MIT", + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/cli-highlight/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/cli-highlight/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/cli-highlight/node_modules/color-name": { - "version": "1.1.4", + "node_modules/alphanum-sort": { + "version": "1.0.2", "dev": true, "license": "MIT" }, - "node_modules/cli-highlight/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/amdefine": { + "version": "1.0.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause OR MIT", "engines": { - "node": ">=8" + "node": ">=0.4.2" } }, - "node_modules/cli-highlight/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/ansi-align": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "string-width": "^3.0.0" } }, - "node_modules/cli-highlight/node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "7.0.3", "dev": true, - "license": "MIT", - "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" - } + "license": "MIT" }, - "node_modules/cli-highlight/node_modules/y18n": { - "version": "5.0.8", + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/cli-highlight/node_modules/yargs": { - "version": "16.2.0", + "node_modules/ansi-align/node_modules/string-width": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/cli-highlight/node_modules/yargs-parser": { - "version": "20.2.9", + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/cli-spinners": { - "version": "2.6.0", + "node_modules/ansi-colors": { + "version": "3.2.4", "dev": true, "license": "MIT", "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", + "node_modules/ansi-escapes": { + "version": "4.3.2", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "6.1.0", + "node_modules/ansi-html-community": { + "version": "0.0.8", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", + "node_modules/ansi-regex": { + "version": "4.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "5.0.0", + "node_modules/ansi-styles": { + "version": "3.2.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=4" } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.0.1", + "node_modules/any-promise": { + "version": "1.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^9.2.2", - "is-fullwidth-code-point": "^4.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", + "node_modules/anymatch": { + "version": "3.1.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-regex": "^6.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 8" } }, - "node_modules/cli-width": { - "version": "3.0.0", + "node_modules/app-builder-bin": { + "version": "3.5.13", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/clipboardy": { - "version": "2.3.0", + "node_modules/app-builder-lib": { + "version": "22.11.7", "dev": true, "license": "MIT", "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-publish": "22.11.7", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.0.4", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/clipboardy/node_modules/is-wsl": { - "version": "2.2.0", + "node_modules/app-builder-lib/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/app-builder-lib/node_modules/builder-util-runtime": { + "version": "8.7.7", "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "debug": "^4.3.2", + "sax": "^1.2.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "node": ">=12.0.0" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "7.0.3", + "node_modules/app-builder-lib/node_modules/ci-info": { + "version": "3.2.0", "dev": true, "license": "MIT" }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/app-builder-lib/node_modules/ejs": { + "version": "3.1.6", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.6.1" + }, + "bin": { + "ejs": "bin/cli.js" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.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, - "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/app-builder-lib/node_modules/hosted-git-info": { + "version": "4.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-regex": "^4.1.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/clone": { - "version": "1.0.4", + "node_modules/app-builder-lib/node_modules/is-ci": { + "version": "3.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/clone-regexp": { - "version": "2.2.0", + "node_modules/app-builder-lib/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-regexp": "^2.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/clone-regexp/node_modules/is-regexp": { - "version": "2.1.0", + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, - "license": "MIT", + "dependencies": { + "default-require-extensions": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/clone-response": { - "version": "1.0.2", + "node_modules/aproba": { + "version": "1.2.0", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/arch": { + "version": "2.2.0", + "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" + } + ], + "license": "MIT" + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "dev": true, + "license": "ISC", "dependencies": { - "mimic-response": "^1.0.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "node_modules/coa": { - "version": "2.0.2", + "node_modules/arg": { + "version": "4.1.3", "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", "license": "MIT", "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/code-point-at": { - "version": "1.1.0", + "node_modules/arr-diff": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/collection-visit": { - "version": "1.0.0", + "node_modules/arr-flatten": { + "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/color": { - "version": "3.2.1", + "node_modules/arr-union": { + "version": "3.1.0", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-name": { - "version": "1.1.3", + "node_modules/array-flatten": { + "version": "1.1.1", "dev": true, "license": "MIT" }, - "node_modules/color-string": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colorette": { - "version": "1.2.2", + "node_modules/array-ify": { + "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, "engines": { - "node": ">=0.1.90" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/combined-stream": { - "version": "1.0.8", + "node_modules/array-union": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "array-uniq": "^1.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/commander": { - "version": "2.20.3", - "dev": true, - "license": "MIT" - }, - "node_modules/commitlint": { - "version": "15.0.0", + "node_modules/array-uniq": { + "version": "1.0.3", "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/cli": "^15.0.0", - "@commitlint/types": "^15.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, "engines": { - "node": ">=v12" + "node": ">=0.10.0" } }, - "node_modules/commitlint/node_modules/@commitlint/cli": { - "version": "15.0.0", + "node_modules/array-unique": { + "version": "0.3.2", "dev": true, "license": "MIT", - "dependencies": { - "@commitlint/format": "^15.0.0", - "@commitlint/lint": "^15.0.0", - "@commitlint/load": "^15.0.0", - "@commitlint/read": "^15.0.0", - "@commitlint/types": "^15.0.0", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, "engines": { - "node": ">=v12" + "node": ">=0.10.0" } }, - "node_modules/commitlint/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/commitlint/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/commitlint/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/commitlint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/commitlint/node_modules/resolve-from": { - "version": "5.0.0", + "node_modules/arrify": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/commitlint/node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/asar": { + "version": "3.0.3", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "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" + "node": ">=10.12.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "optionalDependencies": { + "@types/glob": "^7.1.1" } }, - "node_modules/commitlint/node_modules/y18n": { - "version": "5.0.8", + "node_modules/asar/node_modules/commander": { + "version": "5.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/commitlint/node_modules/yargs": { - "version": "17.2.1", + "node_modules/asn1": { + "version": "0.2.4", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" + "safer-buffer": "~2.1.0" } }, - "node_modules/commitlint/node_modules/yargs-parser": { - "version": "20.2.9", + "node_modules/asn1.js": { + "version": "5.4.1", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/commondir": { - "version": "1.0.1", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", "dev": true, "license": "MIT" }, - "node_modules/compare-func": { - "version": "2.0.0", + "node_modules/assert": { + "version": "1.5.0", "dev": true, "license": "MIT", "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "object-assign": "^4.1.1", + "util": "0.10.3" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", + "node_modules/assert-plus": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, "engines": { - "node": ">= 0.6" + "node": ">=0.8" } }, - "node_modules/compression": { - "version": "1.7.4", + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "inherits": "2.0.1" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", + "node_modules/assign-symbols": { + "version": "1.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.3", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "lodash": "^4.17.14" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", + "node_modules/async-each": { + "version": "1.0.3", "dev": true, "license": "MIT" }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", + "node_modules/async-exit-hook": { + "version": "2.0.1", "dev": true, - "engines": [ - "node >= 0.8" - ], "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - }, + "node_modules/async-foreach": { + "version": "0.1.3", + "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/conf/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "node_modules/async-limiter": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/conf/node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dependencies": { - "is-obj": "^2.0.0" + "node_modules/atob": { + "version": "2.1.2", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4.5.0" } }, - "node_modules/conf/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/conf/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", "engines": { - "node": ">=6" + "node": ">=10.12.0" } }, - "node_modules/conf/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/autoprefixer": { + "version": "9.8.6", + "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" }, - "engines": { - "node": ">=6" + "bin": { + "autoprefixer": "bin/autoprefixer" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "node_modules/config-chain": { - "version": "1.1.13", + "node_modules/autoprefixer/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } + "license": "ISC" }, - "node_modules/configstore": { - "version": "5.0.1", + "node_modules/autoprefixer/node_modules/postcss": { + "version": "7.0.39", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", + "node_modules/autoprefixer/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=0.8" + "node": ">=0.10.0" } }, - "node_modules/console-browserify": { - "version": "1.2.0", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true, - "license": "ISC" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/consolidate": { - "version": "0.15.1", + "node_modules/aws-sign2": { + "version": "0.7.0", "dev": true, - "license": "MIT", - "dependencies": { - "bluebird": "^3.1.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.10.0" + "node": "*" } }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "node_modules/aws4": { + "version": "1.11.0", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "dev": true, + "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, - "node_modules/constant-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/constant-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/constant-case/node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.0.3" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/constants-browserify": { - "version": "1.0.0", + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", "dev": true, "license": "MIT" }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.8.0" } }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", + "node_modules/babel-eslint": { + "version": "10.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" }, "engines": { - "node": ">=10" + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" } }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.1", + "node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.3", + "node_modules/babel-jest/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, "license": "MIT", "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/conventional-commits-parser/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/through2": { - "version": "4.0.2", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/convert-source-map": { - "version": "1.7.0", + "node_modules/babel-jest/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, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 0.6" + "node": ">=7.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", + "node_modules/babel-jest/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, "license": "MIT" }, - "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", - "dev": true - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/babel-jest/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "glob": "^7.1.3" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", "bin": { - "rimraf": "bin.js" + "semver": "bin/semver.js" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.2", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">=8" } }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", + "node_modules/babel-loader": { + "version": "8.2.3", "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" + "node": ">= 8.9" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "3.1.0", + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "object.assign": "^4.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", "dev": true, - "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "7.1.1", + "node_modules/babel-plugin-istanbul/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, - "license": "MIT", "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { - "version": "3.0.0", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "3.3.10", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", + "node_modules/babel-plugin-istanbul/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, - "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "node_modules/babel-plugin-istanbul/node_modules/p-locate": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -10186,1384 +11238,1395 @@ "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "node_modules/babel-plugin-istanbul/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "node_modules/babel-plugin-istanbul/node_modules/read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/babel-plugin-istanbul/node_modules/read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, - "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" }, "engines": { - "node": ">= 4" + "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/semver": { - "version": "5.7.1", + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "1.0.0", + "node_modules/babel-plugin-istanbul/node_modules/test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, - "license": "MIT", + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.19.1", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node": ">=6" } }, - "node_modules/core-js-compat": { - "version": "3.19.1", + "node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.17.6", - "semver": "7.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/core-js-compat/node_modules/browserslist": { - "version": "4.17.6", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.2.3", "dev": true, "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.4", + "semver": "^6.1.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/core-js-compat/node_modules/electron-to-chromium": { - "version": "1.3.894", - "dev": true, - "license": "ISC" - }, - "node_modules/core-js-compat/node_modules/node-releases": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "6.0.0", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.3.0", "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "@babel/helper-define-polyfill-provider": "^0.2.4", + "core-js-compat": "^3.18.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/cosmiconfig/node_modules/path-type": { - "version": "4.0.0", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.2.3", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.2.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/create-ecdh": { - "version": "4.0.4", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/create-hash": { - "version": "1.2.0", + "node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", "dev": true, "license": "MIT", "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/create-hmac": { - "version": "1.1.7", + "node_modules/bail": { + "version": "1.0.5", "dev": true, "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/create-require": { - "version": "1.1.1", - "dev": true, + "node_modules/balanced-match": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/cross-spawn": { - "version": "6.0.5", + "node_modules/base": { + "version": "0.11.2", "dev": true, "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "engines": { - "node": ">=4.8" - } - }, - "node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "is-descriptor": "^1.0.0" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", "dev": true, "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/css-color-names": { - "version": "0.0.4", + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", "dev": true, "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/css-declaration-sorter": { - "version": "4.0.1", + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "engines": { - "node": ">4" + "node": ">=0.10.0" } }, - "node_modules/css-declaration-sorter/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/base64-js": { + "version": "1.5.1", "dev": true, - "license": "ISC" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/css-declaration-sorter/node_modules/postcss": { - "version": "7.0.39", + "node_modules/batch": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, + "license": "MIT" + }, + "node_modules/bcp47": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", + "integrity": "sha512-JnkkL4GUpOvvanH9AZPX38CxhiLsXMBicBY2IAtqiVN8YulGDQybUydWA4W6yAMtw6iShtw+8HEF6cfrTHU+UQ==", "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=0.10" } }, - "node_modules/css-declaration-sorter/node_modules/source-map": { - "version": "0.6.1", + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", "dev": true, "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "tweetnacl": "^0.14.3" } }, - "node_modules/css-loader": { - "version": "3.6.0", + "node_modules/bfj": { + "version": "6.1.2", "dev": true, "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" }, "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">= 6.0.0" } }, - "node_modules/css-loader/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/big.js": { + "version": "5.2.2", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/css-loader/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/css-loader/node_modules/postcss": { - "version": "7.0.39", + "node_modules/binary-extensions": { + "version": "2.2.0", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/css-loader/node_modules/semver": { - "version": "6.3.0", + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" } }, - "node_modules/css-loader/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, - "node_modules/css-select": { - "version": "2.1.0", + "node_modules/bluebird": { + "version": "3.7.2", + "license": "MIT" + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "bluebird": "^3.5.5" } }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", + "node_modules/bn.js": { + "version": "5.2.0", "dev": true, "license": "MIT" }, - "node_modules/css-tree": { - "version": "1.0.0-alpha.37", + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, - "license": "MIT", "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/css-what": { - "version": "3.4.2", + "node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "node": ">= 0.8" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, - "node_modules/cssnano": { - "version": "4.1.11", + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "MIT", "dependencies": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cssnano-preset-default": { - "version": "4.0.8", + "node_modules/bonjour": { + "version": "3.5.0", "dev": true, "license": "MIT", "dependencies": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - }, - "engines": { - "node": ">=6.9.0" + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" } }, - "node_modules/cssnano-preset-default/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/bonjour/node_modules/array-flatten": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", "dev": true, "license": "ISC" }, - "node_modules/cssnano-preset-default/node_modules/postcss": { - "version": "7.0.39", + "node_modules/boolean": { + "version": "3.1.4", + "license": "MIT", + "optional": true + }, + "node_modules/boxen": { + "version": "5.0.1", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/cssnano-preset-default/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssnano-util-get-arguments": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/cssnano-util-get-match": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-util-raw-cache": { - "version": "4.0.1", + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cssnano-util-raw-cache/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/cssnano-util-raw-cache/node_modules/postcss": { - "version": "7.0.39", + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cssnano-util-raw-cache/node_modules/source-map": { - "version": "0.6.1", + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/cssnano-util-same-parent": { - "version": "4.0.1", + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } + "license": "MIT" }, - "node_modules/cssnano/node_modules/cosmiconfig": { - "version": "5.2.1", + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cssnano/node_modules/import-fresh": { - "version": "2.0.0", + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cssnano/node_modules/parse-json": { - "version": "4.0.0", + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/cssnano/node_modules/postcss": { - "version": "7.0.39", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/cssnano/node_modules/resolve-from": { - "version": "3.0.0", - "dev": true, + "node_modules/brace-expansion": { + "version": "1.1.11", "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/csso": { - "version": "4.2.0", + "node_modules/braces": { + "version": "2.3.2", "dev": true, "license": "MIT", "dependencies": { - "css-tree": "^1.1.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "1.1.3", + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "is-extendable": "^0.1.0" }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.14", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/csstype": { - "version": "2.6.20", + "node_modules/brorand": { + "version": "1.1.0", + "dev": true, "license": "MIT" }, - "node_modules/cyclist": { - "version": "1.0.1", + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause" }, - "node_modules/dargs": { - "version": "7.0.0", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/dashdash": { - "version": "1.14.1", + "node_modules/browserify-cipher": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "node_modules/debounce": { - "version": "1.2.1", - "license": "MIT" - }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "node_modules/browserify-des": { + "version": "1.0.2", + "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debounce-fn/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "engines": { - "node": ">=8" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/browserify-rsa": { + "version": "4.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" } }, - "node_modules/decamelize": { - "version": "1.2.0", + "node_modules/browserify-sign": { + "version": "4.2.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, - "node_modules/decamelize-keys": { - "version": "1.1.0", + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/decode-uri-component": { + "node_modules/browserify-zlib": { "version": "0.2.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10" + "dependencies": { + "pako": "~1.0.5" } }, - "node_modules/decompress-response": { - "version": "3.3.0", + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "mimic-response": "^1.0.0" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=4" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/deep-equal": { - "version": "1.1.1", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "license": "MIT", "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "fast-json-stable-stringify": "2.x" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 6" } }, - "node_modules/deep-extend": { - "version": "0.6.0", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/deep-is": { - "version": "0.1.3", + "node_modules/buffer": { + "version": "4.9.2", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } }, - "node_modules/deepmerge": { - "version": "4.2.2", + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", "dev": true, + "license": "MIT/X11" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/default-gateway": { - "version": "5.0.5", + "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, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^3.3.0" - }, "engines": { - "node": "^8.12.0 || >=9.7.0" + "node": ">=0.4.0" } }, - "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/buffer-from": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-json": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/builder-util": { + "version": "22.11.7", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.5.13", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "debug": "^4.3.2", + "fs-extra": "^10.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/default-gateway/node_modules/execa": { - "version": "3.4.0", - "dev": true, - "license": "MIT", + "node_modules/builder-util-runtime": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", + "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "debug": "^4.3.2", + "sax": "^1.2.4" }, "engines": { - "node": "^8.12.0 || >=9.7.0" + "node": ">=12.0.0" } }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "5.2.0", + "node_modules/builder-util/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/default-gateway/node_modules/is-stream": { + "node_modules/builder-util/node_modules/argparse": { "version": "2.0.1", "dev": true, + "license": "Python-2.0" + }, + "node_modules/builder-util/node_modules/builder-util-runtime": { + "version": "8.7.7", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12.0.0" } }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/builder-util/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/builder-util/node_modules/ci-info": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/builder-util/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "5.1.2", + "node_modules/builder-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/default-gateway/node_modules/p-finally": { - "version": "2.0.1", + "node_modules/builder-util/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "3.1.1", + "node_modules/builder-util/node_modules/is-ci": { + "version": "3.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/default-gateway/node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/builder-util/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/default-gateway/node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/builder-util/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/default-gateway/node_modules/which": { - "version": "2.0.2", + "node_modules/builtin-modules": { + "version": "1.1.1", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/default-require-extensions": { + "node_modules/builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "dependencies": { - "strip-bom": "^4.0.0" - }, + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/default-require-extensions/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "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, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/defaults": { - "version": "1.0.3", + "node_modules/cacache": { + "version": "12.0.4", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "clone": "^1.0.2" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", + "node_modules/cacache/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/define-properties": { - "version": "1.1.3", + "node_modules/cacache/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 0.4" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/define-property": { - "version": "2.0.2", + "node_modules/cacache/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/cache-base": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", + "node_modules/cache-loader": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, + "node_modules/cacheable-request": { + "version": "6.1.0", "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "pump": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/del": { - "version": "4.1.1", - "dev": true, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "dev": true, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", "license": "MIT", - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, - "license": "MIT", + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/del/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.2", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } }, - "node_modules/delegates": { - "version": "1.0.0", + "node_modules/call-me-maybe": { + "version": "1.0.1", "dev": true, "license": "MIT" }, - "node_modules/depd": { - "version": "1.1.2", + "node_modules/caller-callsite": { + "version": "2.0.0", "dev": true, "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/des.js": { - "version": "1.0.1", + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=4" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", + "node_modules/caller-path": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/diff": { - "version": "4.0.2", + "node_modules/callsites": { + "version": "3.1.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">=6" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", + "node_modules/camel-case": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dir-glob": { - "version": "2.2.2", + "node_modules/camelcase": { + "version": "6.2.0", "dev": true, "license": "MIT", - "dependencies": { - "path-type": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dmg-builder": { - "version": "22.11.7", + "node_modules/camelcase-keys": { + "version": "6.2.2", "dev": true, "license": "MIT", "dependencies": { - "app-builder-lib": "22.11.7", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.6", - "fs-extra": "^10.0.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" }, - "optionalDependencies": { - "dmg-license": "^1.0.9" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dmg-builder/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/dmg-builder/node_modules/builder-util-runtime": { - "version": "8.7.6", + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.2", - "sax": "^1.2.4" - }, "engines": { - "node": ">=12.0.0" + "node": ">=6" } }, - "node_modules/dmg-builder/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/caniuse-api": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dmg-builder/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/dns-equal": { - "version": "1.0.0", + "node_modules/caniuse-lite": { + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/dns-packet": { - "version": "1.3.4", - "dev": true, - "license": "MIT", + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "node_modules/dns-txt": { + "node_modules/capital-case/node_modules/lower-case": { "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "tslib": "^2.0.3" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "dev": true, - "license": "MIT", + "node_modules/capital-case/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dependencies": { - "utila": "~0.4" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domain-browser": { - "version": "1.2.0", + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4", - "npm": ">=1.2" + "node": ">=4" } }, - "node_modules/domelementtype": { - "version": "1.3.1", + "node_modules/caseless": { + "version": "0.12.0", "dev": true, - "license": "BSD-2-Clause" + "license": "Apache-2.0" }, - "node_modules/domhandler": { + "node_modules/chalk": { "version": "2.4.2", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "domelementtype": "1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/domutils": { - "version": "1.7.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/change-case/node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dependencies": { - "no-case": "^3.0.4", + "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/lower-case": { + "node_modules/change-case/node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", @@ -11571,7 +12634,7 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/no-case": { + "node_modules/change-case/node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", @@ -11580,136 +12643,272 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-prop": { - "version": "5.3.0", + "node_modules/change-case/node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, + "node_modules/check-types": { + "version": "8.0.3", + "dev": true, + "license": "MIT" + }, + "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/braces": { + "version": "3.0.2", "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/dotenv": { - "version": "8.6.0", + "node_modules/chokidar/node_modules/fill-range": { + "version": "7.0.1", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/dotenv-expand": { - "version": "5.1.0", + "node_modules/chokidar/node_modules/is-number": { + "version": "7.0.0", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/duplexer": { - "version": "0.1.2", + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "license": "ISC" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", "dev": true, "license": "MIT" }, - "node_modules/duplexer3": { - "version": "0.1.4", + "node_modules/ci-info": { + "version": "1.6.0", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT" }, - "node_modules/duplexify": { - "version": "3.7.1", + "node_modules/cipher-base": { + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "end-of-stream": "^1.0.0", "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "safe-buffer": "^5.0.1" } }, - "node_modules/easy-stack": { - "version": "1.0.1", + "node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-utils": { + "version": "0.3.6", "dev": true, "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", "dev": true, "license": "MIT", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "node_modules/cldrjs": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", + "integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA==" }, - "node_modules/ejs": { - "version": "2.7.4", + "node_modules/clean-css": { + "version": "4.2.4", "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/electron": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.5.tgz", - "integrity": "sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==", + "node_modules/clean-stack": { + "version": "2.2.0", "dev": true, - "hasInstallScript": true, - "dependencies": { - "@electron/get": "^1.13.0", - "@types/node": "^14.6.2", - "extract-zip": "^1.0.3" - }, - "bin": { - "electron": "cli.js" - }, + "license": "MIT", "engines": { - "node": ">= 8.6" + "node": ">=6" } }, - "node_modules/electron-builder": { - "version": "22.11.7", + "node_modules/cli-boxes": { + "version": "2.2.1", "dev": true, "license": "MIT", - "dependencies": { - "@types/yargs": "^16.0.2", - "app-builder-lib": "22.11.7", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.7", - "chalk": "^4.1.1", - "dmg-builder": "22.11.7", - "fs-extra": "^10.0.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.2.0", - "update-notifier": "^5.1.0", - "yargs": "^17.0.1" + "engines": { + "node": ">=6" }, - "bin": { - "electron-builder": "cli.js", - "install-app-deps": "install-app-deps.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/electron-builder/node_modules/@types/yargs": { - "version": "16.0.4", + "node_modules/cli-highlight": { + "version": "2.1.11", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@types/yargs-parser": "*" + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" } }, - "node_modules/electron-builder/node_modules/ansi-styles": { + "node_modules/cli-highlight/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "license": "MIT", @@ -11723,19 +12922,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/electron-builder/node_modules/builder-util-runtime": { - "version": "8.7.7", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.2", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/electron-builder/node_modules/chalk": { + "node_modules/cli-highlight/node_modules/chalk": { "version": "4.1.2", "dev": true, "license": "MIT", @@ -11750,12 +12937,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/electron-builder/node_modules/ci-info": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-builder/node_modules/cliui": { + "node_modules/cli-highlight/node_modules/cliui": { "version": "7.0.4", "dev": true, "license": "ISC", @@ -11765,7 +12947,7 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/electron-builder/node_modules/color-convert": { + "node_modules/cli-highlight/node_modules/color-convert": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -11776,12 +12958,12 @@ "node": ">=7.0.0" } }, - "node_modules/electron-builder/node_modules/color-name": { + "node_modules/cli-highlight/node_modules/color-name": { "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/electron-builder/node_modules/has-flag": { + "node_modules/cli-highlight/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -11789,18 +12971,7 @@ "node": ">=8" } }, - "node_modules/electron-builder/node_modules/is-ci": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^3.1.1" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/electron-builder/node_modules/supports-color": { + "node_modules/cli-highlight/node_modules/supports-color": { "version": "7.2.0", "dev": true, "license": "MIT", @@ -11811,7 +12982,7 @@ "node": ">=8" } }, - "node_modules/electron-builder/node_modules/wrap-ansi": { + "node_modules/cli-highlight/node_modules/wrap-ansi": { "version": "7.0.0", "dev": true, "license": "MIT", @@ -11827,7 +12998,7 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/electron-builder/node_modules/y18n": { + "node_modules/cli-highlight/node_modules/y18n": { "version": "5.0.8", "dev": true, "license": "ISC", @@ -11835,8 +13006,8 @@ "node": ">=10" } }, - "node_modules/electron-builder/node_modules/yargs": { - "version": "17.1.0", + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", "dev": true, "license": "MIT", "dependencies": { @@ -11849,10 +13020,10 @@ "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/electron-builder/node_modules/yargs-parser": { + "node_modules/cli-highlight/node_modules/yargs-parser": { "version": "20.2.9", "dev": true, "license": "ISC", @@ -11860,2171 +13031,2192 @@ "node": ">=10" } }, - "node_modules/electron-context-menu": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-3.4.0.tgz", - "integrity": "sha512-UcEsDNX7WCgg8mrot8vdGdmq/vwL7SSMHKRx/Q5YTo94NS1117OauJIfJQxoxm3/Fxsh0QItET//PQwKRYEVww==", - "dependencies": { - "cli-truncate": "^2.1.0", - "electron-dl": "^3.2.1", - "electron-is-dev": "^2.0.0" + "node_modules/cli-spinners": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-context-menu/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==", + "node_modules/cli-truncate": { + "version": "3.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/electron-context-menu/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==", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-context-menu/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==", - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/electron-context-menu/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==", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/cli-truncate/node_modules/ansi-styles": { + "version": "6.1.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/electron-context-menu/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==" - }, - "node_modules/electron-context-menu/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==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "node": ">=12" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/electron-devtools-installer": { - "version": "3.2.0", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", "dev": true, - "license": "MIT", - "dependencies": { - "rimraf": "^3.0.2", - "semver": "^7.2.1", - "tslib": "^2.1.0", - "unzip-crx-3": "^0.2.0" - } + "license": "MIT" }, - "node_modules/electron-dl": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.1.tgz", - "integrity": "sha512-kmcSYZyHVEHHHFKlZWW58GiCmu2NSu3Rdwnl3+/fr/ftQYHJULVf1QkrCBPFE2bp/Ly113Za7c8wJZs1nBy04A==", - "dependencies": { - "ext-name": "^5.0.0", - "pupa": "^2.0.1", - "unused-filename": "^2.1.0" + "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-is-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz", - "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-log": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", - "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" - }, - "node_modules/electron-publish": { - "version": "22.11.7", + "node_modules/cli-truncate/node_modules/slice-ansi": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.7", - "chalk": "^4.1.1", - "fs-extra": "^10.0.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/electron-publish/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.0.1", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-publish/node_modules/builder-util-runtime": { - "version": "8.7.7", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.2", - "sax": "^1.2.4" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/electron-publish/node_modules/chalk": { - "version": "4.1.2", + "node_modules/clipboardy": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/electron-publish/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/clipboardy/node_modules/is-wsl": { + "version": "2.2.0", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/electron-publish/node_modules/color-name": { - "version": "1.1.4", + "node_modules/cliui": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", "dev": true, "license": "MIT" }, - "node_modules/electron-publish/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/electron-publish/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/electron-shutdown-command": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/electron-shutdown-command/-/electron-shutdown-command-2.0.1.tgz", - "integrity": "sha512-u8fpVGBpKGv0u7c7uAodUWzjF37+FbOeWBxr3vNO/DKt3KISFT48/UIfu/7smTHluCwrWvjwUXLkrZTA8pWPtg==" - }, - "node_modules/electron-store": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", - "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", "dependencies": { - "conf": "^10.2.0", - "type-fest": "^2.17.0" + "ansi-regex": "^4.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-store/node_modules/type-fest": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.0.tgz", - "integrity": "sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==", "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/electron-to-chromium": { - "version": "1.3.736", + "node_modules/clone": { + "version": "1.0.4", "dev": true, - "license": "ISC" - }, - "node_modules/electron-updater": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.5.tgz", - "integrity": "sha512-kdTly8O9mSZfm9fslc1mnCY+mYOeaYRy7ERa2Fed240u01BKll3aiupzkd07qKw69KvhBSzuHroIW3mF0D8DWA==", - "dependencies": { - "@types/semver": "^7.3.6", - "builder-util-runtime": "8.9.2", - "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" + "license": "MIT", + "engines": { + "node": ">=0.8" } }, - "node_modules/electron-updater/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/electron-updater/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==", + "node_modules/clone-regexp": { + "version": "2.2.0", + "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "is-regexp": "^2.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6" } }, - "node_modules/electron/node_modules/@types/node": { - "version": "14.18.0", + "node_modules/clone-regexp/node_modules/is-regexp": { + "version": "2.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/elliptic": { - "version": "6.5.4", - "dev": true, + "node_modules/clone-response": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "mimic-response": "^1.0.0" } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/encodeurl": { - "version": "1.0.2", + "node_modules/coa": { + "version": "2.0.2", "dev": true, "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 4.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", + "node_modules/code-point-at": { + "version": "1.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/collection-visit": { + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.10.0" } }, - "node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", + "node_modules/color": { + "version": "3.2.1", "dev": true, "license": "MIT", "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/color-convert": { + "version": "1.9.3", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" + "color-name": "1.1.3" } }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/color-name": { + "version": "1.1.3", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/entities": { - "version": "2.2.0", + "node_modules/color-string": { + "version": "1.6.0", "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "license": "MIT", + "node_modules/colorette": { + "version": "1.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, + "license": "MIT" + }, + "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": ">=6" + "node": ">=0.1.90" } }, - "node_modules/errno": { - "version": "0.1.8", + "node_modules/combined-stream": { + "version": "1.0.8", "dev": true, "license": "MIT", "dependencies": { - "prr": "~1.0.1" + "delayed-stream": "~1.0.0" }, - "bin": { - "errno": "cli.js" + "engines": { + "node": ">= 0.8" } }, - "node_modules/error-ex": { - "version": "1.3.2", + "node_modules/commander": { + "version": "2.20.3", "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } + "license": "MIT" }, - "node_modules/error-stack-parser": { - "version": "2.0.6", + "node_modules/commitlint": { + "version": "15.0.0", "dev": true, "license": "MIT", "dependencies": { - "stackframe": "^1.1.1" + "@commitlint/cli": "^15.0.0", + "@commitlint/types": "^15.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v12" } }, - "node_modules/es-abstract": { - "version": "1.18.0", + "node_modules/commitlint/node_modules/@commitlint/cli": { + "version": "15.0.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "@commitlint/format": "^15.0.0", + "@commitlint/lint": "^15.0.0", + "@commitlint/load": "^15.0.0", + "@commitlint/read": "^15.0.0", + "@commitlint/types": "^15.0.0", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^17.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "commitlint": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=v12" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/commitlint/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/escalade": { - "version": "3.1.1", + "node_modules/commitlint/node_modules/cliui": { + "version": "7.0.4", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/escape-goat": { - "version": "2.1.1", + "node_modules/commitlint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", + "node_modules/commitlint/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/commitlint/node_modules/resolve-from": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/eslint": { - "version": "6.8.0", + "node_modules/commitlint/node_modules/wrap-ansi": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/eslint-config-prettier": { - "version": "6.15.0", + "node_modules/commitlint/node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/commitlint/node_modules/yargs": { + "version": "17.2.1", "dev": true, "license": "MIT", "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "peerDependencies": { - "eslint": ">=3.14.1" + "engines": { + "node": ">=12" } }, - "node_modules/eslint-config-standard": { - "version": "14.1.1", + "node_modules/commitlint/node_modules/yargs-parser": { + "version": "20.2.9", "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=6.2.2", - "eslint-plugin-import": ">=2.18.0", - "eslint-plugin-node": ">=9.1.0", - "eslint-plugin-promise": ">=4.2.1", - "eslint-plugin-standard": ">=4.0.0" + "license": "ISC", + "engines": { + "node": ">=10" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.4", + "node_modules/commondir": { + "version": "1.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - } + "license": "MIT" }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "2.6.9", + "node_modules/compare-func": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/eslint-import-resolver-node/node_modules/ms": { - "version": "2.0.0", + "node_modules/component-emitter": { + "version": "1.3.0", "dev": true, "license": "MIT" }, - "node_modules/eslint-import-resolver-webpack": { - "version": "0.12.2", + "node_modules/compressible": { + "version": "2.0.18", "dev": true, "license": "MIT", "dependencies": { - "array-find": "^1.0.0", - "debug": "^2.6.9", - "enhanced-resolve": "^0.9.1", - "find-root": "^1.1.0", - "has": "^1.0.3", - "interpret": "^1.2.0", - "lodash": "^4.17.15", - "node-libs-browser": "^1.0.0 || ^2.0.0", - "resolve": "^1.13.1", - "semver": "^5.7.1" + "mime-db": ">= 1.43.0 < 2" }, - "peerDependencies": { - "eslint-plugin-import": ">=1.4.0", - "webpack": ">=1.11.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/eslint-import-resolver-webpack/node_modules/debug": { - "version": "2.6.9", + "node_modules/compression": { + "version": "1.7.4", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/eslint-import-resolver-webpack/node_modules/enhanced-resolve": { - "version": "0.9.1", + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.2.0", - "tapable": "^0.1.8" - }, + "license": "MIT", "engines": { - "node": ">=0.6" + "node": ">= 0.8" } }, - "node_modules/eslint-import-resolver-webpack/node_modules/memory-fs": { - "version": "0.2.0", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/eslint-import-resolver-webpack/node_modules/ms": { + "node_modules/compression/node_modules/ms": { "version": "2.0.0", "dev": true, "license": "MIT" }, - "node_modules/eslint-import-resolver-webpack/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" }, - "node_modules/eslint-import-resolver-webpack/node_modules/tapable": { - "version": "0.1.10", - "dev": true, + "node_modules/concat-stream": { + "version": "1.6.2", + "engines": [ + "node >= 0.8" + ], "license": "MIT", - "engines": { - "node": ">=0.6" + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "node_modules/eslint-loader": { - "version": "2.2.1", - "dev": true, - "license": "MIT", + "node_modules/conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "dependencies": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" }, - "peerDependencies": { - "eslint": ">=1.6.0 <7.0.0", - "webpack": ">=2.0.0 <5.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-loader/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, + "node_modules/conf/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { - "glob": "^7.1.3" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint-module-utils": { - "version": "2.7.1", - "dev": true, - "license": "MIT", + "node_modules/conf/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } + "node_modules/conf/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "node_modules/eslint-module-utils/node_modules/find-up": { + "node_modules/conf/node_modules/mimic-fn": { "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/conf/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "dev": true, + "node_modules/config-chain": { + "version": "1.1.13", + "devOptional": true, "license": "MIT", "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", + "node_modules/configstore": { + "version": "5.0.1", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "p-limit": "^1.1.0" + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.8" } }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", + "node_modules/console-browserify": { + "version": "1.2.0", + "dev": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "ISC" }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", + "node_modules/consolidate": { + "version": "0.15.1", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^2.1.0" + "bluebird": "^3.1.1" }, "engines": { - "node": ">=4" + "node": ">= 0.10.0" } }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "dev": true, - "license": "MIT", + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" } }, - "node_modules/eslint-plugin-eslint-plugin": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-4.4.1.tgz", - "integrity": "sha512-e4jJGw/ezJseAPutnIasBfnO0XMdp0wPD/upBvRtzN5tqMM3xiwXtcCmDyH5NHO79ij7olxpaNGATFqS+5480g==", - "dev": true, + "node_modules/constant-case/node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dependencies": { - "eslint-utils": "^3.0.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": ">=6.0.0" + "tslib": "^2.0.3" } }, - "node_modules/eslint-plugin-eslint-plugin/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/constant-case/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/constant-case/node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">= 0.6" } }, - "node_modules/eslint-plugin-eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/eslint-plugin-eslint-plugin/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, "engines": { - "node": ">=4.0" + "node": ">=10" } }, - "node_modules/eslint-plugin-import": { - "version": "2.25.3", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.1", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "node": ">=10" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", + "node_modules/conventional-commits-parser": { + "version": "3.2.3", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", + "node_modules/conventional-commits-parser/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/eslint-plugin-import/node_modules/eslint-import-resolver-node": { - "version": "0.3.6", + "node_modules/conventional-commits-parser/node_modules/through2": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "readable-stream": "3" } }, - "node_modules/eslint-plugin-import/node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", + "node_modules/convert-source-map": { + "version": "1.7.0", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "safe-buffer": "~5.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/eslint-import-resolver-node/node_modules/ms": { - "version": "2.1.3", + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", "dev": true, "license": "MIT" }, - "node_modules/eslint-plugin-import/node_modules/is-core-module": { - "version": "2.8.0", + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "glob": "^7.1.3" }, "bin": { - "json5": "lib/cli.js" + "rimraf": "bin.js" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "node_modules/copy-descriptor": { + "version": "0.1.1", "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", + "node_modules/copy-webpack-plugin": { + "version": "5.1.2", "dev": true, "license": "MIT", "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "eslint": ">=5.16.0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.1.8", + "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { + "version": "2.1.0", "dev": true, "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=6" } }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "node": ">=6" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.0.0", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "3.1.0", "dev": true, "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "node_modules/eslint-plugin-standard": { - "version": "4.1.0", + "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", "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" - } - ], "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0" + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-vue": { - "version": "8.2.0", + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "7.1.1", "dev": true, "license": "MIT", "dependencies": { - "eslint-utils": "^3.0.0", - "natural-compare": "^1.4.0", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + "node": ">=4" } }, - "node_modules/eslint-plugin-vue/node_modules/acorn": { - "version": "8.6.0", + "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { + "version": "3.0.0", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=4" } }, - "node_modules/eslint-plugin-vue/node_modules/eslint-scope": { - "version": "6.0.0", + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "3.3.10", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "license": "MIT" }, - "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { + "node_modules/copy-webpack-plugin/node_modules/locate-path": { "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=6" } }, - "node_modules/eslint-plugin-vue/node_modules/eslint-visitor-keys": { + "node_modules/copy-webpack-plugin/node_modules/make-dir": { "version": "2.1.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/eslint-plugin-vue/node_modules/espree": { - "version": "9.2.0", + "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "version": "3.0.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" + "p-limit": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/eslint-plugin-vue/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.1.0", + "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/eslint-plugin-vue/node_modules/estraverse": { - "version": "5.3.0", + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "3.0.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=6" } }, - "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser": { - "version": "8.0.1", + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.2", - "eslint-scope": "^6.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.5" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" + "node": ">= 4" } }, - "node_modules/eslint-plugin-vue/node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.1.0", + "node_modules/copy-webpack-plugin/node_modules/semver": { + "version": "5.7.1", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "1.0.0", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, + "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", + "node_modules/core-js": { + "version": "3.19.1", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.19.1", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "browserslist": "^4.17.6", + "semver": "7.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "1.4.3", + "node_modules/core-util-is": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", + "node_modules/cosmiconfig/node_modules/path-type": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.8.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/regexpp": { - "version": "2.0.1", + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=6.5.0" + "node": ">= 6" } }, - "node_modules/eslint/node_modules/semver": { - "version": "6.3.0", + "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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "optional": true, + "dependencies": { + "buffer": "^5.1.0" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/crc/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "license": "MIT", + "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": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", + "node_modules/create-ecdh": { + "version": "4.0.4", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.8.1", + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/espree": { - "version": "6.2.1", + "node_modules/create-hash": { + "version": "1.2.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", + "node_modules/create-hmac": { + "version": "1.1.7", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "node_modules/esprima": { - "version": "4.0.1", + "node_modules/create-require": { + "version": "1.1.1", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT" + }, + "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": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">=4" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/esquery": { - "version": "1.4.0", + "node_modules/cross-env/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "estraverse": "^5.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10" + "node": ">= 8" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", + "node_modules/cross-env/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esrecurse": { - "version": "4.3.0", + "node_modules/cross-env/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "estraverse": "^5.2.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", + "node_modules/cross-env/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "BSD-2-Clause", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estraverse": { - "version": "4.3.0", + "node_modules/cross-env/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, - "license": "BSD-2-Clause", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=4.0" + "node": ">= 8" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", + "node_modules/cross-spawn": { + "version": "6.0.5", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4.8" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", "dev": true, - "engines": { - "node": ">= 0.6" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/event-pubsub": { - "version": "4.3.0", - "dev": true, - "license": "Unlicense", + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "engines": { - "node": ">=4.0.0" + "node": "*" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", + "node_modules/crypto-browserify": { + "version": "3.12.0", "dev": true, "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, "engines": { - "node": ">=0.8.x" + "node": "*" } }, - "node_modules/eventsource": { - "version": "1.1.0", + "node_modules/crypto-random-string": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "original": "^1.0.0" - }, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "dev": true, "license": "MIT", "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" } }, - "node_modules/execa": { - "version": "1.0.0", + "node_modules/css-color-names": { + "version": "0.0.4", "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/execall": { - "version": "2.0.0", + "node_modules/css-declaration-sorter": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "clone-regexp": "^2.1.0" + "postcss": "^7.0.1", + "timsort": "^0.3.0" }, "engines": { - "node": ">=8" + "node": ">4" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", + "node_modules/css-declaration-sorter/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/css-declaration-sorter/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", + "node_modules/css-declaration-sorter/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", + "node_modules/css-loader": { + "version": "3.6.0", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/css-loader/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", + "node_modules/css-loader/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "node_modules/css-loader/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", + "node_modules/css-loader/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/express/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/css-loader/node_modules/source-map": { + "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", + "node_modules/css-select": { + "version": "2.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", "dev": true, "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", "dev": true, + "license": "MIT", "dependencies": { - "side-channel": "^1.0.4" + "mdn-data": "2.0.4", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.0.0" } }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", "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" - } - ] + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/css-what": { + "version": "3.4.2", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.8" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dependencies": { - "mime-db": "^1.28.0" - }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { "node": ">=4" } }, - "node_modules/extend": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/cssnano": { + "version": "4.1.11", "dev": true, "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", + "node_modules/cssnano-preset-default": { + "version": "4.0.8", "dev": true, "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/extend-shallow/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/cssnano-preset-default/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/cssnano-preset-default/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/cssnano-preset-default/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/extglob": { - "version": "2.0.4", + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "postcss": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/cssnano-util-raw-cache/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/cssnano-util-raw-cache/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", + "node_modules/cssnano-util-raw-cache/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", "dev": true, "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", + "node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", "dev": true, "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/extract-zip": { - "version": "1.7.0", + "node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, - "bin": { - "extract-zip": "cli.js" + "engines": { + "node": ">=4" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", + "node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", + "node_modules/cssnano/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/extsprintf": { - "version": "1.3.0", + "node_modules/cssnano/node_modules/postcss": { + "version": "7.0.39", "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } }, - "node_modules/fast-diff": { - "version": "1.2.0", + "node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/fast-glob": { - "version": "2.2.7", + "node_modules/cssnano/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "3.1.0", + "node_modules/csso": { + "version": "4.2.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", "dev": true, - "license": "MIT" + "license": "CC0-1.0" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true, "license": "MIT" }, - "node_modules/fastq": { - "version": "1.11.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "websocket-driver": ">=0.5.1" + "cssom": "~0.3.6" }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } + "license": "MIT" }, - "node_modules/fetch-installed-software": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/fetch-installed-software/-/fetch-installed-software-0.0.7.tgz", - "integrity": "sha512-lV9bMiEvF6tC80k2FisTQC3mm7UiZq+RHKNT45N29OnG2w/JHq/POkeFO6rqmtfAKDaz5kcpCE1yqpGsnAVFbw==" + "node_modules/csstype": { + "version": "2.6.20", + "license": "MIT" }, - "node_modules/figgy-pudding": { - "version": "3.5.2", + "node_modules/cyclist": { + "version": "1.0.1", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/figures": { - "version": "3.2.0", + "node_modules/dargs": { + "version": "7.0.0", "dev": true, "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "5.0.1", + "node_modules/dashdash": { + "version": "1.14.1", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^2.0.1" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/file-loader": { - "version": "4.3.0", + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" + "node": ">=10" } }, - "node_modules/filelist": { - "version": "1.0.2", + "node_modules/data-urls/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "minimatch": "^3.0.4" + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/filesize": { - "version": "3.6.1", + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "license": "BSD-3-Clause", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4.0" + "node": ">=10.4" } }, - "node_modules/fill-range": { - "version": "4.0.0", + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/debounce": { + "version": "1.2.1", + "license": "MIT" + }, + "node_modules/debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", "dependencies": { - "is-extendable": "^0.1.0" + "mimic-fn": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler": { + "node_modules/debounce-fn/node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "engines": { + "node": ">=8" + } + }, + "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/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", "dev": true, - "dependencies": { - "ms": "2.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/decode-uri-component": { + "version": "0.2.0", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=0.10" } }, - "node_modules/find-cache-dir": { - "version": "3.3.1", - "dev": true, + "node_modules/decompress-response": { + "version": "3.3.0", "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "mimic-response": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-root": { - "version": "1.1.0", + "node_modules/deep-extend": { + "version": "0.6.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } }, - "node_modules/find-up": { - "version": "4.1.0", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/default-gateway": { + "version": "5.0.5", "dev": true, - "bin": { - "flat": "cli.js" + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^3.3.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" } }, - "node_modules/flat-cache": { - "version": "2.0.1", + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", + "node_modules/default-gateway/node_modules/execa": { + "version": "3.4.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "^8.12.0 || >=9.7.0" } }, - "node_modules/flatted": { - "version": "2.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", + "node_modules/default-gateway/node_modules/get-stream": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/follow-redirects": { - "version": "1.14.5", + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/for-in": { - "version": "1.0.2", + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "4.0.1", "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "path-key": "^3.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/foreground-child/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==", + "node_modules/default-gateway/node_modules/onetime": { + "version": "5.1.2", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/foreground-child/node_modules/path-key": { + "node_modules/default-gateway/node_modules/p-finally": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/foreground-child/node_modules/shebang-command": { + "node_modules/default-gateway/node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -14032,20 +15224,18 @@ "node": ">=8" } }, - "node_modules/foreground-child/node_modules/shebang-regex": { + "node_modules/default-gateway/node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/foreground-child/node_modules/which": { + "node_modules/default-gateway/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, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14056,371 +15246,324 @@ "node": ">= 8" } }, - "node_modules/forever-agent": { - "version": "0.6.1", + "node_modules/default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, - "license": "Apache-2.0", + "dependencies": { + "strip-bom": "^4.0.0" + }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "3.1.1", + "node_modules/default-require-extensions/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", - "dependencies": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, "engines": { - "node": ">=6.11.5", - "yarn": ">=1.0.0" + "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5": { - "name": "fork-ts-checker-webpack-plugin", - "version": "5.2.1", + "node_modules/defaults": { + "version": "1.0.3", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" + "clone": "^1.0.2" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/defer-to-connect": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "devOptional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/define-property": { + "version": "2.0.2", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "color-name": "~1.1.4" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/fs-extra": { - "version": "9.1.0", + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "kind-of": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/schema-utils": { - "version": "2.7.0", + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/del": { + "version": "4.1.1", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "has-flag": "^4.0.0" + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "5.7.1", + "node_modules/del/node_modules/globby": { + "version": "6.1.0", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/form-data": { - "version": "2.3.3", + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", "dev": true, "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 0.12" + "node": ">=0.10.0" } }, - "node_modules/formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" + "glob": "^7.1.3" }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/formidable/node_modules/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", + "node_modules/delayed-stream": { + "version": "1.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.4.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", + "node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/depd": { + "version": "1.1.2", "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", + "node_modules/des.js": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/friendly-errors-webpack-plugin": { - "version": "1.7.0", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + "engines": { + "node": ">=0.10" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/detect-node": { + "version": "2.1.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/chalk": { - "version": "1.1.3", + "node_modules/diff": { + "version": "4.0.2", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=0.3.1" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/string-width": { - "version": "2.1.1", + "node_modules/diffie-hellman": { + "version": "5.0.3", "dev": true, "license": "MIT", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", + "node_modules/dir-glob": { + "version": "2.2.2", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "path-type": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/dmg-builder": { + "version": "22.11.7", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.6", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" }, - "engines": { - "node": ">=0.10.0" + "optionalDependencies": { + "dmg-license": "^1.0.9" } }, - "node_modules/friendly-errors-webpack-plugin/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/dmg-builder/node_modules/argparse": { + "version": "2.0.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } + "license": "Python-2.0" }, - "node_modules/from2": { - "version": "2.3.0", + "node_modules/dmg-builder/node_modules/builder-util-runtime": { + "version": "8.7.6", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "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/fs-extra": { + "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", @@ -14430,1199 +15573,1334 @@ "node": ">=12" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", + "node_modules/dmg-builder/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.3", + "node_modules/dmg-builder/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, - "license": "Unlicense", - "optional": true + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", + "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==", "dev": true, - "license": "ISC", + "optional": true, + "os": [ + "darwin" + ], "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "@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/fs.realpath": { + "node_modules/dns-equal": { "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", "dev": true, "license": "MIT" }, - "node_modules/gauge": { - "version": "2.7.4", + "node_modules/dns-packet": { + "version": "1.3.4", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/dns-txt": { + "version": "2.0.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "buffer-indexof": "^1.0.0" } }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "number-is-nan": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", + "node_modules/dom-converter": { + "version": "0.2.0", "dev": true, "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "utila": "~0.4" } }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/dom-serializer": { + "version": "0.2.2", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.4", + "npm": ">=1.2" } }, - "node_modules/gaze": { - "version": "1.1.3", + "node_modules/domelementtype": { + "version": "1.3.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "license": "MIT", "dependencies": { - "globule": "^1.0.0" + "webidl-conversions": "^5.0.0" }, "engines": { - "node": ">= 4.0.0" + "node": ">=8" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", + "node_modules/domhandler": { + "version": "2.4.2", "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "1" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", + "node_modules/domutils": { + "version": "1.7.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dom-serializer": "0", + "domelementtype": "1" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/get-stdin": { - "version": "6.0.0", + "node_modules/dotenv": { + "version": "8.6.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/get-stream": { - "version": "4.1.0", + "node_modules/dotenv-expand": { + "version": "5.1.0", "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", + "node_modules/duplexer": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "license": "BSD-3-Clause" + }, + "node_modules/duplexify": { + "version": "3.7.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/get-value": { - "version": "2.0.6", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/easy-stack": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/getpass": { - "version": "0.1.7", + "node_modules/ecc-jsbn": { + "version": "0.1.2", "dev": true, "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/git-raw-commits": { - "version": "2.0.10", + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, "license": "MIT", "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" }, "bin": { - "git-raw-commits": "cli.js" + "editorconfig": "bin/editorconfig" }, "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/git-raw-commits/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/editorconfig/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "balanced-match": "^1.0.0" } }, - "node_modules/git-raw-commits/node_modules/through2": { - "version": "4.0.2", + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "license": "MIT", - "dependencies": { - "readable-stream": "3" + "engines": { + "node": ">=14" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "license": "ISC", "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" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "5.1.2", + "node_modules/editorconfig/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "dev": true, - "license": "BSD" + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true }, - "node_modules/global-agent": { - "version": "3.0.0", + "node_modules/ejs": { + "version": "2.7.4", "dev": true, - "license": "BSD-3-Clause", - "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" - }, + "hasInstallScript": true, + "license": "Apache-2.0", "engines": { - "node": ">=10.0" + "node": ">=0.10.0" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "dev": true, - "license": "MIT", + "node_modules/electron": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.5.tgz", + "integrity": "sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==", + "hasInstallScript": true, "dependencies": { - "ini": "^1.3.4" + "@electron/get": "^1.13.0", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "bin": { + "electron": "cli.js" }, "engines": { - "node": ">=4" + "node": ">= 8.6" } }, - "node_modules/global-modules": { - "version": "2.0.0", + "node_modules/electron-builder": { + "version": "22.11.7", "dev": true, "license": "MIT", "dependencies": { - "global-prefix": "^3.0.0" + "@types/yargs": "^16.0.2", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "dmg-builder": "22.11.7", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" }, "engines": { - "node": ">=6" + "node": ">=14.0.0" } }, - "node_modules/global-prefix": { - "version": "3.0.0", + "node_modules/electron-builder/node_modules/@types/yargs": { + "version": "16.0.4", "dev": true, "license": "MIT", "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" + "@types/yargs-parser": "*" } }, - "node_modules/global-tunnel-ng": { - "version": "2.7.1", + "node_modules/electron-builder/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, - "license": "BSD-3-Clause", - "optional": true, + "license": "MIT", "dependencies": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10" - } - }, - "node_modules/globalize": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz", - "integrity": "sha512-faR46vTIbFCeAemyuc9E6/d7Wrx9k2ae2L60UhakztFg6VuE42gENVJNuPFtt7Sdjrk9m2w8+py7Jj+JTNy59w==", - "dependencies": { - "cldrjs": "^0.5.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/globals": { - "version": "11.12.0", + "node_modules/electron-builder/node_modules/builder-util-runtime": { + "version": "8.7.7", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, "engines": { - "node": ">=4" + "node": ">=12.0.0" } }, - "node_modules/globalthis": { - "version": "1.0.2", + "node_modules/electron-builder/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "define-properties": "^1.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/globby": { - "version": "9.2.0", + "node_modules/electron-builder/node_modules/ci-info": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-builder/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/electron-builder/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/globjoin": { - "version": "0.1.4", + "node_modules/electron-builder/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/globule": { - "version": "1.3.2", + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=12" } }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/electron-builder/node_modules/has-flag": { + "version": "4.0.0", "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" - }, + "license": "MIT", "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/gonzales-pe": { - "version": "4.3.0", + "node_modules/electron-builder/node_modules/is-ci": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "ci-info": "^3.1.1" }, "bin": { - "gonzales": "bin/gonzales.js" - }, - "engines": { - "node": ">=0.6.0" + "is-ci": "bin.js" } }, - "node_modules/got": { - "version": "9.6.0", + "node_modules/electron-builder/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/graceful-fs": { - "version": "4.2.6", - "license": "ISC" - }, - "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/gzip-size": { - "version": "5.1.1", + "node_modules/electron-builder/node_modules/wrap-ansi": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/handle-thing": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/har-schema": { - "version": "2.0.0", + "node_modules/electron-builder/node_modules/y18n": { + "version": "5.0.8", "dev": true, "license": "ISC", "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/har-validator": { - "version": "5.1.5", + "node_modules/electron-builder/node_modules/yargs": { + "version": "17.1.0", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", + "node_modules/electron-builder/node_modules/yargs-parser": { + "version": "20.2.9", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "node_modules/electron-context-menu": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-3.4.0.tgz", + "integrity": "sha512-UcEsDNX7WCgg8mrot8vdGdmq/vwL7SSMHKRx/Q5YTo94NS1117OauJIfJQxoxm3/Fxsh0QItET//PQwKRYEVww==", "dependencies": { - "function-bind": "^1.1.1" + "cli-truncate": "^2.1.0", + "electron-dl": "^3.2.1", + "electron-is-dev": "^2.0.0" }, - "engines": { - "node": ">= 0.4.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/electron-context-menu/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==", "dependencies": { - "ansi-regex": "^2.0.0" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/electron-devtools-installer": { + "version": "3.2.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "rimraf": "^3.0.2", + "semver": "^7.2.1", + "tslib": "^2.1.0", + "unzip-crx-3": "^0.2.0" } }, - "node_modules/has-bigints": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "node_modules/electron-dl": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.1.tgz", + "integrity": "sha512-kmcSYZyHVEHHHFKlZWW58GiCmu2NSu3Rdwnl3+/fr/ftQYHJULVf1QkrCBPFE2bp/Ly113Za7c8wJZs1nBy04A==", + "dependencies": { + "ext-name": "^5.0.0", + "pupa": "^2.0.1", + "unused-filename": "^2.1.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "dev": true, + "node_modules/electron-is-dev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz", + "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-log": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.4.2.tgz", + "integrity": "sha512-L55kJzbVVoBY6kyJ3A+cjPchL1aXLdV2/Q8SvIj4sE5VmOcwZa6KXaFICZE+Z+RMXhAIFta79kSaXBqn+0XXMA==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/has-symbols": { - "version": "1.0.2", + "node_modules/electron-publish": { + "version": "22.11.7", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", + "node_modules/electron-publish/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/has-unicode": { - "version": "2.0.1", + "node_modules/electron-publish/node_modules/builder-util-runtime": { + "version": "8.7.7", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } }, - "node_modules/has-value": { - "version": "1.0.0", + "node_modules/electron-publish/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/has-values": { - "version": "1.0.0", + "node_modules/electron-publish/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", + "node_modules/electron-publish/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/has-yarn": { - "version": "2.1.0", + "node_modules/electron-publish/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/hash-base": { - "version": "3.1.0", + "node_modules/electron-publish/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, - "license": "MIT", + "node_modules/electron-shutdown-command": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/electron-shutdown-command/-/electron-shutdown-command-2.0.1.tgz", + "integrity": "sha512-u8fpVGBpKGv0u7c7uAodUWzjF37+FbOeWBxr3vNO/DKt3KISFT48/UIfu/7smTHluCwrWvjwUXLkrZTA8pWPtg==" + }, + "node_modules/electron-store": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", + "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "conf": "^10.2.0", + "type-fest": "^2.17.0" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "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" - } - ], - "license": "MIT" + "node_modules/electron-store/node_modules/type-fest": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.0.tgz", + "integrity": "sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/hash-sum": { - "version": "2.0.0", - "dev": true, - "license": "MIT" + "node_modules/electron-to-chromium": { + "version": "1.5.39", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", + "integrity": "sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==", + "dev": true }, - "node_modules/hash.js": { - "version": "1.1.7", - "dev": true, - "license": "MIT", + "node_modules/electron-updater": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.5.tgz", + "integrity": "sha512-kdTly8O9mSZfm9fslc1mnCY+mYOeaYRy7ERa2Fed240u01BKll3aiupzkd07qKw69KvhBSzuHroIW3mF0D8DWA==", "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "@types/semver": "^7.3.6", + "builder-util-runtime": "8.9.2", + "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" } }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, + "node_modules/electron-updater/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/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": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/hasha/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/electron-updater/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" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/electron-vite": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-3.1.0.tgz", + "integrity": "sha512-M7aAzaRvSl5VO+6KN4neJCYLHLpF/iWo5ztchI/+wMxIieDZQqpbCYfaEHHHPH6eupEzfvZdLYdPdmvGqoVe0Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "cac": "^6.7.14", + "esbuild": "^0.25.1", + "magic-string": "^0.30.17", + "picocolors": "^1.1.1" + }, + "bin": { + "electron-vite": "bin/electron-vite.js" + }, "engines": { - "node": ">=8" + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@swc/core": "^1.0.0", + "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + } } }, - "node_modules/he": { - "version": "1.2.0", + "node_modules/electron-vite/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", - "bin": { - "he": "bin/he" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" } }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "node_modules/electron/node_modules/@types/node": { + "version": "14.18.0", + "license": "MIT" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "dev": true, + "license": "MIT", "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hex-color-regex": { - "version": "1.1.0", + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", "dev": true, "license": "MIT" }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/highlight.js": { - "version": "10.7.3", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } + "node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" }, - "node_modules/hmac-drbg": { - "version": "1.0.1", + "node_modules/emojis-list": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "engines": { + "node": ">= 4" } }, - "node_modules/hoopy": { - "version": "0.1.4", - "dev": true, + "node_modules/encodeurl": { + "version": "1.0.2", + "devOptional": true, "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 0.8" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "dev": true, + "node_modules/end-of-stream": { + "version": "1.4.4", "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "once": "^1.4.0" } }, - "node_modules/hsl-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/hsla-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/html-entities": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-minifier": { - "version": "3.5.21", + "node_modules/enhanced-resolve": { + "version": "4.5.0", "dev": true, - "license": "MIT", "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "bin": { - "html-minifier": "cli.js" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.17.1", - "dev": true, - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.1.0", + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", "dev": true, "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/html-webpack-plugin": { - "version": "3.2.0", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + "node": ">=8.6" } }, - "node_modules/html-webpack-plugin/node_modules/big.js": { - "version": "3.2.0", + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/html-webpack-plugin/node_modules/emojis-list": { - "version": "2.1.0", + "node_modules/entities": { + "version": "2.2.0", "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/html-webpack-plugin/node_modules/json5": { - "version": "0.5.1", + "node_modules/errno": { + "version": "0.1.8", "dev": true, "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, "bin": { - "json5": "lib/cli.js" + "errno": "cli.js" } }, - "node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "0.2.17", + "node_modules/error-ex": { + "version": "1.3.2", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "is-arrayish": "^0.2.1" } }, - "node_modules/html-webpack-plugin/node_modules/util.promisify": { - "version": "1.0.0", + "node_modules/error-stack-parser": { + "version": "2.0.6", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "stackframe": "^1.1.1" } }, - "node_modules/htmlparser2": { - "version": "3.10.1", + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, - "license": "MIT", "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "1.1.2", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.6.0", - "dev": true, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "dev": true, - "license": "BSD-2-Clause" + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "dev": true, - "license": "MIT" + "node_modules/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "dev": true }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "es-errors": "^1.3.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/http-errors/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "has": "^1.0.3" } }, - "node_modules/http-parser-js": { - "version": "0.5.3", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy": { - "version": "1.18.1", + "node_modules/es-to-primitive": { + "version": "1.2.1", "dev": true, "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/http-proxy-middleware": { - "version": "1.3.1", + "node_modules/es6-error": { + "version": "4.1.1", + "devOptional": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8.0.0" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" } }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "3.0.2", + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "7.0.1", - "dev": true, + "node_modules/escape-goat": { + "version": "2.1.1", "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { "node": ">=8" } }, - "node_modules/http-proxy-middleware/node_modules/is-number": { - "version": "7.0.0", + "node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=0.8.0" } }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "4.0.4", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=8.6" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/http-proxy-middleware/node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=8.0" + "node": ">=4.0" } }, - "node_modules/http-signature": { - "version": "1.2.0", + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, + "license": "BSD-3-Clause", + "optional": true, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": ">=0.10.0" } }, - "node_modules/http2-client": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", - "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", - "dev": true - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/human-signals": { - "version": "1.1.1", - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/hyperid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.0.1.tgz", - "integrity": "sha512-I+tl7TS5nsoVhkxqX1rS3Qmqlq44eoPUcgPthW8v3IW8CvWL7lwtd6HQbkDUMrBKJTG0vgEaRsjT35imW/D+9Q==", - "dependencies": { - "uuid": "^8.3.2", - "uuid-parse": "^1.1.0" - } - }, - "node_modules/hyperid/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "4.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "postcss": "^7.0.14" + "node_modules/eslint": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@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.6.0", + "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", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/icss-utils/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/icss-utils/node_modules/postcss": { - "version": "7.0.39", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://opencollective.com/eslint" } }, - "node_modules/icss-utils/node_modules/source-map": { - "version": "0.6.1", + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, "funding": [ { @@ -15638,645 +16916,725 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause" - }, - "node_modules/iferr": { - "version": "0.1.5", - "dev": true, - "license": "MIT" - }, - "node_modules/ignore": { - "version": "4.0.6", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "node_modules/immediate": { - "version": "3.0.6", + "node_modules/eslint-import-resolver-custom-alias": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-custom-alias/-/eslint-import-resolver-custom-alias-1.3.2.tgz", + "integrity": "sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==", "dev": true, - "license": "MIT" + "dependencies": { + "glob-parent": "^6.0.2", + "resolve": "^1.22.2" + }, + "peerDependencies": { + "eslint-plugin-import": ">=2.2.0" + } }, - "node_modules/import-cwd": { - "version": "2.1.0", + "node_modules/eslint-import-resolver-custom-alias/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", "dependencies": { - "import-from": "^2.1.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, - "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, - "node_modules/import-from": { - "version": "2.1.0", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, - "node_modules/import-from/node_modules/resolve-from": { - "version": "3.0.0", + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/import-lazy": { - "version": "4.0.0", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/import-local": { - "version": "2.0.0", + "node_modules/eslint-plugin-es": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "3.0.0", + "node_modules/eslint-plugin-eslint-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.0.tgz", + "integrity": "sha512-HOzgLRSZJdEZpLaXbA3qd/4Sfa09W6NTzDBqWd5zeQNc1wnsGfGYGE2Rr8nVDeckyFT5u7GlU+lYrXF89UyECg==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "eslint-utils": "^3.0.0", + "estraverse": "^5.3.0" }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/import-local/node_modules/locate-path": { + "node_modules/eslint-plugin-eslint-plugin/node_modules/eslint-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/eslint-plugin-eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/import-local/node_modules/path-exists": { - "version": "3.0.0", + "node_modules/eslint-plugin-eslint-plugin/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "3.0.0", + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, - "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" }, "engines": { - "node": ">=6" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/indent-string": { - "version": "4.0.0", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/indexes-of": { + "node_modules/eslint-plugin-import/node_modules/json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "MIT" + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } }, - "node_modules/infer-owner": { - "version": "1.0.4", + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC" - }, - "node_modules/inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", + "node_modules/eslint-plugin-import/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, - "license": "ISC" + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/inquirer": { - "version": "7.3.3", + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/eslint-plugin-mocha": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", + "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "eslint-utils": "^3.0.0", + "rambda": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.1", + "node_modules/eslint-plugin-mocha/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=10" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "3.1.0", + "node_modules/eslint-plugin-mocha/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "engines": { - "node": ">=7.0.0" + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, - "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/inquirer/node_modules/mimic-fn": { + "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/inquirer/node_modules/onetime": { - "version": "5.1.2", + "node_modules/eslint-plugin-n/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "3.1.0", + "node_modules/eslint-plugin-n/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/eslint-plugin-n/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/internal-ip": { - "version": "4.3.0", + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/internal-ip/node_modules/default-gateway": { - "version": "4.2.0", + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/internal-slot": { - "version": "1.0.3", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/interpret": { - "version": "1.4.0", - "dev": true, + "node_modules/eslint-plugin-node/node_modules/ignore": { + "version": "5.1.8", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", - "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" + "node": ">= 4" } }, - "node_modules/ip": { - "version": "1.1.5", + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/ip-regex": { - "version": "2.1.0", + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", "dev": true, "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", + "node_modules/eslint-plugin-promise": { + "version": "6.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/is-absolute-url": { - "version": "2.1.0", + "node_modules/eslint-plugin-standard": { + "version": "4.1.0", "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" + } + ], "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", + "node_modules/eslint-plugin-vue": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz", + "integrity": "sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "@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.3.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/eslint-plugin-vue/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, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "boolbase": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "dev": true, - "license": "MIT", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "MIT", "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", + "node_modules/eslint-utils": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/is-boolean-object": { - "version": "1.1.1", + "node_modules/eslint/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, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT" + "node_modules/eslint/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==", + "dev": true }, - "node_modules/is-callable": { - "version": "1.2.3", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-ci": { - "version": "1.2.1", + "node_modules/eslint/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, - "license": "MIT", "dependencies": { - "ci-info": "^1.5.0" + "color-name": "~1.1.4" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/is-color-stop": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } + "node_modules/eslint/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/is-core-module": { - "version": "2.4.0", + "node_modules/eslint/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { - "has": "^1.0.3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 8" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", + "node_modules/eslint/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, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", + "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, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-date-object": { - "version": "1.0.4", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-decimal": { - "version": "1.0.4", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=4.0" } }, - "node_modules/is-descriptor": { - "version": "0.1.6", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-directory": { - "version": "0.3.1", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/is-docker": { - "version": "2.2.1", + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -16285,57 +17643,79 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-extglob": { - "version": "2.1.1", + "node_modules/eslint/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "license": "MIT", + "node_modules/eslint/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/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/eslint/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==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/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" @@ -16344,12 +17724,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-installed-globally/node_modules/global-dirs": { - "version": "3.0.0", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { - "ini": "2.0.0" + "p-limit": "^3.0.2" }, "engines": { "node": ">=10" @@ -16358,37 +17739,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-installed-globally/node_modules/ini": { - "version": "2.0.0", + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "ISC", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/is-installed-globally/node_modules/is-path-inside": { - "version": "3.0.3", + "node_modules/eslint/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/is-negative-zero": { - "version": "2.0.1", + "node_modules/eslint/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/eslint/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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-npm": { - "version": "5.0.0", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -16396,837 +17793,974 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "3.0.0", + "node_modules/eslint/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, - "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/is-number-object": { - "version": "1.0.5", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "license": "MIT", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/espree/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "license": "MIT", + "node_modules/espree/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": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", + "node_modules/esprima": { + "version": "4.0.1", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "MIT", "dependencies": { - "is-path-inside": "^2.1.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/is-path-inside": { - "version": "2.1.0", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", - "dependencies": { - "path-is-inside": "^1.0.2" - }, "engines": { - "node": ">=6" + "node": ">=4.0" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", + "node_modules/esrecurse": { + "version": "4.3.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4.0" } }, - "node_modules/is-regex": { - "version": "1.1.3", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", + "node_modules/estraverse": { + "version": "4.3.0", "dev": true, - "license": "ISC" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", + "node_modules/estree-walker": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-stream": { - "version": "1.1.0", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/is-string": { - "version": "1.0.6", + "node_modules/event-pubsub": { + "version": "4.3.0", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.8.x" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/eventsource": { + "version": "1.1.0", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "original": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.12.0" } }, - "node_modules/is-text-path": { - "version": "1.0.1", + "node_modules/evp_bytestokey": { + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", "dev": true, "license": "MIT" }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", + "node_modules/execa": { + "version": "1.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/is-weakref": { - "version": "1.0.1", + "node_modules/execall": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.0" + "clone-regexp": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-windows": { - "version": "1.0.2", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/is-wsl": { - "version": "1.1.0", + "node_modules/expand-brackets": { + "version": "2.1.4", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/isbinaryfile": { - "version": "4.0.8", + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", "dev": true, "license": "MIT", - "engines": { - "node": ">= 8.0.0" + "dependencies": { + "is-descriptor": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", "dev": true, "license": "MIT" }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "node_modules/expect/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, + "license": "MIT", "dependencies": { - "append-transform": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "node_modules/expect/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, + "license": "MIT", "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/expect/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, - "bin": { - "semver": "bin/semver.js" - } + "license": "MIT" }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.10.0" } }, - "node_modules/istanbul-lib-processinfo/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==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "engines": { - "node": ">= 8" + "node": ">= 0.8" } }, - "node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-processinfo/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==", + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dependencies": { - "shebang-regex": "^3.0.0" + "mime-db": "^1.28.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/extend": { + "version": "3.0.2", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } + "license": "MIT" }, - "node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/extend-shallow": { + "version": "3.0.2", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", "dev": true, + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-report/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==", + "node_modules/extend-shallow/node_modules/is-plain-object": { + "version": "2.0.4", "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-report/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==", + "node_modules/extglob": { + "version": "2.0.4", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "is-descriptor": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps/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==", + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jake": { - "version": "10.8.2", + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" + "kind-of": "^6.0.0" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/jake/node_modules/async": { - "version": "0.9.2", + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/js-base64": { - "version": "2.6.4", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/js-ini": { - "version": "1.5.1", - "license": "MIT" - }, - "node_modules/js-message": { - "version": "1.0.7", + "node_modules/extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha512-41qWGBdtKp9U7sgBxAQ7vonYqSXzgW/SiAYzq4tdWSVhAShvpVCH1nyvPQgjse6EdgbW7Y7ERdT3674/lKr65A==", "dev": true, "license": "MIT", + "dependencies": { + "css": "^2.1.0" + }, "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0", + "npm": ">=2.0.0" } }, - "node_modules/js-queue": { - "version": "2.0.2", - "dev": true, - "license": "MIT", + "node_modules/extract-zip": { + "version": "1.7.0", + "license": "BSD-2-Clause", "dependencies": { - "easy-stack": "^1.0.1" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" }, - "engines": { - "node": ">=1.0.0" + "bin": { + "extract-zip": "cli.js" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "ms": "2.0.0" } }, - "node_modules/jsbn": { - "version": "0.1.1", + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/extsprintf": { + "version": "1.3.0", "dev": true, + "engines": [ + "node >=0.6.0" + ], "license": "MIT" }, - "node_modules/jsesc": { - "version": "2.5.2", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "2.2.7", "dev": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, - "node_modules/json-buffer": { - "version": "3.0.0", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "3.1.0", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", + "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "dev": true, "license": "MIT" }, - "node_modules/json-schema": { - "version": "0.2.3", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", + "node_modules/fastest-levenshtein": { + "version": "1.0.12", "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/json3": { - "version": "3.3.3", + "node_modules/fastq": { + "version": "1.11.0", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } }, - "node_modules/json5": { - "version": "2.2.0", + "node_modules/faye-websocket": { + "version": "0.11.4", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=6" + "node": ">=0.8.0" } }, - "node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", "license": "MIT", "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "pend": "~1.2.0" } }, - "node_modules/jsonparse": { - "version": "1.3.1", + "node_modules/fetch-installed-software": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/fetch-installed-software/-/fetch-installed-software-0.0.7.tgz", + "integrity": "sha512-lV9bMiEvF6tC80k2FisTQC3mm7UiZq+RHKNT45N29OnG2w/JHq/POkeFO6rqmtfAKDaz5kcpCE1yqpGsnAVFbw==" + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" + "license": "ISC" }, - "node_modules/JSONStream": { - "version": "1.3.5", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "(MIT OR Apache-2.0)", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" + "flat-cache": "^3.0.4" }, "engines": { - "node": "*" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/jsprim": { - "version": "1.4.1", + "node_modules/file-loader": { + "version": "4.3.0", "dev": true, - "engines": [ - "node >=0.6.0" - ], "license": "MIT", "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/jszip": { - "version": "3.7.1", - "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" - } - }, - "node_modules/junk": { - "version": "3.1.0", - "license": "MIT", + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, "engines": { - "node": ">=8" + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, - "node_modules/keyv": { - "version": "3.1.0", + "node_modules/filelist": { + "version": "1.0.2", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "json-buffer": "3.0.0" + "minimatch": "^3.0.4" } }, - "node_modules/killable": { - "version": "1.0.1", + "node_modules/filesize": { + "version": "3.6.1", "dev": true, - "license": "ISC" + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } }, - "node_modules/kind-of": { - "version": "6.0.3", + "node_modules/fill-range": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/klona": { - "version": "2.0.4", + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/known-css-properties": { - "version": "0.21.0", - "dev": true, - "license": "MIT" - }, - "node_modules/latest-version": { - "version": "5.1.0", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, - "license": "MIT", "dependencies": { - "package-json": "^6.3.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/launch-editor": { - "version": "2.2.1", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" + "ms": "2.0.0" } }, - "node_modules/launch-editor-middleware": { - "version": "2.2.1", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "MIT", - "dependencies": { - "launch-editor": "^2.2.1" + "engines": { + "node": ">= 0.8" } }, - "node_modules/lazy-val": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/lcid": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", - "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "node_modules/find-cache-dir": { + "version": "3.3.1", + "dev": true, + "license": "MIT", "dependencies": { - "invert-kv": "^3.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/levn": { - "version": "0.3.0", + "node_modules/find-up": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/lie": { - "version": "3.3.0", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" + "bin": { + "flat": "cli.js" } }, - "node_modules/lilconfig": { - "version": "2.0.4", + "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, - "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "dev": true, - "license": "MIT" + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true }, - "node_modules/lint-staged": { - "version": "12.1.3", + "node_modules/flush-write-stream": { + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^8.3.0", - "debug": "^4.3.3", - "execa": "^5.1.1", - "lilconfig": "2.0.4", - "listr2": "^3.13.5", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "object-inspect": "^1.11.1", - "string-argv": "^0.3.1", - "supports-color": "^9.2.1", - "yaml": "^1.10.2" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "node_modules/lint-staged/node_modules/braces": { - "version": "3.0.2", + "node_modules/follow-redirects": { + "version": "1.14.5", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, "engines": { - "node": ">=8" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/lint-staged/node_modules/colorette": { - "version": "2.0.16", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "license": "MIT" + "dependencies": { + "is-callable": "^1.1.3" + } }, - "node_modules/lint-staged/node_modules/commander": { - "version": "8.3.0", + "node_modules/for-in": { + "version": "1.0.2", "dev": true, "license": "MIT", "engines": { - "node": ">= 12" + "node": ">=0.10.0" } }, - "node_modules/lint-staged/node_modules/cross-spawn": { + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/foreground-child/node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -17236,2353 +18770,2571 @@ "node": ">= 8" } }, - "node_modules/lint-staged/node_modules/execa": { - "version": "5.1.1", + "node_modules/foreground-child/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/fill-range": { - "version": "7.0.1", + "node_modules/foreground-child/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/lint-staged/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/foreground-child/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/is-number": { - "version": "7.0.0", + "node_modules/foreground-child/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, - "license": "MIT", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 8" } }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "2.0.1", + "node_modules/forever-agent": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/lint-staged/node_modules/micromatch": { - "version": "4.0.4", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "3.1.1", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" }, "engines": { - "node": ">=8.6" + "node": ">=6.11.5", + "yarn": ">=1.0.0" } }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/fork-ts-checker-webpack-plugin-v5": { + "name": "fork-ts-checker-webpack-plugin", + "version": "5.2.1", "dev": true, "license": "MIT", + "optional": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10", + "yarn": ">=1.0.0" } }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "path-key": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "5.1.2", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "mimic-fn": "^2.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "3.1.1", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/lint-staged/node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/fs-extra": { + "version": "9.1.0", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "shebang-regex": "^3.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/lint-staged/node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=8" } }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "9.2.1", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/schema-utils": { + "version": "2.7.0", "dev": true, "license": "MIT", + "optional": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, "engines": { - "node": ">=12" + "node": ">= 8.9.0" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/lint-staged/node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/fork-ts-checker-webpack-plugin-v5/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "is-number": "^7.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=8" } }, - "node_modules/lint-staged/node_modules/which": { - "version": "2.0.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", "dev": true, "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "semver": "bin/semver" } }, - "node_modules/listr2": { - "version": "3.13.5", + "node_modules/form-data": { + "version": "2.3.3", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.4.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" + "node": ">= 0.12" + } + }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/formidable/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2/node_modules/astral-regex": { - "version": "2.0.0", + "node_modules/forwarded": { + "version": "0.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", + "node_modules/fragment-cache": { + "version": "0.2.1", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "map-cache": "^0.2.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/friendly-errors-webpack-plugin": { + "version": "1.7.0", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", + "node_modules/friendly-errors-webpack-plugin/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/listr2/node_modules/colorette": { - "version": "2.0.16", + "node_modules/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "2.2.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/listr2/node_modules/p-map": { - "version": "4.0.0", + "node_modules/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "1.1.3", "dev": true, "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/listr2/node_modules/rxjs": { - "version": "7.4.0", + "node_modules/friendly-errors-webpack-plugin/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "~2.1.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", + "node_modules/friendly-errors-webpack-plugin/node_modules/string-width": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/listr2/node_modules/tslib": { - "version": "2.1.0", + "node_modules/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", "dev": true, - "license": "0BSD" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "7.0.0", + "node_modules/friendly-errors-webpack-plugin/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=4" } }, - "node_modules/loader-fs-cache": { - "version": "1.0.3", + "node_modules/friendly-errors-webpack-plugin/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/loader-fs-cache/node_modules/find-cache-dir": { - "version": "0.1.1", + "node_modules/friendly-errors-webpack-plugin/node_modules/supports-color": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/loader-fs-cache/node_modules/find-up": { - "version": "1.1.2", + "node_modules/from2": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "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/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.14" } }, - "node_modules/loader-fs-cache/node_modules/path-exists": { + "node_modules/fs-minipass": { "version": "2.1.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "pinkie-promise": "^2.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "dev": true, + "license": "Unlicense", + "optional": true + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, - "node_modules/loader-fs-cache/node_modules/pkg-dir": { + "node_modules/fs.realpath": { "version": "1.0.0", + "license": "ISC" + }, + "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.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, "dependencies": { - "find-up": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/loader-runner": { - "version": "2.4.0", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "2.7.4", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=0.10.0" } }, - "node_modules/loader-utils": { - "version": "1.4.0", + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "number-is-nan": "^1.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/locate-path": { - "version": "5.0.0", + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", + "node_modules/gaze": { + "version": "1.1.3", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } }, - "node_modules/lodash.debounce": { - "version": "4.0.8", + "node_modules/gensync": { + "version": "1.0.0-beta.2", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/lodash.defaultsdeep": { - "version": "4.6.1", + "node_modules/get-caller-file": { + "version": "2.0.5", "dev": true, - "license": "MIT" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.transform": { - "version": "4.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "dev": true, - "license": "MIT" + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/lodash.uniq": { - "version": "4.5.0", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/log-symbols": { - "version": "2.2.0", - "dev": true, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "chalk": "^2.0.1" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/log-update": { - "version": "4.0.0", - "dev": true, + "node_modules/get-stream": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "pump": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/get-symbol-description": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/log-update/node_modules/astral-regex": { - "version": "2.0.0", + "node_modules/get-value": { + "version": "2.0.6", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "3.1.0", + "node_modules/getpass": { + "version": "0.1.7", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" + "assert-plus": "^1.0.0" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/git-raw-commits": { + "version": "2.0.10", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/git-raw-commits/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/log-update/node_modules/onetime": { - "version": "5.1.2", + "node_modules/git-raw-commits/node_modules/through2": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "readable-stream": "3" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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": ">=6" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "3.1.0", + "node_modules/glob-parent": { + "version": "5.1.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", + "node_modules/glob-to-regexp": { + "version": "0.3.0", "dev": true, - "license": "MIT", + "license": "BSD" + }, + "node_modules/global-agent": { + "version": "3.0.0", + "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "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" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=10.0" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/global-dirs": { + "version": "0.1.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ini": "^1.3.4" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/loglevel": { - "version": "1.7.1", + "node_modules/global-modules": { + "version": "2.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6.0" + "dependencies": { + "global-prefix": "^3.0.0" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "engines": { + "node": ">=6" } }, - "node_modules/longest-streak": { - "version": "2.0.4", + "node_modules/global-prefix": { + "version": "3.0.0", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/loopback-connector": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-5.0.1.tgz", - "integrity": "sha512-aSPT6x5WZdoW9ylyNE4CxGqFbIqC9cSEZJwWkCincso27PXlZPj52POoF6pgxug9mkH7MrbXuP3SSDLkLq5oQQ==", + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "async": "^3.2.0", - "bluebird": "^3.7.2", - "debug": "^4.1.1", - "msgpack5": "^4.2.0", - "strong-globalize": "^6.0.4", - "uuid": "^8.3.0" + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" }, "engines": { - "node": ">=10" + "node": ">=0.10" } }, - "node_modules/loopback-connector/node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "node_modules/globalize": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz", + "integrity": "sha512-faR46vTIbFCeAemyuc9E6/d7Wrx9k2ae2L60UhakztFg6VuE42gENVJNuPFtt7Sdjrk9m2w8+py7Jj+JTNy59w==", + "dependencies": { + "cldrjs": "^0.5.4" + } }, - "node_modules/loopback-connector/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/loopback-datasource-juggler": { - "version": "4.27.1", - "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-4.27.1.tgz", - "integrity": "sha512-tZ+NB55F/syrFAOBAndKXKERKmFU7w0UYT6NhbQqLFSc2eVmrk4Wfx3lULGYB9UCJAJIeDoCXJYvjThaeZ3TCQ==", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "devOptional": true, "dependencies": { - "async": "^3.1.0", - "change-case": "^4.1.1", - "debug": "^4.1.0", - "depd": "^2.0.0", - "inflection": "^1.6.0", - "lodash": "^4.17.11", - "loopback-connector": "^5.0.0", - "minimatch": "^3.0.3", - "nanoid": "^3.1.20", - "qs": "^6.5.0", - "strong-globalize": "^6.0.5", - "traverse": "^0.6.6", - "uuid": "^8.3.1" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/loopback-datasource-juggler/node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/loopback-datasource-juggler/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/globby": { + "version": "9.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/loopback-datasource-juggler/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=6" } }, - "node_modules/lower-case": { - "version": "1.1.4", + "node_modules/globjoin": { + "version": "0.1.4", "dev": true, "license": "MIT" }, - "node_modules/lowercase-keys": { - "version": "1.0.1", + "node_modules/globule": { + "version": "1.3.2", "dev": true, "license": "MIT", + "dependencies": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.10" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/globule/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "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": ">=10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/magic-string": { - "version": "0.25.9", + "node_modules/gonzales-pe": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "sourcemap-codec": "^1.4.8" + "minimist": "^1.2.5" + }, + "bin": { + "gonzales": "bin/gonzales.js" + }, + "engines": { + "node": ">=0.6.0" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "dev": true, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/got": { + "version": "9.6.0", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/make-error": { - "version": "1.3.6", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "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/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true, - "license": "ISC" + "license": "MIT", + "optional": true }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "node_modules/gzip-size": { + "version": "5.1.1", + "dev": true, + "license": "MIT", "dependencies": { - "p-defer": "^1.0.0" + "duplexer": "^0.1.1", + "pify": "^4.0.1" }, "engines": { "node": ">=6" } }, - "node_modules/map-cache": { - "version": "0.2.2", + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", "dev": true, "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/map-obj": { - "version": "4.2.1", + "node_modules/hard-rejection": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/map-visit": { - "version": "1.0.0", + "node_modules/has": { + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { - "object-visit": "^1.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4.0" } }, - "node_modules/matcher": { - "version": "3.0.0", + "node_modules/has-ansi": { + "version": "2.0.0", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "escape-string-regexp": "^4.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/matcher/node_modules/escape-string-regexp": { - "version": "4.0.0", + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=10" - }, + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", + "node_modules/has-flag": { + "version": "3.0.0", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=4" } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "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==", + "devOptional": true, "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "dev": true, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mdn-data": { - "version": "2.0.4", + "node_modules/has-unicode": { + "version": "2.0.1", "dev": true, - "license": "CC0-1.0" + "license": "ISC" }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/has-value": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", - "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", + "license": "MIT", "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^2.1.0", - "p-is-promise": "^2.1.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/has-values": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/memfs": { - "version": "3.4.0", + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", "dev": true, - "license": "Unlicense", - "optional": true, + "license": "MIT", "dependencies": { - "fs-monkey": "1.0.3" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">= 4.0.0" + "node": ">=0.10.0" } }, - "node_modules/memory-fs": { - "version": "0.4.1", + "node_modules/has-yarn": { + "version": "2.1.0", "dev": true, "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/meow": { - "version": "8.1.2", + "node_modules/hash-base": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/meow/node_modules/is-core-module": { - "version": "2.8.0", + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "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" + } + ], + "license": "MIT" + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hash.js": { + "version": "1.1.7", "dev": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.3", + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "ISC", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/merge-source-map": { - "version": "1.1.0", + "node_modules/he": { + "version": "1.2.0", "dev": true, "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dependencies": { - "source-map": "^0.6.1" + "capital-case": "^1.0.4", + "tslib": "^2.0.3" } }, - "node_modules/merge-source-map/node_modules/source-map": { - "version": "0.6.1", + "node_modules/hex-color-regex": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" + "node_modules/highlight.js": { + "version": "10.7.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } }, - "node_modules/merge2": { - "version": "1.4.1", + "node_modules/hmac-drbg": { + "version": "1.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/methods": { - "version": "1.1.2", + "node_modules/hoopy": { + "version": "0.1.4", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 6.0.0" } }, - "node_modules/microevent.ts": { - "version": "0.1.1", + "node_modules/hosted-git-info": { + "version": "2.8.9", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/micromark": { - "version": "2.11.4", + "node_modules/hpack.js": { + "version": "2.1.6", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], "license": "MIT", "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/micromatch": { - "version": "3.1.10", + "node_modules/hsl-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "whatwg-encoding": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", + "node_modules/html-entities": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-minifier": { + "version": "3.5.21", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" }, "bin": { - "miller-rabin": "bin/miller-rabin" + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/html-minifier/node_modules/commander": { + "version": "2.17.1", "dev": true, "license": "MIT" }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "node_modules/html-tags": { + "version": "3.1.0", "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/html-webpack-plugin": { + "version": "3.2.0", "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" } }, - "node_modules/mimic-fn": { - "version": "1.2.0", + "node_modules/html-webpack-plugin/node_modules/big.js": { + "version": "3.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/mimic-response": { - "version": "1.0.1", + "node_modules/html-webpack-plugin/node_modules/emojis-list": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.10" } }, - "node_modules/min-indent": { - "version": "1.0.1", + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "0.5.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/mini-css-extract-plugin": { - "version": "0.9.0", + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "0.2.17", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.4.0" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } }, - "node_modules/mini-css-extract-plugin/node_modules/normalize-url": { - "version": "1.9.1", + "node_modules/html-webpack-plugin/node_modules/util.promisify": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=4" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/htmlparser2": { + "version": "3.10.1", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", "dev": true, - "license": "ISC" + "license": "BSD-2-Clause" }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.0", "dev": true, - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "*" + "node": ">= 6" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/minimist-options": { + "node_modules/http-cache-semantics": { "version": "4.1.0", + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, - "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.8" } }, - "node_modules/minimist-options/node_modules/is-plain-obj": { - "version": "1.1.0", + "node_modules/http-errors/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/minipass": { - "version": "3.1.3", + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", + "node_modules/http-parser-js": { + "version": "0.5.3", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 8" + "node": ">= 6" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", + "node_modules/http-proxy-middleware": { + "version": "1.3.1", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/minizlib": { - "version": "2.1.2", + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "3.0.2", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/mississippi": { - "version": "3.0.0", + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "7.0.1", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/mitt": { - "version": "3.0.0", - "license": "MIT" + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/mixin-deep": { - "version": "1.3.2", + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "4.0.4", "dev": true, "license": "MIT", "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "5.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/mixin-deep/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/http-signature": { + "version": "1.2.0", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "node_modules/mkdirp": { - "version": "0.5.5", + "node_modules/http2-client": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", + "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", + "dev": true + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "agent-base": "6", + "debug": "4" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">= 6" } }, - "node_modules/mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", - "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", - "dev": true, + "node_modules/human-signals": { + "version": "1.1.1", + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/hyperid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", + "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, + "uuid": "^8.3.2", + "uuid-parse": "^1.1.0" + } + }, + "node_modules/hyperid/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "uuid": "dist/bin/uuid" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "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": ">=6" + "node": "^8.11.2 || >=10" } }, - "node_modules/mocha/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==", + "node_modules/iconv-corefoundation/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": { - "color-convert": "^2.0.1" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/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==", - "dev": true - }, - "node_modules/mocha/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==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/icss-utils": { + "version": "4.1.1", "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "postcss": "^7.0.14" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 6" } }, - "node_modules/mocha/node_modules/chalk/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==", + "node_modules/icss-utils/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/icss-utils/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/icss-utils/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mocha/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==", + "node_modules/ieee754": { + "version": "1.2.1", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/iferr": { + "version": "0.1.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ignore": { + "version": "4.0.6", + "dev": true, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">= 4" } }, - "node_modules/mocha/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==", + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, - "node_modules/mocha/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/immediate": { + "version": "3.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-cwd": { + "version": "2.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "import-from": "^2.1.0" + }, "engines": { - "node": ">=0.3.1" + "node": ">=4" } }, - "node_modules/mocha/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==", + "node_modules/import-fresh": { + "version": "3.3.0", "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/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==", + "node_modules/import-from": { + "version": "2.1.0", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "resolve-from": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/mocha/node_modules/has-flag": { + "node_modules/import-from/node_modules/resolve-from": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/mocha/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==", + "node_modules/import-local": { + "version": "2.0.0", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/mocha/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==", + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/mocha/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "node_modules/import-local/node_modules/p-locate": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/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==", + "node_modules/import-local/node_modules/path-exists": { + "version": "3.0.0", "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/mocha/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==", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "find-up": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "node_modules/imurmurhash": { + "version": "0.1.4", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "license": "MIT", + "engines": { + "node": ">=0.8.19" } }, - "node_modules/mocha/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==", + "node_modules/indent-string": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/indexes-of": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "devOptional": true, + "license": "ISC" + }, + "node_modules/internal-ip": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" }, "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "4.2.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "engines": { + "node": ">=6" } }, - "node_modules/mocha/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==", + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + } + }, + "node_modules/invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" } }, - "node_modules/mocha/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/ip": { + "version": "1.1.5", "dev": true, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/ip-regex": { + "version": "2.1.0", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "node_modules/ipaddr.js": { + "version": "1.9.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.10" } }, - "node_modules/mock-fs": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.1.3.tgz", - "integrity": "sha512-6rAOGeJgXFYsHlRSsuwUsSIPHk3sA4JfCOLswTc0gSFIU6HTC2xaRXh14orYKYLAg5ygmnxaYsrRxC4xNUkxnw==", + "node_modules/is-absolute-url": { + "version": "2.1.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/mock-require": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/mock-require/-/mock-require-3.0.3.tgz", - "integrity": "sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg==", + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", "dev": true, + "license": "MIT", "dependencies": { - "get-caller-file": "^1.0.2", - "normalize-path": "^2.1.1" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=4.3.0" + "node": ">=0.10.0" } }, - "node_modules/mock-require/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/mock-require/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", "dev": true, + "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/modify-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", - "integrity": "sha512-EickqnKq3kVVaZisYuCxhtKbZjInCuwgwZWyAmRIp1NTMhri7r3380/uqwrUHfaDiPzLVTuoNy4whX66bxPVog==", - "engines": { - "node": ">=0.10.0" + "node_modules/is-alphabetical": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/move-concurrently": { - "version": "1.0.1", + "node_modules/is-alphanumerical": { + "version": "1.0.4", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/move-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/is-arguments": { + "version": "1.1.1", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ms": { - "version": "2.1.2", + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, "license": "MIT" }, - "node_modules/msgpack5": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-4.5.1.tgz", - "integrity": "sha512-zC1vkcliryc4JGlL6OfpHumSYUHWFGimSI+OgfRCjTFLmKA2/foR9rMTOhWiqfOrfxJOctrpWPvrppf8XynJxw==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "dependencies": { - "bl": "^2.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.3.6", - "safe-buffer": "^5.1.2" + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/multicast-dns": { - "version": "6.2.3", + "node_modules/is-binary-path": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" + "binary-extensions": "^2.0.0" }, - "bin": { - "multicast-dns": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "license": "MIT" + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "dev": true, - "license": "ISC" + "node_modules/is-buffer": { + "version": "1.1.6", + "license": "MIT" }, - "node_modules/mylas": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.9.tgz", - "integrity": "sha512-pa+cQvmhoM8zzgitPYZErmDt9EdTNVnXsH1XFjMeM4TyG4FFcgxrvK1+jwabVFwUOEDaSWuXBMjg43kqt/Ydlg==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=12.0.0" + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/raouldeheer" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mz": { - "version": "2.7.0", + "node_modules/is-ci": { + "version": "1.2.1", "dev": true, "license": "MIT", "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/nan": { - "version": "2.14.2", + "node_modules/is-color-stop": { + "version": "1.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nanomatch": { - "version": "1.2.13", + "node_modules/is-data-descriptor": { + "version": "0.1.4", "dev": true, "license": "MIT", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/neo-async": { - "version": "2.6.2", + "node_modules/is-date-object": { + "version": "1.0.4", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/nice-try": { - "version": "1.0.5", + "node_modules/is-decimal": { + "version": "1.0.4", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/nise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", - "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "node_modules/is-descriptor": { + "version": "0.1.6", "dev": true, + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", "dev": true, - "dependencies": { - "isarray": "0.0.1" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/no-case": { - "version": "2.3.2", + "node_modules/is-directory": { + "version": "0.3.1", "dev": true, "license": "MIT", - "dependencies": { - "lower-case": "^1.1.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-fetch-h2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", - "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", + "node_modules/is-extendable": { + "version": "0.1.1", "dev": true, - "dependencies": { - "http2-client": "^1.2.5" - }, + "license": "MIT", "engines": { - "node": "4.x || >=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/node-forge": { - "version": "0.10.0", + "node_modules/is-extglob": { + "version": "2.1.1", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", + "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">=0.10.0" } }, - "node_modules/node-gyp": { - "version": "7.1.2", - "dev": true, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, "engines": { - "node": ">= 10.12.0" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/node-ipc": { - "version": "9.1.4", + "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, - "license": "MIT", "dependencies": { - "event-pubsub": "4.3.0", - "js-message": "1.0.7", - "js-queue": "2.0.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/node-libs-browser": { - "version": "2.2.1", + "node_modules/is-hexadecimal": { + "version": "1.0.4", "dev": true, "license": "MIT", - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "node_modules/is-installed-globally": { + "version": "0.4.0", "dev": true, + "license": "MIT", "dependencies": { - "process-on-spawn": "^1.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-releases": { - "version": "1.1.72", - "dev": true, - "license": "MIT" - }, - "node_modules/node-sass": { - "version": "6.0.1", + "node_modules/is-installed-globally/node_modules/global-dirs": { + "version": "3.0.0", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "meow": "^9.0.0", - "nan": "^2.13.2", - "node-gyp": "^7.1.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "2.2.5", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "bin": { - "node-sass": "bin/node-sass" + "ini": "2.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-sass/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/is-installed-globally/node_modules/ini": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/node-sass/node_modules/ansi-styles": { - "version": "2.2.1", + "node_modules/is-installed-globally/node_modules/is-path-inside": { + "version": "3.0.3", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/node-sass/node_modules/chalk": { - "version": "1.1.3", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/node-sass/node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-sass/node_modules/get-stdin": { - "version": "4.0.1", + "node_modules/is-npm": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-sass/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/is-number": { + "version": "3.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/node-sass/node_modules/meow": { - "version": "9.0.0", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-sass/node_modules/normalize-package-data": { - "version": "3.0.2", + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=10" - } - }, - "node_modules/node-sass/node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/node-sass/node_modules/shebang-command": { + "node_modules/is-obj": { "version": "2.0.0", - "dev": true, "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/node-sass/node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/is-path-cwd": { + "version": "2.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/node-sass/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/is-path-in-cwd": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "is-path-inside": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/node-sass/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/is-path-inside": { + "version": "2.1.0", "dev": true, "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.2" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6" } }, - "node_modules/node-sass/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/is-plain-obj": { + "version": "3.0.0", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { "node": ">=10" }, @@ -19590,297 +21342,271 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-sass/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-sass/node_modules/yargs-parser": { - "version": "20.2.9", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/nodemon": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", - "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5", - "update-notifier": "^5.1.0" - }, - "bin": { - "nodemon": "bin/nodemon.js" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/is-resolvable": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/is-stream": { + "version": "1.1.0", "dev": true, - "bin": { - "semver": "bin/semver" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/nopt": { - "version": "5.0.0", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "license": "ISC", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", + "node_modules/is-symbol": { + "version": "1.0.4", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/normalize-path": { - "version": "3.0.0", + "node_modules/is-text-path": { + "version": "1.0.1", "dev": true, "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, - "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/normalize-selector": { - "version": "0.2.0", + "node_modules/is-typedarray": { + "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/normalize-url": { - "version": "3.3.0", + "node_modules/is-unicode-supported": { + "version": "0.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-conf": { - "version": "1.1.3", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-conf/node_modules/pify": { - "version": "3.0.0", + "node_modules/is-windows": { + "version": "1.0.2", "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", + "node_modules/is-wsl": { + "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/npmlog": { - "version": "4.1.2", + "node_modules/is-yarn-global": { + "version": "0.3.0", "dev": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } + "license": "MIT" }, - "node_modules/nth-check": { - "version": "1.0.2", + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "4.0.8", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "~1.0.0" + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/num2fraction": { - "version": "1.2.2", - "dev": true, - "license": "MIT" + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" }, - "node_modules/number-is-nan": { - "version": "1.0.1", + "node_modules/isobject": { + "version": "3.0.1", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, "engines": { - "node": ">=8.9" + "node": ">=8" } }, - "node_modules/nyc/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==", + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "append-transform": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/nyc/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/nyc/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==", + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/nyc/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/istanbul-lib-processinfo/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/nyc/node_modules/p-map": { + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", @@ -19892,3215 +21618,3717 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/istanbul-lib-processinfo/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/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/istanbul-lib-processinfo/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": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/istanbul-lib-processinfo/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, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, "engines": { "node": ">=8" } }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/istanbul-lib-processinfo/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/oas-kit-common": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", - "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", + "node_modules/istanbul-lib-processinfo/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": { - "fast-safe-stringify": "^2.0.7" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/oas-linter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", - "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "@exodus/schemasafe": "^1.0.0-rc.2", - "should": "^13.2.1", - "yaml": "^1.10.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" + "engines": { + "node": ">=10" } }, - "node_modules/oas-resolver": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", - "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", + "node_modules/istanbul-lib-report/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, - "dependencies": { - "node-fetch-h2": "^2.3.0", - "oas-kit-common": "^1.0.8", - "reftools": "^1.1.9", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "bin": { - "resolve": "resolve.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/oas-resolver/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==", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/oas-resolver/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/oas-resolver/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==", + "node_modules/istanbul-lib-report/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": { - "color-name": "~1.1.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/oas-resolver/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/oas-resolver/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==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/oas-resolver/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/istanbul-lib-source-maps/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": ">=10" + "node": ">=0.10.0" } }, - "node_modules/oas-resolver/node_modules/yargs": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", - "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "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" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/oas-resolver/node_modules/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/oas-schema-walker": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", - "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", - "dev": true, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" + "node": ">=8" } }, - "node_modules/oas-validator": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", - "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", - "dev": true, + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", "dependencies": { - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.2.2", - "oas-resolver": "^2.5.6", - "oas-schema-walker": "^1.1.5", - "reftools": "^1.1.9", - "should": "^13.2.1", - "yaml": "^1.10.0" + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", + "node_modules/jake": { + "version": "10.8.2", "dev": true, "license": "Apache-2.0", + "dependencies": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, "engines": { "node": "*" } }, - "node_modules/object-assign": { - "version": "4.1.1", + "node_modules/jake/node_modules/async": { + "version": "0.9.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/object-copy": { - "version": "0.1.0", + "node_modules/javascript-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", "dev": true, "license": "MIT", "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", + "node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/jest-changed-files/node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/object-hash": { - "version": "1.3.1", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/object-inspect": { - "version": "1.12.0", + "node_modules/jest-changed-files/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, "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-is": { - "version": "1.1.5", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-keys": { - "version": "1.1.1", + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=6" } }, - "node_modules/object-visit": { - "version": "1.0.1", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/object.assign": { - "version": "4.1.2", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.3", + "node_modules/jest-changed-files/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/object.getownpropertydescriptors/node_modules/es-abstract": { - "version": "1.19.1", + "node_modules/jest-changed-files/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/object.getownpropertydescriptors/node_modules/is-callable": { - "version": "1.2.4", + "node_modules/jest-changed-files/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" + } + }, + "node_modules/jest-changed-files/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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/object.getownpropertydescriptors/node_modules/is-regex": { - "version": "1.1.4", + "node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "jest": "bin/jest.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/object.getownpropertydescriptors/node_modules/is-string": { - "version": "1.0.7", + "node_modules/jest-cli/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, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/object.pick": { - "version": "1.3.0", + "node_modules/jest-cli/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/object.values": { - "version": "1.1.5", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/object.values/node_modules/es-abstract": { - "version": "1.19.1", + "node_modules/jest-cli/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/object.values/node_modules/is-callable": { - "version": "1.2.4", + "node_modules/jest-cli/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, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/object.values/node_modules/is-regex": { + "node_modules/jest-cli/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, + "license": "MIT" + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/object.values/node_modules/is-string": { - "version": "1.0.7", + "node_modules/jest-cli/node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/obuf": { - "version": "1.1.2", + "node_modules/jest-cli/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/jest-cli/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/on-headers": { - "version": "1.0.2", + "node_modules/jest-cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "wrappy": "1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/onetime": { - "version": "2.0.1", + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^1.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/open": { - "version": "6.4.0", + "node_modules/jest-cli/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "license": "MIT", "dependencies": { - "is-wsl": "^1.1.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { "node": ">=8" } }, - "node_modules/opener": { - "version": "1.5.2", + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/opn": { - "version": "5.5.0", + "node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", "dev": true, "license": "MIT", "dependencies": { - "is-wsl": "^1.1.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=4" + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/optionator": { - "version": "0.8.3", + "node_modules/jest-config/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, "license": "MIT", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ora": { - "version": "3.4.0", + "node_modules/jest-config/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/original": { - "version": "1.0.2", + "node_modules/jest-config/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, "license": "MIT", "dependencies": { - "url-parse": "^1.4.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/os-browserify": { - "version": "0.3.0", + "node_modules/jest-config/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, "license": "MIT" }, - "node_modules/os-locale": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", - "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", + "node_modules/jest-config/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", "dependencies": { - "execa": "^4.0.0", - "lcid": "^3.0.0", - "mem": "^5.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/os-locale/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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/os-locale/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, + "node_modules/jest-config/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, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.12.0" } }, - "node_modules/os-locale/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==", + "node_modules/jest-config/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6" } }, - "node_modules/os-locale/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-locale/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/jest-config/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, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8.0" } }, - "node_modules/os-locale/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/os-locale/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/jest-diff/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, + "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/os-locale/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==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/os-locale/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==", + "node_modules/jest-diff/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, + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/os-locale/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==", + "node_modules/jest-diff/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, + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/os-locale/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", + "node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", "dev": true, "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", + "node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "node_modules/jest-each/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { - "p-timeout": "^3.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/p-finally": { - "version": "1.0.0", + "node_modules/jest-each/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, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "node_modules/jest-each/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, + "license": "MIT" + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/p-limit": { - "version": "2.3.0", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/p-locate": { - "version": "4.1.0", + "node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/p-map": { - "version": "2.1.0", + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/p-retry": { - "version": "3.0.1", + "node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, "license": "MIT", "dependencies": { - "retry": "^0.12.0" + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "node_modules/jest-haste-map/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", "dependencies": { - "p-finally": "^1.0.0" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/p-try": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "node_modules/jest-haste-map/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/package-json": { - "version": "6.5.0", + "node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, "engines": { "node": ">=8" } }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", + "node_modules/jest-haste-map/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">=0.12.0" } }, - "node_modules/pako": { - "version": "1.0.11", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/parallel-transform": { - "version": "1.2.0", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "license": "MIT", "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/param-case": { - "version": "2.1.1", + "node_modules/jest-haste-map/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "no-case": "^2.2.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/parent-module": { - "version": "1.0.1", + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/parse-asn1": { - "version": "5.1.6", + "node_modules/jest-haste-map/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, - "license": "ISC", + "license": "MIT", "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "node_modules/parse-entities": { - "version": "2.0.0", + "node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", "dev": true, "license": "MIT", "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/parse-json": { - "version": "5.2.0", + "node_modules/jest-jasmine2/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, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/parse5": { - "version": "5.1.1", + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT" + "license": "MIT", + "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/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", + "node_modules/jest-jasmine2/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, "license": "MIT", "dependencies": { - "parse5": "^6.0.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", + "node_modules/jest-jasmine2/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, "license": "MIT" }, - "node_modules/parseurl": { - "version": "1.3.3", + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/pascal-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.0.3" + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/pascal-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/pascalcase": { - "version": "0.1.1", + "node_modules/jest-matcher-utils/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, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/path-browserify": { - "version": "0.0.1", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT" + "license": "MIT", + "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/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "node_modules/jest-matcher-utils/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, + "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/path-dirname": { - "version": "1.0.2", + "node_modules/jest-matcher-utils/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, "license": "MIT" }, - "node_modules/path-exists": { + "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "dev": true, - "license": "(WTFPL OR MIT)" - }, - "node_modules/path-key": { - "version": "2.0.1", + "node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "3.0.0", + "node_modules/jest-message-util/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, "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", + "node_modules/jest-message-util/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/pend": { - "version": "1.2.0", + "node_modules/jest-message-util/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, - "license": "MIT" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/performance-now": { - "version": "2.1.0", + "node_modules/jest-message-util/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, "license": "MIT" }, - "node_modules/picocolors": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/jest-message-util/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "engines": { - "node": ">=8.6" + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=8" } }, - "node_modules/pify": { - "version": "4.0.1", + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/pinkie": { - "version": "2.0.4", + "node_modules/jest-message-util/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, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", + "node_modules/jest-message-util/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "pinkie": "^2.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/jest-message-util/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, + "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": ">=6" + "node": ">=8.0" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@jest/types": "^26.6.2", + "@types/node": "*" }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "node_modules/pnp-webpack-plugin": { - "version": "1.7.0", + "node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, "license": "MIT", "dependencies": { - "ts-pnp": "^1.1.6" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">= 10.14.2" } }, - "node_modules/portfinder": { - "version": "1.0.28", + "node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", "dev": true, "license": "MIT", "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" }, "engines": { - "node": ">= 0.12.0" + "node": ">= 10.14.2" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", + "node_modules/jest-resolve/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, "license": "MIT", "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "dev": true, - "license": "MIT", + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss": { - "version": "8.3.11", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-calc": { - "version": "7.0.5", + "node_modules/jest-resolve/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, "license": "MIT", "dependencies": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/postcss-calc/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-resolve/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, - "license": "ISC" + "license": "MIT" }, - "node_modules/postcss-calc/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-calc/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-colormin": { - "version": "4.0.3", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/postcss-colormin/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", "dev": true, - "license": "ISC" - }, - "node_modules/postcss-colormin/node_modules/postcss": { - "version": "7.0.39", + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner/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, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-colormin/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-colormin/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-convert-values": { - "version": "4.0.1", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-convert-values/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-convert-values/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-runner/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, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=7.0.0" } }, - "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/jest-runner/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, "license": "MIT" }, - "node_modules/postcss-convert-values/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-comments": { - "version": "4.0.2", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 10.13.0" } }, - "node_modules/postcss-discard-comments/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-discard-comments/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-discard-comments/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/postcss-discard-duplicates": { - "version": "4.0.2", + "node_modules/jest-runtime/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, "license": "MIT", "dependencies": { - "postcss": "^7.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-discard-duplicates/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-runtime/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/postcss-discard-duplicates/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-discard-duplicates/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-runtime/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/postcss-discard-empty": { - "version": "4.0.1", + "node_modules/jest-runtime/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, "license": "MIT", "dependencies": { - "postcss": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=7.0.0" } }, - "node_modules/postcss-discard-empty/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-runtime/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, - "license": "ISC" + "license": "MIT" }, - "node_modules/postcss-discard-empty/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-discard-empty/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden": { - "version": "4.0.1", + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", - "dependencies": { - "postcss": "^7.0.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-discard-overridden/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-discard-overridden/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-runtime/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-html": { - "version": "0.36.0", + "node_modules/jest-runtime/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "license": "MIT", "dependencies": { - "htmlparser2": "^3.10.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" + "engines": { + "node": ">=8" } }, - "node_modules/postcss-less": { - "version": "3.1.4", + "node_modules/jest-runtime/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "postcss": "^7.0.14" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=6.14.4" + "node": ">=6" } }, - "node_modules/postcss-less/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-less/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "@types/node": "*", + "graceful-fs": "^4.2.4" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 10.14.2" } }, - "node_modules/postcss-less/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/postcss-load-config": { - "version": "2.1.2", + "node_modules/jest-snapshot/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, "license": "MIT", "dependencies": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 4" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-load-config/node_modules/cosmiconfig": { - "version": "5.2.1", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-load-config/node_modules/import-fresh": { - "version": "2.0.0", + "node_modules/jest-snapshot/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, "license": "MIT", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/postcss-load-config/node_modules/parse-json": { + "node_modules/jest-snapshot/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, + "license": "MIT" + }, + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/postcss-load-config/node_modules/resolve-from": { - "version": "3.0.0", + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/postcss-loader": { - "version": "3.0.0", + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">= 6" + "node": ">= 10.14.2" } }, - "node_modules/postcss-loader/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-loader/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-util/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, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-loader/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/jest-util/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/postcss-loader/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", + "node_modules/jest-util/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, "license": "MIT" }, - "node_modules/postcss-merge-longhand": { - "version": "4.0.11", + "node_modules/jest-util/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, "license": "MIT", "dependencies": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=7.0.0" } }, - "node_modules/postcss-merge-longhand/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-util/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, - "license": "ISC" + "license": "MIT" }, - "node_modules/postcss-merge-longhand/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-util/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-merge-longhand/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-merge-rules": { - "version": "4.0.3", + "node_modules/jest-util/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" + "ci-info": "^2.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/postcss-merge-rules/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-util/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, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/postcss-merge-rules/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-util/node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8.6" } }, - "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.2", + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/postcss-merge-rules/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-util/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, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/postcss-minify-font-values": { - "version": "4.0.2", + "node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">= 10.14.2" } }, - "node_modules/postcss-minify-font-values/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-minify-font-values/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-validate/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, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-minify-font-values/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-minify-gradients": { - "version": "4.0.2", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-minify-gradients/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-minify-gradients/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-validate/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, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=7.0.0" } }, - "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/jest-validate/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, "license": "MIT" }, - "node_modules/postcss-minify-gradients/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-minify-params": { - "version": "4.0.2", + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/postcss-minify-params/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } }, - "node_modules/postcss-minify-params/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-watcher/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, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-minify-params/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-minify-selectors": { - "version": "4.0.2", + "node_modules/jest-watcher/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, "license": "MIT", "dependencies": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6.9.0" + "node": ">=7.0.0" } }, - "node_modules/postcss-minify-selectors/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-watcher/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, - "license": "ISC" + "license": "MIT" }, - "node_modules/postcss-minify-selectors/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.2", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/postcss-minify-selectors/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", + "node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, - "license": "ISC", "dependencies": { - "postcss": "^7.0.5" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/postcss-modules-extract-imports/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=8" + } }, - "node_modules/postcss-modules-extract-imports/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/postcss-modules-extract-imports/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jest/node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "3.0.3", + "node_modules/jest/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/postcss-modules-local-by-default/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jest/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-modules-local-by-default/node_modules/source-map": { - "version": "0.6.1", + "node_modules/joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", + "node_modules/joi/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/joi/node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, - "license": "ISC", "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - }, - "engines": { - "node": ">= 6" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/postcss-modules-scope/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/js-base64": { + "version": "2.6.4", "dev": true, - "license": "ISC" + "license": "BSD-3-Clause" }, - "node_modules/postcss-modules-scope/node_modules/postcss": { - "version": "7.0.39", + "node_modules/js-beautify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", + "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" }, - "engines": { - "node": ">=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" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "engines": { + "node": ">=14" } }, - "node_modules/postcss-modules-scope/node_modules/source-map": { - "version": "0.6.1", + "node_modules/js-beautify/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-modules-values": { - "version": "3.0.0", + "node_modules/js-beautify/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "balanced-match": "^1.0.0" } }, - "node_modules/postcss-modules-values/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-modules-values/node_modules/postcss": { - "version": "7.0.39", + "node_modules/js-beautify/node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 8" } }, - "node_modules/postcss-modules-values/node_modules/source-map": { - "version": "0.6.1", + "node_modules/js-beautify/node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-normalize-charset": { - "version": "4.0.1", + "node_modules/js-beautify/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "postcss": "^7.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-normalize-charset/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/js-beautify/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, - "node_modules/postcss-normalize-charset/node_modules/postcss": { - "version": "7.0.39", + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-normalize-charset/node_modules/source-map": { - "version": "0.6.1", + "node_modules/js-beautify/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/postcss-normalize-display-values": { - "version": "4.0.2", + "node_modules/js-beautify/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=6.9.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postcss-normalize-display-values/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/js-beautify/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/postcss-normalize-display-values/node_modules/postcss": { - "version": "7.0.39", + "node_modules/js-beautify/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/js-beautify/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/postcss-normalize-display-values/node_modules/source-map": { - "version": "0.6.1", + "node_modules/js-beautify/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-normalize-positions": { - "version": "4.0.2", + "node_modules/js-beautify/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, - "license": "MIT", + "license": "ISC", "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/postcss-normalize-positions/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-normalize-positions/node_modules/postcss": { - "version": "7.0.39", + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=14" } }, - "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" + "node_modules/js-ini": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/js-ini/-/js-ini-1.6.0.tgz", + "integrity": "sha512-9Vx+NVkMRNY4i7pLLIGdXIQbP1iwB3fP2IG1zMCgeUUvR1ODmTKa33eR/J9FHoorNsfoJr9/2SVqeSKLwPD9Nw==" }, - "node_modules/postcss-normalize-positions/node_modules/source-map": { - "version": "0.6.1", + "node_modules/js-message": { + "version": "1.0.7", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "4.0.2", + "node_modules/js-queue": { + "version": "2.0.2", "dev": true, "license": "MIT", "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "easy-stack": "^1.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=1.0.0" } }, - "node_modules/postcss-normalize-repeat-style/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { - "version": "7.0.39", + "node_modules/js-yaml": { + "version": "3.14.1", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/jsbn": { + "version": "0.1.1", "dev": true, "license": "MIT" }, - "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/postcss-normalize-string": { - "version": "4.0.2", + "node_modules/jsdom/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "dependencies": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=6.9.0" + "node": ">=0.4.0" } }, - "node_modules/postcss-normalize-string/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-normalize-string/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 6" } }, - "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, "license": "MIT" }, - "node_modules/postcss-normalize-string/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "4.0.2", + "node_modules/jsdom/node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, "license": "MIT", "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "punycode": "^2.1.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/postcss-normalize-timing-functions/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jsdom/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">= 4.0.0" } }, - "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "license": "BSD-3-Clause", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=10.4" } }, - "node_modules/postcss-normalize-unicode": { - "version": "4.0.1", + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" } }, - "node_modules/postcss-normalize-unicode/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-normalize-unicode/node_modules/postcss": { - "version": "7.0.39", + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": ">=8.3.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/jsdom/node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/postcss-normalize-unicode/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, - "license": "BSD-3-Clause", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-normalize-url": { - "version": "4.0.1", + "node_modules/json-buffer": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "dependencies": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "license": "MIT" }, - "node_modules/postcss-normalize-url/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/postcss-normalize-url/node_modules/postcss": { - "version": "7.0.39", + "node_modules/json-schema": { + "version": "0.2.3", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } + "license": "MIT" }, - "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/json-schema-typed": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", + "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", "dev": true, "license": "MIT" }, - "node_modules/postcss-normalize-url/node_modules/source-map": { - "version": "0.6.1", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "devOptional": true, + "license": "ISC" + }, + "node_modules/json3": { + "version": "3.3.3", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "4.0.2", - "dev": true, + "node_modules/jsonfile": { + "version": "6.1.0", "license": "MIT", "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=6.9.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/postcss-normalize-whitespace/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/jsonparse": { + "version": "1.3.1", "dev": true, - "license": "ISC" + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss": { - "version": "7.0.39", + "node_modules/JSONStream": { + "version": "1.3.5", "dev": true, - "license": "MIT", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, - "engines": { - "node": ">=6.0.0" + "bin": { + "JSONStream": "bin.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "engines": { + "node": "*" } }, - "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/jsprim": { + "version": "1.4.1", "dev": true, - "license": "MIT" + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } }, - "node_modules/postcss-normalize-whitespace/node_modules/source-map": { - "version": "0.6.1", + "node_modules/jszip": { + "version": "3.7.1", "dev": true, - "license": "BSD-3-Clause", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-ordered-values": { - "version": "4.1.2", - "dev": true, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "node_modules/keyv": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "engines": { - "node": ">=6.9.0" + "json-buffer": "3.0.0" } }, - "node_modules/postcss-ordered-values/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/killable": { + "version": "1.0.1", "dev": true, "license": "ISC" }, - "node_modules/postcss-ordered-values/node_modules/postcss": { - "version": "7.0.39", + "node_modules/kind-of": { + "version": "6.0.3", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=0.10.0" } }, - "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/postcss-ordered-values/node_modules/source-map": { - "version": "0.6.1", + "node_modules/klona": { + "version": "2.0.4", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/postcss-reduce-initial": { - "version": "4.0.3", + "node_modules/known-css-properties": { + "version": "0.21.0", + "dev": true, + "license": "MIT" + }, + "node_modules/latest-version": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" + "package-json": "^6.3.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/postcss-reduce-initial/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/launch-editor": { + "version": "2.2.1", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } }, - "node_modules/postcss-reduce-initial/node_modules/postcss": { - "version": "7.0.39", + "node_modules/launch-editor-middleware": { + "version": "2.2.1", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "launch-editor": "^2.2.1" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/lcid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", + "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "dependencies": { + "invert-kv": "^3.0.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-reduce-initial/node_modules/source-map": { - "version": "0.6.1", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/postcss-reduce-transforms": { - "version": "4.0.2", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.8.0" } }, - "node_modules/postcss-reduce-transforms/node_modules/picocolors": { - "version": "0.2.1", + "node_modules/lie": { + "version": "3.3.0", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss": { - "version": "7.0.39", + "node_modules/lilconfig": { + "version": "2.0.4", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=10" } }, - "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { - "version": "3.3.1", + "node_modules/lines-and-columns": { + "version": "1.1.6", "dev": true, "license": "MIT" }, - "node_modules/postcss-reduce-transforms/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-safe-parser": { - "version": "4.0.2", + "node_modules/lint-staged": { + "version": "12.1.3", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.26" + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^3.13.5", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.11.1", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/postcss-safe-parser/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "7.0.39", + "node_modules/lint-staged/node_modules/braces": { + "version": "3.0.2", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-safe-parser/node_modules/source-map": { - "version": "0.6.1", + "node_modules/lint-staged/node_modules/colorette": { + "version": "2.0.16", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT" + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/postcss-sass": { - "version": "0.4.4", + "node_modules/lint-staged/node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, "license": "MIT", "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/postcss-sass/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-sass/node_modules/postcss": { - "version": "7.0.39", + "node_modules/lint-staged/node_modules/execa": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-sass/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/postcss-scss": { - "version": "2.1.1", + "node_modules/lint-staged/node_modules/fill-range": { + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { - "postcss": "^7.0.6" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/postcss-scss/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-scss/node_modules/postcss": { - "version": "7.0.39", + "node_modules/lint-staged/node_modules/get-stream": { + "version": "6.0.1", "dev": true, "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-scss/node_modules/source-map": { - "version": "0.6.1", + "node_modules/lint-staged/node_modules/human-signals": { + "version": "2.1.0", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", + "node_modules/lint-staged/node_modules/is-number": { + "version": "7.0.0", "dev": true, "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, "engines": { - "node": ">=4" + "node": ">=0.12.0" } }, - "node_modules/postcss-svgo": { - "version": "4.0.3", + "node_modules/lint-staged/node_modules/is-stream": { + "version": "2.0.1", "dev": true, "license": "MIT", - "dependencies": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-svgo/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-svgo/node_modules/postcss": { - "version": "7.0.39", + "node_modules/lint-staged/node_modules/micromatch": { + "version": "4.0.4", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-svgo/node_modules/postcss-value-parser": { - "version": "3.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-svgo/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/postcss-syntax": { - "version": "0.36.2", + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "2.1.0", "dev": true, "license": "MIT", - "peerDependencies": { - "postcss": ">=5.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/postcss-unique-selectors": { + "node_modules/lint-staged/node_modules/npm-run-path": { "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/postcss-unique-selectors/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/postcss-unique-selectors/node_modules/postcss": { - "version": "7.0.39", + "node_modules/lint-staged/node_modules/onetime": { + "version": "5.1.2", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-unique-selectors/node_modules/source-map": { - "version": "0.6.1", + "node_modules/lint-staged/node_modules/path-key": { + "version": "3.1.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.1.2", + "node_modules/lint-staged/node_modules/shebang-command": { + "version": "2.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/prepend-http": { - "version": "1.0.4", + "node_modules/lint-staged/node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "node_modules/lint-staged/node_modules/supports-color": { + "version": "9.2.1", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", + "node_modules/lint-staged/node_modules/to-regex-range": { + "version": "5.0.1", "dev": true, "license": "MIT", "dependencies": { - "fast-diff": "^1.1.2" + "is-number": "^7.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0" } }, - "node_modules/pretty-error": { - "version": "2.1.2", + "node_modules/lint-staged/node_modules/which": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/process": { - "version": "0.11.10", + "node_modules/lint-staged/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.6.0" + "node": ">= 6" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "node_modules/listr2": { + "version": "3.13.5", "dev": true, + "license": "MIT", "dependencies": { - "fromentries": "^1.2.0" + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.4.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } } }, - "node_modules/progress": { - "version": "2.0.3", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.4.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/proto-list": { - "version": "1.2.4", + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", "dev": true, - "license": "ISC", - "optional": true + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/proxy-addr": { - "version": "2.0.7", + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.10" + "node": ">=7.0.0" } }, - "node_modules/prr": { - "version": "1.0.1", + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/ps-list": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-7.2.0.tgz", - "integrity": "sha512-v4Bl6I3f2kJfr5o80ShABNHAokIgY+wFDTQfE+X3zWYgSGQOCBeYptLZUpoOALBqO5EawmDN/tjTldJesd0ujQ==", + "node_modules/listr2/node_modules/colorette": { + "version": "2.0.16", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { "node": ">=10" }, @@ -23108,1283 +25336,1310 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/psl": { - "version": "1.8.0", - "dev": true, - "license": "MIT" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "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/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.0", - "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/pumpify": { - "version": "1.5.1", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "license": "MIT", "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "engines": { + "node": ">=4" } }, - "node_modules/punycode": { - "version": "2.1.1", + "node_modules/loader-runner": { + "version": "2.4.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/pupa": { - "version": "2.1.1", + "node_modules/loader-utils": { + "version": "1.4.0", + "dev": true, "license": "MIT", "dependencies": { - "escape-goat": "^2.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/q": { - "version": "1.5.1", + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.2", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/query-string": { - "version": "4.3.4", + "node_modules/locate-path": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/querystring": { - "version": "0.2.0", + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", "dev": true, - "engines": { - "node": ">=0.4.x" - } + "license": "MIT" }, - "node_modules/querystring-es3": { - "version": "0.2.1", + "node_modules/lodash.debounce": { + "version": "4.0.8", "dev": true, - "engines": { - "node": ">=0.4.x" - } + "license": "MIT" }, - "node_modules/querystringify": { - "version": "2.2.0", + "node_modules/lodash.defaultsdeep": { + "version": "4.6.1", "dev": true, "license": "MIT" }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", "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" - } - ] + "license": "MIT" }, - "node_modules/quick-lru": { - "version": "4.0.1", + "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.kebabcase": { + "version": "4.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/rambda": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.2.1.tgz", - "integrity": "sha512-Wswj8ZvzdI3VhaGPkZAxaCTwuMmGtgWt7Zxsgyo4P+iTmVnkojvyWaOep5q3ZjMIecW0wtQa66GWxaKkZ24RAA==", - "dev": true + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "dev": true, + "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", + "node_modules/lodash.memoize": { + "version": "4.1.2", "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } + "license": "MIT" }, - "node_modules/randomfill": { - "version": "1.0.4", + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.transform": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", "dev": true, "license": "MIT", "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/range-parser": { - "version": "1.2.1", + "node_modules/log-update": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/rc": { - "version": "1.2.8", + "node_modules/log-update/node_modules/cli-cursor": { + "version": "3.1.0", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "license": "MIT", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "restore-cursor": "^3.1.0" }, - "bin": { - "rc": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/read-config-file": { - "version": "6.2.0", + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "dotenv": "^9.0.2", - "dotenv-expand": "^5.1.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.0", - "lazy-val": "^1.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12.0.0" + "node": ">=7.0.0" } }, - "node_modules/read-config-file/node_modules/argparse": { - "version": "2.0.1", + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "Python-2.0" + "license": "MIT" }, - "node_modules/read-config-file/node_modules/dotenv": { - "version": "9.0.2", + "node_modules/log-update/node_modules/mimic-fn": { + "version": "2.1.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/read-config-file/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/log-update/node_modules/onetime": { + "version": "5.1.2", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "mimic-fn": "^2.1.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg": { - "version": "5.2.0", + "node_modules/log-update/node_modules/restore-cursor": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/read-pkg-up": { - "version": "7.0.1", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "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" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" } }, - "node_modules/redent": { - "version": "3.0.0", + "node_modules/loglevel": { + "version": "1.7.1", "dev": true, "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, - "node_modules/redent/node_modules/strip-indent": { - "version": "3.0.0", + "node_modules/longest-streak": { + "version": "2.0.4", "dev": true, "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loopback-connector": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-5.3.3.tgz", + "integrity": "sha512-ZYULfy5W7+R2A3I9TILWZOdfMVcZ2qEQT/tye0Fy7Ju3zQ6Gv1bmroARGPGVDAneFt+5YaiaieLdoJ1t02hLpg==", "dependencies": { - "min-indent": "^1.0.0" + "async": "^3.2.4", + "bluebird": "^3.7.2", + "debug": "^4.3.4", + "msgpack5": "^4.5.1", + "strong-globalize": "^6.0.5", + "uuid": "^9.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "node_modules/loopback-connector/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, - "node_modules/reftools": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", - "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", - "dev": true, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" + "node_modules/loopback-connector/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "dev": true, - "license": "MIT", + "node_modules/loopback-datasource-juggler": { + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-4.28.8.tgz", + "integrity": "sha512-tfBmMhtbop6BIFuYVWwMXFaNj9Q+LGZiKR31hhlYriOA78FOzJ9efAWGEEFtWLa/uMpI3OJcwKsa20OGF63IPQ==", "dependencies": { - "regenerate": "^1.4.2" + "async": "^3.2.4", + "change-case": "^4.1.2", + "debug": "^4.3.4", + "depd": "^2.0.0", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "loopback-connector": "^5.3.3", + "minimatch": "^5.1.6", + "nanoid": "^3.3.6", + "qs": "^6.11.2", + "strong-globalize": "^6.0.5", + "traverse": "^0.6.7", + "uuid": "^9.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "dev": true, - "license": "MIT" + "node_modules/loopback-datasource-juggler/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "dev": true, - "license": "MIT", + "node_modules/loopback-datasource-juggler/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==", "dependencies": { - "@babel/runtime": "^7.8.4" + "balanced-match": "^1.0.0" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "node_modules/loopback-datasource-juggler/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/loopback-datasource-juggler/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "dev": true, - "license": "MIT", + "node_modules/loopback-datasource-juggler/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==", + "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/loopback-datasource-juggler/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "side-channel": "^1.0.4" }, "engines": { - "node": ">= 0.4" + "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node_modules/loopback-datasource-juggler/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/regexpu-core": { - "version": "4.8.0", + "node_modules/lower-case": { + "version": "1.1.4", "dev": true, + "license": "MIT" + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "dev": true, + "node_modules/magic-string": { + "version": "0.25.9", "license": "MIT", "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" + "sourcemap-codec": "^1.4.8" } }, - "node_modules/registry-url": { - "version": "5.1.0", + "node_modules/make-dir": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "rc": "^1.2.8" + "semver": "^6.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/regjsgen": { - "version": "0.5.2", + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/regjsparser": { - "version": "0.7.0", + "node_modules/make-error": { + "version": "1.3.6", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "jsesc": "~0.5.0" + "tmpl": "1.0.5" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dependencies": { + "p-defer": "^1.0.0" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": ">=6" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", + "node_modules/map-cache": { + "version": "0.2.2", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/relateurl": { - "version": "0.2.7", + "node_modules/map-obj": { + "version": "4.2.1", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/release-zalgo": { + "node_modules/map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, + "license": "MIT", "dependencies": { - "es6-error": "^4.0.1" + "object-visit": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/remark": { - "version": "13.0.0", - "dev": true, + "node_modules/matcher": { + "version": "3.0.0", "license": "MIT", + "optional": true, "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" + "escape-string-regexp": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=10" } }, - "node_modules/remark-parse": { - "version": "9.0.0", - "dev": true, + "node_modules/matcher/node_modules/escape-string-regexp": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" + "optional": true, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "dev": true, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 0.4" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/renderkid": { - "version": "2.0.7", + "node_modules/mathml-tag-names": { + "version": "2.1.3", "dev": true, "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/md5.js": { + "version": "1.3.5", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.1.3", + "node_modules/mdast-util-from-markdown": { + "version": "0.8.5", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/renderkid/node_modules/css-what": { - "version": "5.1.0", + "node_modules/mdast-util-to-markdown": { + "version": "0.6.5", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.3.2", + "node_modules/mdast-util-to-string": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/renderkid/node_modules/domelementtype": { - "version": "2.2.0", + "node_modules/mdn-data": { + "version": "2.0.4", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" + "license": "CC0-1.0" }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.2.2", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "license": "BSD-2-Clause", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", + "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", "dependencies": { - "domelementtype": "^2.2.0" + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=8" } }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", + "node_modules/mem/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/memfs": { + "version": "3.4.0", "dev": true, - "license": "BSD-2-Clause", + "license": "Unlicense", + "optional": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "fs-monkey": "1.0.3" }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", + "node_modules/memory-fs": { + "version": "0.4.1", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "2.0.1", + "node_modules/meow": { + "version": "8.1.2", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/meow/node_modules/hosted-git-info": { + "version": "4.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-regex": "^2.0.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/repeat-element": { - "version": "1.1.4", + "node_modules/meow/node_modules/normalize-package-data": { + "version": "3.0.3", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/repeat-string": { - "version": "1.6.1", + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/request": { - "version": "2.88.2", + "node_modules/meow/node_modules/yargs-parser": { + "version": "20.2.9", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, + "license": "ISC", "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/require-directory": { - "version": "2.1.1", + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-source-map": { + "version": "1.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "source-map": "^0.6.1" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "license": "MIT", + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { + "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "dev": true, "license": "MIT" }, - "node_modules/resolve": { - "version": "1.20.0", + "node_modules/merge2": { + "version": "1.4.1", "dev": true, "license": "MIT", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 8" } }, - "node_modules/resolve-cwd": { - "version": "2.0.0", + "node_modules/methods": { + "version": "1.1.2", "dev": true, "license": "MIT", - "dependencies": { - "resolve-from": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "3.0.0", + "node_modules/microevent.ts": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/micromark": { + "version": "2.11.4", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" } }, - "node_modules/resolve-from": { - "version": "4.0.0", + "node_modules/micromatch": { + "version": "3.1.10", "dev": true, "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/resolve-global": { - "version": "1.0.0", + "node_modules/miller-rabin": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "global-dirs": "^0.1.1" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "miller-rabin": "bin/miller-rabin" } }, - "node_modules/resolve-url": { - "version": "0.2.1", + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", "dev": true, "license": "MIT" }, - "node_modules/responselike": { - "version": "1.0.2", + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/restore-cursor": { - "version": "2.0.0", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "MIT", "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "mime-db": "1.52.0" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/ret": { - "version": "0.1.15", + "node_modules/mimic-fn": { + "version": "1.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=4" } }, - "node_modules/retry": { - "version": "0.12.0", - "dev": true, + "node_modules/mimic-response": { + "version": "1.0.1", "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=4" } }, - "node_modules/reusify": { - "version": "1.0.4", + "node_modules/min-indent": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/rgb-regex": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/rgba-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/mini-css-extract-plugin": { + "version": "0.9.0", "dev": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "webpack": "^4.4.0" } }, - "node_modules/ripemd160": { - "version": "2.0.2", + "node_modules/mini-css-extract-plugin/node_modules/normalize-url": { + "version": "1.9.1", "dev": true, "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/roarr": { - "version": "2.15.4", + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, - "license": "BSD-3-Clause", - "optional": true, + "license": "MIT", "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" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=8.0" + "node": ">= 4" } }, - "node_modules/roarr/node_modules/sprintf-js": { - "version": "1.1.2", + "node_modules/minimalistic-assert": { + "version": "1.0.1", "dev": true, - "license": "BSD-3-Clause", - "optional": true + "license": "ISC" }, - "node_modules/run-async": { - "version": "2.4.1", + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "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" - } + "license": "MIT" }, - "node_modules/run-queue": { - "version": "1.0.3", - "dev": true, + "node_modules/minimatch": { + "version": "3.0.4", "license": "ISC", "dependencies": { - "aproba": "^1.1.1" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/rxjs": { - "version": "6.6.7", + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minimist-options": { + "version": "4.1.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "tslib": "^1.9.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "npm": ">=2.0.0" + "node": ">= 6" } }, - "node_modules/rxjs/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/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/safe-regex": { + "node_modules/minimist-options/node_modules/is-plain-obj": { "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "ret": "~0.1.10" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", + "node_modules/minipass": { + "version": "3.1.3", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/sanitize-filename": { - "version": "1.6.3", + "node_modules/minipass-collect": { + "version": "1.0.2", "dev": true, - "license": "WTFPL OR ISC", + "license": "ISC", "dependencies": { - "truncate-utf8-bytes": "^1.0.0" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/sass-graph": { - "version": "2.2.5", + "node_modules/minipass-flush": { + "version": "1.0.5", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^13.3.2" + "minipass": "^3.0.0" }, - "bin": { - "sassgraph": "bin/sassgraph" + "engines": { + "node": ">= 8" } }, - "node_modules/sass-loader": { - "version": "10.2.0", + "node_modules/minipass-pipeline": { + "version": "1.2.4", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", - "sass": "^1.3.0", - "webpack": "^4.36.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } + "node": ">=8" } }, - "node_modules/sass-loader/node_modules/loader-utils": { - "version": "2.0.2", + "node_modules/minizlib": { + "version": "2.1.2", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=8.9.0" + "node": ">= 8" } }, - "node_modules/sass-loader/node_modules/schema-utils": { - "version": "3.1.1", + "node_modules/mississippi": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=4.0.0" } }, - "node_modules/sax": { - "version": "1.2.4", - "license": "ISC" + "node_modules/mitt": { + "version": "3.0.0", + "license": "MIT" }, - "node_modules/schema-utils": { - "version": "2.7.1", + "node_modules/mixin-deep": { + "version": "1.3.2", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=0.10.0" } }, - "node_modules/scss-tokenizer": { - "version": "0.2.3", + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/scss-tokenizer/node_modules/source-map": { - "version": "0.4.4", + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "amdefine": ">=0.0.4" + "isobject": "^3.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/select-hose": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/selfsigned": { - "version": "1.10.11", - "dev": true, + "node_modules/mkdirp": { + "version": "0.5.5", "license": "MIT", "dependencies": { - "node-forge": "^0.10.0" + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/semver": { - "version": "7.3.5", - "license": "ISC", + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "bin": { - "semver": "bin/semver.js" + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=10" + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, - "node_modules/semver-compare": { - "version": "1.0.0", + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", - "optional": true + "engines": { + "node": ">=6" + } }, - "node_modules/semver-diff": { - "version": "3.1.1", + "node_modules/mocha/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, - "license": "MIT", "dependencies": { - "semver": "^6.3.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", + "node_modules/mocha/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==", + "dev": true + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/mocha/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": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/mocha/node_modules/chalk/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": { - "ms": "2.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/mocha/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, - "bin": { - "mime": "cli.js" + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/mocha/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/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/sentence-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/sentence-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "node": ">=0.3.1" } }, - "node_modules/serialize-error": { - "version": "7.0.1", + "node_modules/mocha/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, - "license": "MIT", - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, "engines": { "node": ">=10" }, @@ -24392,11 +26647,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "optional": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=10" }, @@ -24404,2892 +26663,3023 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serialize-javascript": { + "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/serve-index": { - "version": "1.9.1", + "node_modules/mocha/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==", "dev": true, - "license": "MIT", "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "argparse": "^2.0.1" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "2.0.0" + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", + "node_modules/mocha/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "license": "MIT" + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "ISC" + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "node_modules/mocha/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": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/set-blocking": { - "version": "2.0.0", + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "ISC" + "dependencies": { + "randombytes": "^2.1.0" + } }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/set-value": { - "version": "2.0.1", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/mocha/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/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/setimmediate": { - "version": "1.0.5", + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=10" + } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "node_modules/mock-fs": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.5.0.tgz", + "integrity": "sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } }, - "node_modules/sha.js": { - "version": "2.4.11", + "node_modules/mock-require": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mock-require/-/mock-require-3.0.3.tgz", + "integrity": "sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg==", "dev": true, - "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "get-caller-file": "^1.0.2", + "normalize-path": "^2.1.1" }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">=4.3.0" } }, - "node_modules/shebang-command": { - "version": "1.2.0", + "node_modules/mock-require/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/mock-require/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "remove-trailing-separator": "^1.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/shebang-loader": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/modify-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modify-filename/-/modify-filename-1.1.0.tgz", + "integrity": "sha512-EickqnKq3kVVaZisYuCxhtKbZjInCuwgwZWyAmRIp1NTMhri7r3380/uqwrUHfaDiPzLVTuoNy4whX66bxPVog==", "engines": { "node": ">=0.10.0" } }, - "node_modules/shell-quote": { - "version": "1.7.2", - "dev": true, - "license": "MIT" - }, - "node_modules/should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", + "node_modules/move-concurrently": { + "version": "1.0.1", "dev": true, + "license": "ISC", "dependencies": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" } }, - "node_modules/should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { - "should-type": "^1.4.0" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "node_modules/should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", - "dev": true, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/msgpack5": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-4.5.1.tgz", + "integrity": "sha512-zC1vkcliryc4JGlL6OfpHumSYUHWFGimSI+OgfRCjTFLmKA2/foR9rMTOhWiqfOrfxJOctrpWPvrppf8XynJxw==", "dependencies": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" + "bl": "^2.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.3.6", + "safe-buffer": "^5.1.2" } }, - "node_modules/should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", - "dev": true - }, - "node_modules/should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", + "node_modules/multicast-dns": { + "version": "6.2.3", "dev": true, + "license": "MIT", "dependencies": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", - "dev": true + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "dev": true, + "license": "MIT" }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/mylas": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.9.tgz", + "integrity": "sha512-pa+cQvmhoM8zzgitPYZErmDt9EdTNVnXsH1XFjMeM4TyG4FFcgxrvK1+jwabVFwUOEDaSWuXBMjg43kqt/Ydlg==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "engines": { + "node": ">=12.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/raouldeheer" } }, - "node_modules/signal-exit": { - "version": "3.0.3", - "license": "ISC" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", + "node_modules/mz": { + "version": "2.7.0", "dev": true, "license": "MIT", "dependencies": { - "is-arrayish": "^0.3.1" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", + "node_modules/nan": { + "version": "2.14.2", "dev": true, "license": "MIT" }, - "node_modules/sinon": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz", - "integrity": "sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw==", + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^7.1.2", - "@sinonjs/samsam": "^6.0.2", - "diff": "^5.0.0", - "nise": "^5.1.0", - "supports-color": "^7.2.0" + "bin": { + "nanoid": "bin/nanoid.cjs" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "node_modules/nanomatch": { + "version": "1.2.13", "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": ">=0.10.0" } }, - "node_modules/sinon/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==", + "node_modules/natural-compare": { + "version": "1.4.0", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/sinon/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==", + "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/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/slash": { - "version": "2.0.0", + "node_modules/neo-async": { + "version": "2.6.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/slice-ansi": { - "version": "2.1.0", + "node_modules/nice-try": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/nise": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", + "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "node_modules/nise/node_modules/@sinonjs/commons": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "isarray": "0.0.1" } }, - "node_modules/snapdragon": { - "version": "0.8.2", + "node_modules/no-case": { + "version": "2.3.2", "dev": true, "license": "MIT", "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" + "lower-case": "^1.1.1" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", + "node_modules/nock": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz", + "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==", "dev": true, - "license": "MIT", "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", + "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, - "license": "MIT", + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { - "is-descriptor": "^1.0.0" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", + "node_modules/node-fetch-h2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", + "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "http2-client": "^1.2.5" }, "engines": { - "node": ">=0.10.0" + "node": "4.x || >=6.0.0" } }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", + "node_modules/node-forge": { + "version": "0.10.0", "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">=0.10.0" + "node": ">= 6.0.0" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", + "node_modules/node-gyp": { + "version": "7.1.2", "dev": true, "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.2.0" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.12.0" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-buffer": "^1.1.5" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } + "license": "MIT" }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", + "node_modules/node-ipc": { + "version": "9.1.4", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/node-libs-browser": { + "version": "2.2.1", "dev": true, "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", "dev": true, "license": "MIT" }, - "node_modules/sockjs": { - "version": "0.3.21", + "node_modules/node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" } }, - "node_modules/sockjs-client": { - "version": "1.5.2", + "node_modules/node-notifier/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.3" + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", + "node_modules/node-notifier/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "license": "MIT", + "node_modules/node-notifier/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, + "license": "ISC", + "optional": true, "dependencies": { - "is-plain-obj": "^1.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, "dependencies": { - "sort-keys": "^1.0.0" + "process-on-spawn": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sort-keys/node_modules/is-plain-obj": { - "version": "1.1.0", + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/node-sass": { + "version": "6.0.1", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "dependencies": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "meow": "^9.0.0", + "nan": "^2.13.2", + "node-gyp": "^7.1.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "bin": { + "node-sass": "bin/node-sass" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/source-list-map": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.5.7", + "node_modules/node-sass/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-js": { - "version": "0.6.2", - "license": "BSD-3-Clause", + "node_modules/node-sass/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", + "node_modules/node-sass/node_modules/chalk": { + "version": "1.1.3", "dev": true, "license": "MIT", "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "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==", + "node_modules/node-sass/node_modules/cross-spawn": { + "version": "7.0.3", "dev": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", + "node_modules/node-sass/node_modules/get-stdin": { + "version": "4.0.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "license": "MIT" - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "node_modules/node-sass/node_modules/hosted-git-info": { + "version": "4.0.2", "dev": true, + "license": "ISC", "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/node-sass/node_modules/meow": { + "version": "9.0.0", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/spdx-correct": { - "version": "3.1.1", + "node_modules/node-sass/node_modules/normalize-package-data": { + "version": "3.0.2", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", + "node_modules/node-sass/node_modules/path-key": { + "version": "3.1.1", "dev": true, "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.9", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/spdy": { - "version": "4.0.2", + "node_modules/node-sass/node_modules/shebang-command": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/spdy-transport": { + "node_modules/node-sass/node_modules/shebang-regex": { "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "engines": { + "node": ">=8" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/node-sass/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/specificity": { - "version": "0.4.1", + "node_modules/node-sass/node_modules/supports-color": { + "version": "2.0.0", "dev": true, "license": "MIT", - "bin": { - "specificity": "bin/specificity" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/split-string": { - "version": "3.1.0", + "node_modules/node-sass/node_modules/type-fest": { + "version": "0.18.1", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/node-sass/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", "dependencies": { - "extend-shallow": "^3.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/split2": { - "version": "3.2.2", + "node_modules/node-sass/node_modules/yargs-parser": { + "version": "20.2.9", "dev": true, "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" }, "engines": { - "node": ">= 6" + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "license": "BSD-3-Clause" + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/sshpk": { - "version": "1.16.1", + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "MIT", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "dev": true, + "license": "ISC", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "abbrev": "1" }, "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/ssri": { - "version": "6.0.2", + "node_modules/normalize-package-data": { + "version": "2.5.0", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "figgy-pudding": "^3.5.1" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/stable": { - "version": "0.1.8", - "license": "MIT" - }, - "node_modules/stackframe": { - "version": "1.2.0", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver" + } }, - "node_modules/stat-mode": { - "version": "1.0.0", + "node_modules/normalize-path": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/static-extend": { + "node_modules/normalize-range": { "version": "0.1.2", "dev": true, "license": "MIT", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", + "node_modules/normalize-selector": { + "version": "0.2.0", "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/statuses": { - "version": "1.5.0", + "node_modules/normalize-url": { + "version": "3.3.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/stdout-stream": { - "version": "1.4.1", - "dev": true, + "node_modules/npm-conf": { + "version": "1.1.3", "license": "MIT", + "optional": true, "dependencies": { - "readable-stream": "^2.0.1" + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/stream-browserify": { + "node_modules/npm-conf/node_modules/pify": { + "version": "3.0.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { "version": "2.0.2", "dev": true, "license": "MIT", "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/stream-each": { - "version": "1.2.3", + "node_modules/npmlog": { + "version": "4.1.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "node_modules/stream-http": { - "version": "2.8.3", + "node_modules/nth-check": { + "version": "1.0.2", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "boolbase": "~1.0.0" } }, - "node_modules/stream-shift": { - "version": "1.0.1", + "node_modules/num2fraction": { + "version": "1.2.2", "dev": true, "license": "MIT" }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", + "node_modules/number-is-nan": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } + "node_modules/nwsapi": { + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", + "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", + "dev": true, + "license": "MIT" }, - "node_modules/string-argv": { - "version": "0.3.1", + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, - "license": "MIT", + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, "engines": { - "node": ">=0.6.19" + "node": ">=8.9" } }, - "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==", + "node_modules/nyc/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": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", + "node_modules/nyc/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "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==", + "node_modules/nyc/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": { - "ansi-regex": "^5.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/nyc/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/strip-bom": { + "node_modules/nyc/node_modules/p-map": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/strip-indent": { - "version": "2.0.0", + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strong-globalize": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-6.0.5.tgz", - "integrity": "sha512-7nfUli41TieV9/TSc0N62ve5Q4nfrpy/T0nNNy6TyD3vst79QWmeylCyd3q1gDxh8dqGEtabLNCdPQP1Iuvecw==", "dependencies": { - "accept-language": "^3.0.18", - "debug": "^4.2.0", - "globalize": "^1.6.0", - "lodash": "^4.17.20", - "md5": "^2.3.0", - "mkdirp": "^1.0.4", - "os-locale": "^5.0.0", - "yamljs": "^0.3.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/strong-globalize/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/style-search": { - "version": "0.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/stylehacks": { - "version": "4.0.3", + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/stylehacks/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/stylehacks/node_modules/postcss": { - "version": "7.0.39", + "node_modules/oas-kit-common": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", + "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", "dev": true, - "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "fast-safe-stringify": "^2.0.7" } }, - "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.2", + "node_modules/oas-linter": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", + "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", "dev": true, - "license": "MIT", "dependencies": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "@exodus/schemasafe": "^1.0.0-rc.2", + "should": "^13.2.1", + "yaml": "^1.10.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/stylehacks/node_modules/source-map": { - "version": "0.6.1", + "node_modules/oas-linter/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/stylelint": { - "version": "13.13.1", + "node_modules/oas-resolver": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", + "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", "dev": true, - "license": "MIT", "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", - "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.1", - "get-stdin": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.0.3", - "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.4", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", - "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", - "style-search": "^0.1.0", - "sugarss": "^2.0.0", - "svg-tags": "^1.0.0", - "table": "^6.6.0", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^3.0.3" + "node-fetch-h2": "^2.3.0", + "oas-kit-common": "^1.0.8", + "reftools": "^1.1.9", + "yaml": "^1.10.0", + "yargs": "^17.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" - }, - "engines": { - "node": ">=10.13.0" + "resolve": "resolve.js" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "stylelint": "^13.13.0" + "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/stylelint-config-recommended-scss": { + "node_modules/oas-resolver/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, - "license": "MIT", - "dependencies": { - "stylelint-config-recommended": "^5.0.0" - }, - "peerDependencies": { - "stylelint": "^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", - "stylelint-scss": "^3.0.0" - } - }, - "node_modules/stylelint-scss": { - "version": "3.21.0", - "dev": true, - "license": "MIT", "dependencies": { - "lodash": "^4.17.15", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, - "peerDependencies": { - "stylelint": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/stylelint/node_modules/@nodelib/fs.stat": { - "version": "2.0.4", + "node_modules/oas-resolver/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/stylelint/node_modules/ajv": { - "version": "8.5.0", + "node_modules/oas-resolver/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, - "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "color-name": "~1.1.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/stylelint/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/oas-resolver/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/oas-resolver/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/stylelint/node_modules/array-union": { - "version": "2.1.0", + "node_modules/oas-resolver/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/stylelint/node_modules/astral-regex": { - "version": "2.0.0", + "node_modules/oas-resolver/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint/node_modules/braces": { - "version": "3.0.2", + "node_modules/oas-resolver/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dev": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "cliui": "^7.0.2", + "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": ">=8" + "node": ">=12" } }, - "node_modules/stylelint/node_modules/chalk": { - "version": "4.1.1", + "node_modules/oas-resolver/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, + "node": ">=12" + } + }, + "node_modules/oas-schema-walker": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", + "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", + "dev": true, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/stylelint/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/oas-validator": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", + "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", "dev": true, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-me-maybe": "^1.0.1", + "oas-kit-common": "^1.0.8", + "oas-linter": "^3.2.2", + "oas-resolver": "^2.5.6", + "oas-schema-walker": "^1.1.5", + "reftools": "^1.1.9", + "should": "^13.2.1", + "yaml": "^1.10.0" }, + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" + } + }, + "node_modules/oas-validator/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=7.0.0" + "node": ">= 6" } }, - "node_modules/stylelint/node_modules/color-name": { - "version": "1.1.4", + "node_modules/oauth-sign": { + "version": "0.9.0", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "*" + } }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "7.0.0", + "node_modules/object-assign": { + "version": "4.1.1", "dev": true, "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/dir-glob": { - "version": "3.0.1", + "node_modules/object-copy": { + "version": "0.1.0", "dev": true, "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/fast-glob": { - "version": "3.2.5", + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "6.0.1", + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "is-buffer": "^1.1.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/fill-range": { - "version": "7.0.1", + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/flat-cache": { - "version": "3.0.4", + "node_modules/object-keys": { + "version": "1.1.1", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "isobject": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/flatted": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint/node_modules/get-stdin": { - "version": "8.0.0", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, - "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/globby": { - "version": "11.0.3", + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" }, "engines": { - "node": ">=10" + "node": ">= 0.8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/object.pick": { + "version": "1.3.0", "dev": true, "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/hosted-git-info": { - "version": "4.0.2", + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/stylelint/node_modules/ignore": { - "version": "5.1.8", + "node_modules/obuf": { + "version": "1.1.2", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { - "node": ">= 4" + "node": ">= 0.8" } }, - "node_modules/stylelint/node_modules/is-number": { - "version": "7.0.0", + "node_modules/on-headers": { + "version": "1.0.2", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">= 0.8" } }, - "node_modules/stylelint/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } }, - "node_modules/stylelint/node_modules/log-symbols": { - "version": "4.1.0", + "node_modules/onetime": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "mimic-fn": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/meow": { - "version": "9.0.0", + "node_modules/open": { + "version": "6.4.0", "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/stylelint/node_modules/micromatch": { - "version": "4.0.4", + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opn": { + "version": "5.5.0", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">=8.6" + "node": ">=4" } }, - "node_modules/stylelint/node_modules/normalize-package-data": { - "version": "3.0.2", + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "node_modules/stylelint/node_modules/path-type": { - "version": "4.0.0", + "node_modules/ora": { + "version": "3.4.0", "dev": true, "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/stylelint/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint/node_modules/postcss": { - "version": "7.0.39", + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=6" } }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", + "node_modules/original": { + "version": "1.0.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "url-parse": "^1.4.3" } }, - "node_modules/stylelint/node_modules/slash": { - "version": "3.0.0", + "node_modules/os-browserify": { + "version": "0.3.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/stylelint/node_modules/slice-ansi": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/os-locale": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", + "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "execa": "^4.0.0", + "lcid": "^3.0.0", + "mem": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/stylelint/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/os-locale/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==", "dependencies": { - "has-flag": "^4.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/stylelint/node_modules/table": { - "version": "6.7.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/os-locale/node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dependencies": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/stylelint/node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", + "node_modules/os-locale/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { - "is-number": "^7.0.0" + "pump": "^3.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/type-fest": { - "version": "0.18.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", + "node_modules/os-locale/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/yargs-parser": { - "version": "20.2.7", - "dev": true, - "license": "ISC", + "node_modules/os-locale/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/sugarss": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/os-locale/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dependencies": { - "postcss": "^7.0.2" + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/sugarss/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, - "node_modules/sugarss/node_modules/postcss": { - "version": "7.0.39", - "dev": true, - "license": "MIT", + "node_modules/os-locale/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sugarss/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/os-locale/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==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sumchecker": { - "version": "3.0.1", - "dev": true, - "license": "Apache-2.0", + "node_modules/os-locale/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==", "dependencies": { - "debug": "^4.1.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 8.0" + "node": ">=8" } }, - "node_modules/superagent": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.0.tgz", - "integrity": "sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg==", - "dev": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, + "node_modules/os-locale/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==", "engines": { - "node": ">=6.4.0 <13 || >=14" + "node": ">=8" } }, - "node_modules/superagent/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, + "node_modules/os-locale/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/superagent/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "license": "MIT", "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/superagent/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supertest": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.4.tgz", - "integrity": "sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA==", - "dev": true, + "node_modules/p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "dependencies": { - "methods": "^1.1.2", - "superagent": "^8.0.0" + "p-timeout": "^3.1.0" }, "engines": { - "node": ">=6.4.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "dev": true, + "node_modules/p-finally": { + "version": "1.0.0", "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/svg-tags": { - "version": "1.0.0", - "dev": true + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "engines": { + "node": ">=6" + } }, - "node_modules/svgo": { - "version": "1.3.2", - "dev": true, + "node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/table": { - "version": "5.4.6", + "node_modules/p-locate": { + "version": "4.1.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/p-map": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", + "node_modules/p-retry": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "retry": "^0.12.0" }, "engines": { "node": ">=6" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "dependencies": { - "ansi-regex": "^4.1.0" + "p-finally": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/tapable": { - "version": "1.1.3", - "dev": true, + "node_modules/p-try": { + "version": "2.2.0", "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/tar": { - "version": "6.1.11", + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, - "license": "ISC", "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" + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/tar/node_modules/chownr": { - "version": "2.0.0", + "node_modules/package-json": { + "version": "6.5.0", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0" + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "semver": "bin/semver.js" } }, - "node_modules/temp-file": { - "version": "3.4.0", + "node_modules/pako": { + "version": "1.0.11", "dev": true, - "license": "MIT", - "dependencies": { - "async-exit-hook": "^2.0.1", - "fs-extra": "^10.0.0" - } + "license": "(MIT AND Zlib)" }, - "node_modules/terser": { - "version": "4.8.0", + "node_modules/parallel-transform": { + "version": "1.2.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.5", + "node_modules/param-case": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" + "no-case": "^2.2.0" } }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", + "node_modules/parent-module": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", + "node_modules/parse-asn1": { + "version": "5.1.6", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/parse-entities": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/terser-webpack-plugin/node_modules/make-dir": { - "version": "2.1.0", + "node_modules/parse-json": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/parse5": { + "version": "5.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" + "parse5": "^6.0.1" } }, - "node_modules/terser-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "dev": true, - "license": "MIT", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/pascal-case/node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" + "tslib": "^2.0.3" } }, - "node_modules/terser-webpack-plugin/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node_modules/pascal-case/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", + "node_modules/pascalcase": { + "version": "0.1.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", + "node_modules/path-browserify": { + "version": "0.0.1", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/path-dirname": { + "version": "1.0.2", "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/text-extensions": { - "version": "1.9.0", - "dev": true, + "node_modules/path-is-absolute": { + "version": "1.0.1", "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/text-table": { - "version": "0.2.0", + "node_modules/path-is-inside": { + "version": "1.0.2", "dev": true, - "license": "MIT" + "license": "(WTFPL OR MIT)" }, - "node_modules/thenify": { - "version": "3.3.1", + "node_modules/path-key": { + "version": "2.0.1", "dev": true, "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/thenify-all": { - "version": "1.6.0", + "node_modules/path-parse": { + "version": "1.0.7", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "thenify": ">= 3.1.0 < 4" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=0.8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/thread-loader": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "engines": { - "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" - }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/through": { - "version": "2.3.8", + "node_modules/path-to-regexp": { + "version": "0.1.7", "dev": true, "license": "MIT" }, - "node_modules/through2": { - "version": "2.0.5", + "node_modules/path-type": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/through2-filter": { + "node_modules/path-type/node_modules/pify": { "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/through2-map": { - "version": "3.0.0", + "node_modules/pbkdf2": { + "version": "3.1.2", "dev": true, "license": "MIT", "dependencies": { - "through2": "~2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "dev": true, - "license": "MIT", - "dependencies": { - "setimmediate": "^1.0.4" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.12" } }, - "node_modules/timsort": { - "version": "0.3.0", + "node_modules/pend": { + "version": "1.2.0", + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", "dev": true, "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" + "engines": { + "node": ">=8.6" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.6.0" + "node": ">=6" } }, - "node_modules/tmp-promise": { - "version": "3.0.2", + "node_modules/pinkie": { + "version": "2.0.4", "dev": true, "license": "MIT", - "dependencies": { - "tmp": "^0.2.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tmp-promise/node_modules/tmp": { - "version": "0.2.1", + "node_modules/pinkie-promise": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "rimraf": "^3.0.0" + "pinkie": "^2.0.0" }, "engines": { - "node": ">=8.17.0" + "node": ">=0.10.0" } }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/to-object-path": { - "version": "0.3.0", + "node_modules/pkg-dir": { + "version": "4.2.0", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "find-up": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", "dependencies": { - "is-buffer": "^1.1.5" + "find-up": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "dev": true, - "license": "MIT", + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "engines": { - "node": ">=0.6" + "node": ">=4" } }, - "node_modules/toposort": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "node_modules/playwright": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", "dev": true, "dependencies": { - "nopt": "~1.0.10" + "playwright-core": "1.52.0" }, "bin": { - "nodetouch": "bin/nodetouch.js" + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" } }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "node_modules/playwright-core": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", "dev": true, - "dependencies": { - "abbrev": "1" - }, "bin": { - "nopt": "bin/nopt.js" + "playwright-core": "cli.js" }, "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", "dev": true, - "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" }, "engines": { - "node": ">=0.8" + "node": ">=10.4.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" - }, - "node_modules/trim-newlines": { - "version": "3.0.1", + "node_modules/pnp-webpack-plugin": { + "version": "1.7.0", "dev": true, "license": "MIT", + "dependencies": { + "ts-pnp": "^1.1.6" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/trough": { - "version": "1.0.5", + "node_modules/portfinder": { + "version": "1.0.28", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/true-case-path": { - "version": "1.0.3", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "glob": "^7.1.2" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" } }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", "dev": true, - "license": "WTFPL", + "license": "MIT", "dependencies": { - "utf8-byte-length": "^1.0.1" + "ms": "^2.1.1" } }, - "node_modules/tryer": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/ts-loader": { - "version": "6.2.2", + "node_modules/posix-character-classes": { + "version": "0.1.1", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, "engines": { - "node": ">=8.6" - }, - "peerDependencies": { - "typescript": "*" + "node": ">=0.10.0" } }, - "node_modules/ts-loader/node_modules/braces": { - "version": "3.0.2", - "dev": true, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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" + } + ], "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14" } }, - "node_modules/ts-loader/node_modules/fill-range": { - "version": "7.0.1", + "node_modules/postcss-calc": { + "version": "7.0.5", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, - "node_modules/ts-loader/node_modules/is-number": { - "version": "7.0.0", + "node_modules/postcss-calc/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } + "license": "ISC" }, - "node_modules/ts-loader/node_modules/micromatch": { - "version": "4.0.4", + "node_modules/postcss-calc/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8.6" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/ts-loader/node_modules/semver": { - "version": "6.3.0", + "node_modules/postcss-calc/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/ts-loader/node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/postcss-colormin": { + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=8.0" + "node": ">=6.9.0" } }, - "node_modules/ts-node": { - "version": "9.1.1", + "node_modules/postcss-colormin/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-colormin/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=6.0.0" }, - "peerDependencies": { - "typescript": ">=2.7" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/ts-pnp": { - "version": "1.2.0", + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/postcss-colormin/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/tsc-alias": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.6.4.tgz", - "integrity": "sha512-IXc4yh5onnSvocRU/US/TKm5L6/fh+PLsyFHKn/wI/rNs3GouiDngGgf/XIWo6z+HMR+Y0Pa0EwpZ7ZLR/c9sQ==", + "node_modules/postcss-convert-values": { + "version": "4.0.1", "dev": true, + "license": "MIT", "dependencies": { - "chokidar": "^3.5.3", - "commander": "^9.0.0", - "globby": "^11.0.4", - "mylas": "^2.1.9", - "normalize-path": "^3.0.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, - "bin": { - "tsc-alias": "dist/bin/index.js" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-convert-values/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-convert-values/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-convert-values/node_modules/source-map": { + "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/tsc-alias/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/postcss-discard-comments": { + "version": "4.0.2", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "postcss": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/tsc-alias/node_modules/commander": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", - "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "node_modules/postcss-discard-comments/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } + "license": "ISC" }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-discard-comments/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-discard-comments/node_modules/source-map": { + "version": "0.6.1", "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" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=8.6.0" + "node": ">=0.10.0" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", "dev": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "postcss": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/tsc-alias/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/postcss-discard-duplicates/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-discard-duplicates/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", "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" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsc-alias/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/postcss-discard-duplicates/node_modules/source-map": { + "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-discard-empty": { + "version": "4.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=6.9.0" } }, - "node_modules/tsc-alias/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/postcss-discard-empty/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-discard-empty/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8.6" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-discard-empty/node_modules/source-map": { + "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/tsc-alias/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/tsc-alias/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==", + "node_modules/postcss-discard-overridden/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-discard-overridden/node_modules/postcss": { + "version": "7.0.39", "dev": true, + "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsconfig-paths": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz", - "integrity": "sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==", + "node_modules/postcss-discard-overridden/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-html": { + "version": "0.36.0", "dev": true, + "license": "MIT", "dependencies": { - "json5": "^2.2.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "htmlparser2": "^3.10.0" + }, + "peerDependencies": { + "postcss": ">=5.0.0", + "postcss-syntax": ">=0.36.0" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "node_modules/postcss-less": { + "version": "3.1.4", "dev": true, - "bin": { - "json5": "lib/cli.js" + "license": "MIT", + "dependencies": { + "postcss": "^7.0.14" }, "engines": { - "node": ">=6" + "node": ">=6.14.4" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "node_modules/postcss-less/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" }, - "node_modules/tslint": { - "version": "5.20.1", + "node_modules/postcss-less/node_modules/postcss": { + "version": "7.0.39", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=4.8.0" + "node": ">=6.0.0" }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tslint/node_modules/semver": { - "version": "5.7.1", + "node_modules/postcss-less/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tslint/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/tslint/node_modules/tsutils": { - "version": "2.29.0", + "node_modules/postcss-load-config": { + "version": "2.1.2", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^1.8.1" + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/tsutils": { - "version": "3.21.0", + "node_modules/postcss-load-config/node_modules/cosmiconfig": { + "version": "5.2.1", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^1.8.1" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, "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": ">=4" } }, - "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/tty-browserify": { - "version": "0.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tunnel": { - "version": "0.0.6", + "node_modules/postcss-load-config/node_modules/import-fresh": { + "version": "2.0.0", "dev": true, "license": "MIT", - "optional": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + "node": ">=4" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", + "node_modules/postcss-load-config/node_modules/parse-json": { + "version": "4.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "safe-buffer": "^5.0.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", + "node_modules/postcss-load-config/node_modules/resolve-from": { + "version": "3.0.0", "dev": true, - "license": "Unlicense" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/type-check": { - "version": "0.3.2", + "node_modules/postcss-loader": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2" + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 6" } }, - "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==", + "node_modules/postcss-loader/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "engines": { - "node": ">=4" - } + "license": "ISC" }, - "node_modules/type-fest": { - "version": "0.6.0", + "node_modules/postcss-loader/node_modules/postcss": { + "version": "7.0.39", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 4" } }, - "node_modules/typedarray": { - "version": "0.0.6", + "node_modules/postcss-loader/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", "dev": true, "license": "MIT" }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", "dev": true, "license": "MIT", "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" }, "engines": { - "node": ">=4.2.0" + "node": ">=6.9.0" } }, - "node_modules/uglify-js": { - "version": "3.4.10", + "node_modules/postcss-merge-longhand/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC" + }, + "node_modules/postcss-merge-longhand/node_modules/postcss": { + "version": "7.0.39", + "dev": true, + "license": "MIT", "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/uglify-js/node_modules/source-map": { + "node_modules/postcss-merge-longhand/node_modules/source-map": { "version": "0.6.1", "dev": true, "license": "BSD-3-Clause", @@ -27297,1037 +29687,1098 @@ "node": ">=0.10.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.1", + "node_modules/postcss-merge-rules": { + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true + "node_modules/postcss-merge-rules/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", + "node_modules/postcss-merge-rules/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", "dev": true, "license": "MIT", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", + "node_modules/postcss-merge-rules/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", "dev": true, "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/unified": { - "version": "9.2.1", + "node_modules/postcss-minify-font-values/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-minify-font-values/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/postcss/" } }, - "node_modules/unified/node_modules/is-buffer": { - "version": "2.0.5", + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", "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" - } - ], - "license": "MIT", + "license": "MIT" + }, + "node_modules/postcss-minify-font-values/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", "dev": true, "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/union-value": { - "version": "1.0.1", + "node_modules/postcss-minify-gradients/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-minify-gradients/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/uniq": { - "version": "1.0.1", + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/uniqs": { - "version": "2.0.0", + "node_modules/postcss-minify-gradients/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/unique-filename": { - "version": "1.1.1", - "dev": true, - "license": "ISC", + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "dev": true, + "license": "MIT", "dependencies": { - "unique-slug": "^2.0.0" + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/unique-slug": { - "version": "2.0.2", + "node_modules/postcss-minify-params/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } + "license": "ISC" }, - "node_modules/unique-string": { - "version": "2.0.0", + "node_modules/postcss-minify-params/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "crypto-random-string": "^2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/unist-util-find-all-after": { - "version": "3.0.2", + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-minify-params/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "unist-util-is": "^4.0.0" + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/unist-util-is": { - "version": "4.1.0", + "node_modules/postcss-minify-selectors/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-minify-selectors/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/postcss/" } }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.2" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", + "node_modules/postcss-minify-selectors/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 10.0.0" + "node": ">=0.10.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.5" + }, "engines": { - "node": ">= 0.8" + "node": ">= 6" } }, - "node_modules/unquote": { - "version": "1.1.1", + "node_modules/postcss-modules-extract-imports/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/unset-value": { - "version": "1.0.0", + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", + "node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", "dev": true, "license": "MIT", "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", + "node_modules/postcss-modules-local-by-default/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "isarray": "1.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", + "node_modules/postcss-modules-local-by-default/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/unused-filename": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-2.1.0.tgz", - "integrity": "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==", + "node_modules/postcss-modules-scope": { + "version": "2.2.0", + "dev": true, + "license": "ISC", "dependencies": { - "modify-filename": "^1.1.0", - "path-exists": "^4.0.0" + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/unzip-crx": { - "version": "0.2.0", + "node_modules/postcss-modules-scope/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT", - "dependencies": { - "jszip": "^3.1.0", - "mkdirp": "^0.5.1", - "yaku": "^0.16.6" - } + "license": "ISC" }, - "node_modules/unzip-crx-3": { - "version": "0.2.0", + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "jszip": "^3.1.0", - "mkdirp": "^0.5.1", - "yaku": "^0.16.6" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/upath": { - "version": "1.2.0", + "node_modules/postcss-modules-scope/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=4", - "yarn": "*" + "node": ">=0.10.0" } }, - "node_modules/update-notifier": { - "version": "5.1.0", + "node_modules/postcss-modules-values": { + "version": "3.0.0", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" } }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/postcss-modules-values/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "ISC" }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.2", + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/update-notifier/node_modules/ci-info": { - "version": "2.0.0", + "node_modules/postcss-modules-values/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "postcss": "^7.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.9.0" } }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", + "node_modules/postcss-normalize-charset/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/postcss-normalize-charset/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/update-notifier/node_modules/import-lazy": { - "version": "2.1.0", + "node_modules/postcss-normalize-charset/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/update-notifier/node_modules/is-ci": { - "version": "2.0.0", + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "ci-info": "^2.0.0" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/postcss-normalize-display-values/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/upper-case": { - "version": "1.1.3", + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", + "node_modules/postcss-normalize-display-values/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/url": { - "version": "0.11.0", + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/url-loader": { - "version": "2.3.0", + "node_modules/postcss-normalize-positions/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-normalize-positions/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0" + "node": ">=6.0.0" }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/url-parse": { - "version": "1.5.10", + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "license": "MIT" + }, + "node_modules/postcss-normalize-positions/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "prepend-http": "^2.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/url-parse-lax/node_modules/prepend-http": { - "version": "2.0.0", + "node_modules/postcss-normalize-repeat-style/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/use": { - "version": "3.1.1", + "node_modules/postcss-normalize-repeat-style/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "dev": true, - "license": "WTFPL" - }, - "node_modules/util": { - "version": "0.11.1", + "node_modules/postcss-normalize-string": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "inherits": "2.0.3" + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" + "node_modules/postcss-normalize-string/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" }, - "node_modules/util.promisify": { - "version": "1.0.1", + "node_modules/postcss-normalize-string/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/utila": { - "version": "0.4.0", + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", + "node_modules/postcss-normalize-string/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "node_modules/uuid": { - "version": "3.4.0", + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", "dev": true, "license": "MIT", - "bin": { - "uuid": "bin/uuid" + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/uuid-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", - "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==" - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/postcss-normalize-timing-functions/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "license": "ISC" }, - "node_modules/vary": { - "version": "1.1.2", + "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vendors": { - "version": "1.0.4", + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "license": "MIT" }, - "node_modules/verror": { - "version": "1.10.0", + "node_modules/postcss-normalize-timing-functions/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/vfile": { - "version": "4.2.1", + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/vfile-message": { - "version": "2.0.4", + "node_modules/postcss-normalize-unicode/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/is-buffer": { - "version": "2.0.5", - "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" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vm-browserify": { - "version": "1.1.2", + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/vue": { - "version": "3.2.31", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.2.31", - "@vue/compiler-sfc": "3.2.31", - "@vue/runtime-dom": "3.2.31", - "@vue/server-renderer": "3.2.31", - "@vue/shared": "3.2.31" - } - }, - "node_modules/vue-class-component": { - "version": "8.0.0-rc.1", - "license": "MIT", - "peerDependencies": { - "vue": "^3.0.0" + "node_modules/postcss-normalize-unicode/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder": { - "version": "2.1.1", + "node_modules/postcss-normalize-url": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "@vue/cli-shared-utils": "^4.5.6", - "chokidar": "^3.0.2", - "electron-builder": "^22.2.0", - "execa": "^5.0.0", - "friendly-errors-webpack-plugin": "^1.7.0", - "fs-extra": "^9.0.1", - "lodash.merge": "^4.6.1", - "portfinder": "^1.0.16", - "pumpify": "^2.0.1", - "semver": "^7.3.2", - "shebang-loader": "^0.0.1", - "split2": "^3.0.0", - "terser-webpack-plugin": "^3.0.3", - "through2-filter": "^3.0.0", - "through2-map": "^3.0.0", - "unzip-crx": "^0.2.0", - "webpack": "^4.18.0", - "webpack-chain": "^6.0.0", - "webpack-merge": "^4.2.2", - "yargs": "^15.3.1" + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/nklayman" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/postcss-normalize-url/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-normalize-url/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/cacache": { - "version": "15.2.0", + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/postcss-normalize-url/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/chownr": { - "version": "2.0.0", + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/cliui": { - "version": "6.0.0", + "node_modules/postcss-normalize-whitespace/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } + "license": "ISC" }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/postcss-normalize-whitespace/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/color-name": { - "version": "1.1.4", + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, "license": "MIT" }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/postcss-normalize-whitespace/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/duplexify": { + "node_modules/postcss-ordered-values": { "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/execa": { - "version": "5.1.1", + "node_modules/postcss-ordered-values/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-ordered-values/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/fs-extra": { - "version": "9.1.0", + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/postcss-ordered-values/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", "dev": true, "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/human-signals": { - "version": "2.1.0", + "node_modules/postcss-reduce-initial/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "license": "ISC" }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/is-stream": { - "version": "2.0.1", + "node_modules/postcss-reduce-initial/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=8" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/jest-worker": { - "version": "26.6.2", + "node_modules/postcss-reduce-initial/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">= 10.13.0" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", "dev": true, "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/postcss-reduce-transforms/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, + "license": "MIT" + }, + "node_modules/postcss-reduce-transforms/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/onetime": { - "version": "5.1.2", + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-safe-parser": { + "version": "4.0.2", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "postcss": "^7.0.26" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/p-limit": { - "version": "3.1.0", + "node_modules/postcss-safe-parser/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-safe-parser/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/p-map": { - "version": "4.0.0", + "node_modules/postcss-safe-parser/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/path-key": { - "version": "3.1.1", + "node_modules/postcss-sass": { + "version": "0.4.4", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/pumpify": { - "version": "2.0.1", + "node_modules/postcss-sass/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" - } + "license": "ISC" }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/postcss-sass/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 6" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/postcss-sass/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss-scss": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "postcss": "^7.0.6" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/postcss-scss/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-scss/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=8" + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/source-map": { + "node_modules/postcss-scss/node_modules/source-map": { "version": "0.6.1", "dev": true, "license": "BSD-3-Clause", @@ -28335,2564 +30786,12591 @@ "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/ssri": { - "version": "8.0.1", + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, - "license": "ISC", "dependencies": { - "minipass": "^3.1.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/postcss-svgo": { + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/terser-webpack-plugin": { - "version": "3.1.0", + "node_modules/postcss-svgo/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-svgo/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.2.1", - "p-limit": "^3.0.2", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.8.0", - "webpack-sources": "^1.4.3" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">=6.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/which": { - "version": "2.0.2", + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "license": "MIT" + }, + "node_modules/postcss-svgo/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/postcss-syntax": { + "version": "0.36.2", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" + "peerDependencies": { + "postcss": ">=5.0.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/yargs": { - "version": "15.4.1", + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/vue-cli-plugin-electron-builder/node_modules/yargs-parser": { - "version": "18.1.3", + "node_modules/postcss-unique-selectors/node_modules/picocolors": { + "version": "0.2.1", "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } + "license": "ISC" }, - "node_modules/vue-eslint-parser": { - "version": "7.6.0", + "node_modules/postcss-unique-selectors/node_modules/postcss": { + "version": "7.0.39", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "eslint-scope": "^5.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.15" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=8.10" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5.0.0" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/vue-final-modal": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/vue-final-modal/-/vue-final-modal-3.4.4.tgz", - "integrity": "sha512-4nOLU+cMcUqAT0kg+64+Hi96kkQPOph2LOJa7Fl58BXlTyhfRxaMuz3M91wi2ooMIL4poWA8428P5GIAXSpuZg==" + "node_modules/postcss-unique-selectors/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/vue-hot-reload-api": { - "version": "2.3.4", + "node_modules/postcss-value-parser": { + "version": "4.1.0", "dev": true, "license": "MIT" }, - "node_modules/vue-loader": { - "version": "15.9.8", - "dev": true, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + "bin": { + "nanoid": "bin/nanoid.cjs" }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/vue-loader/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-property-decorator": { - "version": "10.0.0-rc.3", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-10.0.0-rc.3.tgz", - "integrity": "sha512-EGqjf8Lq+kTausZzfLB1ynWOcyay8ZLAc5p2VlKGEX2q+BjYw84oZxr6IcdwuxGIdNmriZqPUX6AlAluBdnbEg==", + "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, - "peerDependencies": { - "vue": "*", - "vue-class-component": "*" - } - }, - "node_modules/vue-router": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz", - "integrity": "sha512-XvK81bcYglKiayT7/vYAg/f36ExPC4t90R/HIpzrZ5x+17BOWptXLCrEPufGgZeuq68ww4ekSIMBZY1qdUdfjA==", - "dependencies": { - "@vue/devtools-api": "^6.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/vue-style-loader": { - "version": "4.1.3", + "node_modules/prepend-http": { + "version": "1.0.4", "dev": true, "license": "MIT", - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/vue-style-loader/node_modules/hash-sum": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/vue-template-es2015-compiler": { - "version": "1.9.1", + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT" - }, - "node_modules/vue3-click-away": { - "version": "1.2.4", - "license": "MIT" - }, - "node_modules/vue3-popper": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vue3-popper/-/vue3-popper-1.5.0.tgz", - "integrity": "sha512-xaEnx90YBnlSg5G2yWqm2DHWHg+DB99UVRp4VsyTF0QLXyHrqSuE1Xo5+sG0AQq/lBcrGMlk5NU5xE2MDLKViw==", - "dependencies": { - "@popperjs/core": "^2.9.2", - "debounce": "^1.2.1" + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=12" + "node": ">=10.13.0" }, - "peerDependencies": { - "vue": "^3.2.20" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/watchpack": { - "version": "1.7.5", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "fast-diff": "^1.1.2" }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", + "node_modules/pretty-error": { + "version": "2.1.2", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "optional": true, "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "remove-trailing-separator": "^1.0.1" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", + "node_modules/pretty-format/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, "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", + "node_modules/pretty-format/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, "license": "MIT", - "optional": true, "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "color-convert": "^2.0.1" }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent": { - "version": "3.1.0", + "node_modules/pretty-format/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, - "license": "ISC", - "optional": true, + "license": "MIT", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/pretty-format/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, + "license": "MIT" + }, + "node_modules/process": { + "version": "0.11.10", "dev": true, "license": "MIT", - "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, "dependencies": { - "is-extglob": "^2.1.0" + "fromentries": "^1.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "node_modules/progress": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { "version": "1.0.1", "dev": true, + "license": "ISC" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "binary-extensions": "^1.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, "engines": { - "node": ">=0.10" + "node": ">= 8" } }, - "node_modules/wbuf": { - "version": "1.7.3", + "node_modules/proto-list": { + "version": "1.2.4", + "devOptional": true, + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", "dev": true, "license": "MIT", "dependencies": { - "minimalistic-assert": "^1.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/wcwidth": { + "node_modules/prr": { "version": "1.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" + "license": "MIT" + }, + "node_modules/ps-list": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-7.2.0.tgz", + "integrity": "sha512-v4Bl6I3f2kJfr5o80ShABNHAokIgY+wFDTQfE+X3zWYgSGQOCBeYptLZUpoOALBqO5EawmDN/tjTldJesd0ujQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "node_modules/pseudomap": { + "version": "1.0.2", + "dev": true, + "license": "ISC" }, - "node_modules/webpack": { - "version": "4.46.0", + "node_modules/psl": { + "version": "1.8.0", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/webpack-bundle-analyzer": { - "version": "3.9.0", + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 6.14.4" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "7.4.1", + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.0", "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/webpack-chain": { - "version": "6.5.1", + "node_modules/pumpify": { + "version": "1.5.1", "dev": true, - "license": "MPL-2.0", + "license": "MIT", "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "engines": { - "node": ">=8" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, - "node_modules/webpack-chain/node_modules/deepmerge": { - "version": "1.5.2", + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "dev": true, + "node_modules/punycode": { + "version": "2.1.1", "license": "MIT", - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">=6" } }, - "node_modules/webpack-dev-server": { - "version": "3.11.3", - "dev": true, + "node_modules/pupa": { + "version": "2.1.1", "license": "MIT", "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "escape-goat": "^2.0.0" }, "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/q": { + "version": "1.5.1", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0", + "teleport": ">=0.2.0" } }, - "node_modules/webpack-dev-server/node_modules/anymatch": { - "version": "2.0.0", + "node_modules/qs": { + "version": "6.5.2", "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" } }, - "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", + "node_modules/query-string": { + "version": "4.3.4", "dev": true, "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", + "node_modules/querystring": { + "version": "0.2.0", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.4.x" } }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", + "node_modules/querystring-es3": { + "version": "0.2.1", "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" + "engines": { + "node": ">=0.4.x" } }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", + "node_modules/querystringify": { + "version": "2.2.0", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/rambda": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.2.1.tgz", + "integrity": "sha512-Wswj8ZvzdI3VhaGPkZAxaCTwuMmGtgWt7Zxsgyo4P+iTmVnkojvyWaOep5q3ZjMIecW0wtQa66GWxaKkZ24RAA==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "^5.1.0" } }, - "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { - "version": "0.19.1", + "node_modules/randomfill": { + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "node_modules/webpack-dev-server/node_modules/is-absolute-url": { - "version": "3.0.3", + "node_modules/range-parser": { + "version": "1.2.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/webpack-dev-server/node_modules/is-binary-path": { - "version": "1.0.1", + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, - "license": "MIT", "dependencies": { - "binary-extensions": "^1.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", + "node_modules/rc": { + "version": "1.2.8", "dev": true, - "license": "MIT", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "engines": { - "node": ">=0.10" + "bin": { + "rc": "cli.js" } }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", + "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, + "license": "MIT" + }, + "node_modules/read-config-file": { + "version": "6.2.0", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "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": ">= 4" + "node": ">=12.0.0" } }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.0", + "node_modules/read-config-file/node_modules/argparse": { + "version": "2.0.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Python-2.0" + }, + "node_modules/read-config-file/node_modules/dotenv": { + "version": "9.0.2", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" } }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/read-config-file/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", + "node_modules/read-pkg": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/webpack-log": { - "version": "2.0.0", + "node_modules/read-pkg-up": { + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-merge": { - "version": "4.2.2", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" } }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "dev": true, + "node_modules/readable-stream": { + "version": "2.3.7", "license": "MIT", "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.3", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.10.0" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/redent": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", + "node_modules/redent/node_modules/strip-indent": { + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "min-indent": "^1.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, - "node_modules/websocket-extensions": { - "version": "0.1.4", + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/reftools": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", + "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } + "node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" }, - "node_modules/which": { - "version": "1.3.1", + "node_modules/regenerate-unicode-properties": { + "version": "9.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "regenerate": "^1.4.2" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=4" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.14.5", "dev": true, "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/runtime": "^7.8.4" } }, - "node_modules/which-module": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/wide-align": { - "version": "1.1.5", + "node_modules/regex-not": { + "version": "1.0.2", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/widest-line": { - "version": "3.1.0", + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dev": true, - "license": "MIT", "dependencies": { - "string-width": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.3", + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/worker-farm": { - "version": "1.7.0", + "node_modules/regexpu-core": { + "version": "4.8.0", "dev": true, "license": "MIT", "dependencies": { - "errno": "~0.1.7" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/worker-rpc": { - "version": "0.1.1", + "node_modules/registry-auth-token": { + "version": "4.2.1", "dev": true, "license": "MIT", "dependencies": { - "microevent.ts": "~0.1.1" + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { + "node_modules/registry-url": { "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "rc": "^1.2.8" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "7.0.3", + "node_modules/regjsgen": { + "version": "0.5.2", "dev": true, "license": "MIT" }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/regjsparser": { + "version": "0.7.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" + "bin": { + "jsesc": "bin/jsesc" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/relateurl": { + "version": "0.2.7", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.10" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/write": { - "version": "1.0.3", + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, - "license": "MIT", "dependencies": { - "mkdirp": "^0.5.1" + "es6-error": "^4.0.1" }, "engines": { "node": ">=4" } }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "6.2.2", + "node_modules/remark": { + "version": "13.0.0", "dev": true, "license": "MIT", "dependencies": { - "async-limiter": "~1.0.0" + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", + "node_modules/remark-parse": { + "version": "9.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/xtend": { - "version": "4.0.2", + "node_modules/remark-stringify": { + "version": "9.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4" + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/y18n": { - "version": "4.0.3", + "node_modules/remove-trailing-separator": { + "version": "1.1.0", "dev": true, "license": "ISC" }, - "node_modules/yaku": { - "version": "0.16.7", + "node_modules/renderkid": { + "version": "2.0.7", "dev": true, - "license": "MIT" - }, - "node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } }, - "node_modules/yaml": { - "version": "1.10.2", + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "node_modules/renderkid/node_modules/css-select": { + "version": "4.1.3", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "argparse": "^1.0.7", - "glob": "^7.0.5" + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" }, - "bin": { - "json2yaml": "bin/json2yaml", - "yaml2json": "bin/yaml2json" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/yargs": { - "version": "13.3.2", + "node_modules/renderkid/node_modules/css-what": { + "version": "5.1.0", "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/yargs-parser": { - "version": "13.1.2", + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.3.2", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/renderkid/node_modules/domelementtype": { + "version": "2.2.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.2.2", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", "dev": true, - "engines": { - "node": ">=10" + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", "dev": true, - "engines": { - "node": ">=8" + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "7.0.3", + "node_modules/renderkid/node_modules/nth-check": { + "version": "2.0.1", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } }, - "node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/repeat-element": { + "version": "1.1.4", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/repeat-string": { + "version": "1.6.1", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/request": { + "version": "2.88.2", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "p-limit": "^2.0.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", + "node_modules/require-directory": { + "version": "2.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "dev": true, + "node_modules/require-from-string": { + "version": "2.0.2", "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=6" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yauzl": { - "version": "2.10.0", + "node_modules/resolve-cwd": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/yn": { - "version": "3.1.1", + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", + "node_modules/resolve-from": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/yorkie": { - "version": "2.0.0", + "node_modules/resolve-global": { + "version": "1.0.0", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" + "global-dirs": "^0.1.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/yorkie/node_modules/cross-spawn": { - "version": "5.1.0", + "node_modules/resolve-url": { + "version": "0.2.1", "dev": true, + "license": "MIT" + }, + "node_modules/responselike": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lowercase-keys": "^1.0.0" } }, - "node_modules/yorkie/node_modules/execa": { - "version": "0.8.0", + "node_modules/restore-cursor": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=4" } }, - "node_modules/yorkie/node_modules/get-stream": { - "version": "3.0.0", + "node_modules/ret": { + "version": "0.1.15", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.12" } }, - "node_modules/yorkie/node_modules/lru-cache": { - "version": "4.1.5", + "node_modules/retry": { + "version": "0.12.0", "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "node_modules/yorkie/node_modules/normalize-path": { - "version": "1.0.0", + "node_modules/reusify": { + "version": "1.0.4", "dev": true, "license": "MIT", "engines": { + "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/yorkie/node_modules/yallist": { - "version": "2.1.2", + "node_modules/rfdc": { + "version": "1.3.0", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/zwitch": { - "version": "1.0.5", + "node_modules/rgb-regex": { + "version": "1.0.1", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "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": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/isaacs" } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + }, + "node_modules/ripemd160": { + "version": "2.0.2", "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "@babel/compat-data": { - "version": "7.14.0", - "dev": true - }, - "@babel/core": { - "version": "7.14.3", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.3", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.2", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.3", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, + "node_modules/roarr": { + "version": "2.15.4", + "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "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" } }, - "@babel/generator": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", - "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.2", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", "dev": true, - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "fsevents": "~2.3.2" } }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "engines": { + "node": "6.* || >= 7.*" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.0", + "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, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "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" } }, - "@babel/helper-compilation-targets": { - "version": "7.13.16", + "node_modules/run-queue": { + "version": "1.0.3", "dev": true, - "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, + "license": "ISC", "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "aproba": "^1.1.1" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", + "node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT" + }, + "node_modules/safe-regex": { + "version": "1.1.0", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "regexpu-core": "^4.7.1" + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.4", + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "node_modules/safer-buffer": { + "version": "2.1.2", "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "license": "MIT" }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", "dev": true, - "requires": { - "@babel/types": "^7.16.0" + "license": "MIT", + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "node_modules/sanitize-filename": { + "version": "1.6.3", "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "node_modules/sass": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "dev": true, - "requires": { - "@babel/types": "^7.17.0" + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "@babel/helper-module-imports": { - "version": "7.13.12", + "node_modules/sass-embedded": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.90.0.tgz", + "integrity": "sha512-XP1EltyLLfuU5FsGVjSz8PcT925oA3rDnJTWOEBHR42k62ZEbKTcZ4gVlFwKi0Ggzi5E8v1K2BplD8ELHwusYg==", "dev": true, - "requires": { - "@babel/types": "^7.13.12" + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.5.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-all-unknown": "1.90.0", + "sass-embedded-android-arm": "1.90.0", + "sass-embedded-android-arm64": "1.90.0", + "sass-embedded-android-riscv64": "1.90.0", + "sass-embedded-android-x64": "1.90.0", + "sass-embedded-darwin-arm64": "1.90.0", + "sass-embedded-darwin-x64": "1.90.0", + "sass-embedded-linux-arm": "1.90.0", + "sass-embedded-linux-arm64": "1.90.0", + "sass-embedded-linux-musl-arm": "1.90.0", + "sass-embedded-linux-musl-arm64": "1.90.0", + "sass-embedded-linux-musl-riscv64": "1.90.0", + "sass-embedded-linux-musl-x64": "1.90.0", + "sass-embedded-linux-riscv64": "1.90.0", + "sass-embedded-linux-x64": "1.90.0", + "sass-embedded-unknown-all": "1.90.0", + "sass-embedded-win32-arm64": "1.90.0", + "sass-embedded-win32-x64": "1.90.0" + } + }, + "node_modules/sass-embedded-all-unknown": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.90.0.tgz", + "integrity": "sha512-/n7jTQvI+hftDDrHzK19G4pxfDzOhtjuQO1K54ui1pT2S0sWfWDjCYUbQgtWQ6FO7g5qWS0hgmrWdc7fmS3rgA==", + "cpu": [ + "!arm", + "!arm64", + "!riscv64", + "!x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "sass": "1.90.0" } }, - "@babel/helper-module-transforms": { - "version": "7.14.2", + "node_modules/sass-embedded-android-arm": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.90.0.tgz", + "integrity": "sha512-usF6kVJQWa1CMgPH1nCT1y8KEmAT2fzB00dDIPBYHq8U5VZLCihi2bJRP5U9NlcwP1TlKGKCjwsbIdSjDKfecg==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.14.0", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "node_modules/sass-embedded-android-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.90.0.tgz", + "integrity": "sha512-bkTlewzWksa6Sj4Zs1CWiutnvUbsO3xuYh2QBRknXsOtuMlfTPoXnwhCnyE4lSvUxw2qxSbv+NdQev9qMfsBgA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.0", + "node_modules/sass-embedded-android-riscv64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.90.0.tgz", + "integrity": "sha512-bpqCIOaX+0Lou/BNJ4iJIKbWbVaYXFdg26C3gG6gxxKZRzp/6OYCxHrIQDwhKz6YC8Q5rwNPMpfDVYbWPcgroA==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.0", - "@babel/types": "^7.16.0" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "node_modules/sass-embedded-android-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.90.0.tgz", + "integrity": "sha512-GNxVKnCMd/p2icZ+Q4mhvNk19NrLXq1C4guiqjrycHYQLEnxRkjbW1QXYiL+XyDn4e+Bcq0knzG0I9pMuNZxkg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-simple-access": { - "version": "7.13.12", + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.90.0.tgz", + "integrity": "sha512-qr4KBMJfBA+lzXiWnP00qzpLzHQzGd1OSK3VHcUFjZ8l7VOYf2R7Tc3fcTLhpaNPMJtTK0jrk8rFqBvsiZExnA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@babel/types": "^7.13.12" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", + "node_modules/sass-embedded-darwin-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.90.0.tgz", + "integrity": "sha512-z2nr1nNqtWDLVRwTbHtL7zriK90U7O/Gb15UaCSMYeAz9Y+wog5s/sDEKm0+GsVdzzkaCaMZRWGN4jTilnUwmQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@babel/types": "^7.16.0" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "node_modules/sass-embedded-linux-arm": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.90.0.tgz", + "integrity": "sha512-FeBxI5Q2HvM3CCadcEcQgvWbDPVs2YEF0PZ87fbAVTCG8dV+iNnQreSz7GRJroknpvbRhm5t2gedvcgmTnPb2Q==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.16.0", + "node_modules/sass-embedded-linux-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.90.0.tgz", + "integrity": "sha512-SPMcGZuP71Fj8btCGtlBnv8h8DAbJn8EQfLzXs9oo6NGFFLVjNGiFpqGfgtUV6DLWCuaRyEFeViO7wZow/vKGQ==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/helpers": { - "version": "7.14.0", + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.90.0.tgz", + "integrity": "sha512-EB2z0fUXdUdvSoddf4DzdZQkD/xyreD72gwAi8YScgUvR4HMXI7bLcK/n78Rft6OnqvV8090hjC8FsLDo3x5xQ==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.90.0.tgz", + "integrity": "sha512-xLH7+PFq763MoEm3vI7hQk5E+nStiLWbijHEYW/tEtCbcQIphgzSkDItEezxXew3dU4EJ1jqrBUySPdoXFLqWA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/parser": { - "version": "7.17.7" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.90.0.tgz", + "integrity": "sha512-L21UkOgnSrD+ERF+jo1IWneGv40t0ap9+3cI+wZWYhQS5MkxponhT9QaNU57JEDJwB9mOl01LVw14opz4SN+VQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.90.0.tgz", + "integrity": "sha512-NeAycQlsdhFdnIeSmRmScYUyCd+uE+x15NLFunbF8M0PgCKurrUhaxgGKSuBbaK56FpxarKOHCqcOrWbemIGzQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.0", + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.90.0.tgz", + "integrity": "sha512-lJopaQhW8S+kaQ61vMqq3c+bOurcf9RdZf2EmzQYpc2y1vT5cWfRNrRkbAgO/23IQxsk/fq3UIUnsjnyQmi6MA==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "node_modules/sass-embedded-linux-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.90.0.tgz", + "integrity": "sha512-Cc061gBfMPwH9rN7neQaH36cvOQC+dFMSGIeX5qUOhrEL4Ng51iqBV6aI4RIB1jCFGth6eDydVRN1VdV9qom8A==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.16.0", + "node_modules/sass-embedded-unknown-all": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.90.0.tgz", + "integrity": "sha512-DBGzHVCJDqtjTHZFohush9YTxd4ZxhIygIRTNRXnA0359woF9Z8AS7/YxfzwkqrTX5durSJa6ZamGFYVLoRphQ==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "license": "MIT", + "optional": true, + "os": [ + "!android", + "!darwin", + "!linux", + "!win32" + ], + "dependencies": { + "sass": "1.90.0" } }, - "@babel/plugin-proposal-decorators": { - "version": "7.16.0", + "node_modules/sass-embedded-win32-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.90.0.tgz", + "integrity": "sha512-c3/vL/CATnaW3x/6kcNbCROEOUU7zvJpIURp7M9664GJj08/gLPRWKNruw0OkAPQ3C5TTQz7+/fQWEpRA6qmvA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-decorators": "^7.16.0" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.0", + "node_modules/sass-embedded-win32-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.90.0.tgz", + "integrity": "sha512-PFwdW7AYtCkwi3NfWFeexvIZEJ0nuShp8Bjjc3px756+18yYwBWa78F4TGdIQmJfpYKBhgkVjFOctwq+NCHntA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.0", + "node_modules/sass-embedded/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, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.0", + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.0", + "node_modules/sass-graph": { + "version": "2.2.5", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "license": "MIT", + "dependencies": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "bin": { + "sassgraph": "bin/sassgraph" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.0", + "node_modules/sass-loader": { + "version": "10.2.0", "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.0" - }, + "license": "MIT", "dependencies": { - "@babel/compat-data": { - "version": "7.16.0", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.16.3", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - } - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true - }, - "browserslist": { - "version": "4.17.6", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "electron-to-chromium": { - "version": "1.3.894", - "dev": true + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true }, - "node-releases": { - "version": "2.0.1", - "dev": true + "node-sass": { + "optional": true }, - "semver": { - "version": "6.3.0", - "dev": true + "sass": { + "optional": true } } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.0", + "node_modules/sass-loader/node_modules/loader-utils": { + "version": "2.0.2", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.0", + "node_modules/sass-loader/node_modules/schema-utils": { + "version": "3.1.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.0", + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "optional": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.0", + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.0", + "node_modules/sax": { + "version": "1.2.4", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" } }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", + "node_modules/schema-utils": { + "version": "2.7.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", + "node_modules/scss-tokenizer": { + "version": "0.2.3", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "license": "MIT", + "dependencies": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" } }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", + "node_modules/scss-tokenizer/node_modules/source-map": { + "version": "0.4.4", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "BSD-3-Clause", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" } }, - "@babel/plugin-syntax-decorators": { - "version": "7.16.0", + "node_modules/select-hose": { + "version": "2.0.0", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } + "license": "MIT" }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", + "node_modules/selfsigned": { + "version": "1.10.11", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "node-forge": "^0.10.0" } }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "node_modules/semver": { + "version": "7.3.5", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", + "node_modules/semver-compare": { + "version": "1.0.0", + "license": "MIT", + "optional": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.0", + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "ms": "2.0.0" } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "engines": { + "node": ">= 0.8" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": ">= 0.8" } }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "node_modules/sentence-case/node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "node_modules/sentence-case/node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.16.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "node_modules/serialize-error": { + "version": "7.0.1", + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.0", + "node_modules/serialize-javascript": { + "version": "4.0.0", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.16.0" - }, + "license": "BSD-3-Clause", "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - } + "randombytes": "^2.1.0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.0", + "node_modules/serve-index": { + "version": "1.9.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.0", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "@babel/plugin-transform-classes": { - "version": "7.16.0", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "globals": "^11.1.0" + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.0", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } + "license": "ISC" }, - "@babel/plugin-transform-destructuring": { - "version": "7.16.0", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } + "license": "MIT" }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.0", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } + "license": "ISC" }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.0", + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.0", + "node_modules/set-blocking": { + "version": "2.0.0", "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - } + "license": "ISC" }, - "@babel/plugin-transform-for-of": { - "version": "7.16.0", + "node_modules/set-immediate-shim": { + "version": "1.0.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-function-name": { - "version": "7.16.0", + "node_modules/set-value": { + "version": "2.0.1", "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-literals": { - "version": "7.16.0", + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.0", + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.0", + "node_modules/setimmediate": { + "version": "1.0.5", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - } + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.0", + "node_modules/shebang-command": { + "version": "1.2.0", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.16.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - } + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.0", + "node_modules/shebang-loader": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.7.2", + "dev": true, + "license": "MIT" + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/should": { + "version": "13.2.3", + "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", + "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.15.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - } + "should-equal": "^2.0.0", + "should-format": "^3.0.3", + "should-type": "^1.4.0", + "should-type-adaptors": "^1.0.1", + "should-util": "^1.0.0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.0", + "node_modules/should-equal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", + "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" - }, "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - } + "should-type": "^1.4.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.0", + "node_modules/should-format": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", + "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "dependencies": { + "should-type": "^1.3.0", + "should-type-adaptors": "^1.0.1" } }, - "@babel/plugin-transform-new-target": { - "version": "7.16.0", + "node_modules/should-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", + "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", + "dev": true + }, + "node_modules/should-type-adaptors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", + "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "dependencies": { + "should-type": "^1.3.0", + "should-util": "^1.0.0" } }, - "@babel/plugin-transform-object-super": { - "version": "7.16.0", + "node_modules/should-util": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", + "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.16.0" + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" } }, - "@babel/plugin-transform-parameters": { - "version": "7.16.3", + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT" + }, + "node_modules/sinon": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.0", + "node_modules/sinon/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "engines": { + "node": ">=0.3.1" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.16.0", + "node_modules/sinon/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, - "requires": { - "regenerator-transform": "^0.14.2" + "engines": { + "node": ">=8" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.0", + "node_modules/sinon/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, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/plugin-transform-runtime": { - "version": "7.16.0", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.3", - "babel-plugin-polyfill-corejs3": "^0.3.0", - "babel-plugin-polyfill-regenerator": "^0.2.3", - "semver": "^6.3.0" + "license": "MIT" + }, + "node_modules/slash": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi/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==", "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.0", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.0", + "node_modules/slice-ansi/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/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==" + }, + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "@babel/plugin-transform-spread": { - "version": "7.16.0", + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "license": "MIT", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.0", + "node_modules/snapdragon-node": { + "version": "2.1.1", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.0", + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.0", + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-typescript": { - "version": "7.16.1", + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.0", + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.0", + "node_modules/snapdragon-util": { + "version": "3.0.1", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/preset-env": { - "version": "7.16.0", + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/sockjs": { + "version": "0.3.21", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.3" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dependencies": { + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.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/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "license": "MIT" + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/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/spdx-correct": { + "version": "3.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.9", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/spdy": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/specificity": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "bin": { + "specificity": "bin/specificity" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "license": "MIT" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stdout-stream": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strong-globalize": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-6.0.5.tgz", + "integrity": "sha512-7nfUli41TieV9/TSc0N62ve5Q4nfrpy/T0nNNy6TyD3vst79QWmeylCyd3q1gDxh8dqGEtabLNCdPQP1Iuvecw==", + "dependencies": { + "accept-language": "^3.0.18", + "debug": "^4.2.0", + "globalize": "^1.6.0", + "lodash": "^4.17.20", + "md5": "^2.3.0", + "mkdirp": "^1.0.4", + "os-locale": "^5.0.0", + "yamljs": "^0.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/strong-globalize/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/stylehacks/node_modules/postcss": { + "version": "7.0.39", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint": { + "version": "13.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^2.0.0", + "chalk": "^4.1.1", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.3", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.21.0", + "lodash": "^4.17.21", + "log-symbols": "^4.1.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.5", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.2", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.6.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^3.0.3" + }, + "bin": { + "stylelint": "bin/stylelint.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "stylelint": "^13.13.0" + } + }, + "node_modules/stylelint-config-recommended-scss": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^5.0.0" + }, + "peerDependencies": { + "stylelint": "^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "stylelint-scss": "^3.0.0" + } + }, + "node_modules/stylelint-scss": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "stylelint": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0" + } + }, + "node_modules/stylelint/node_modules/@nodelib/fs.stat": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/stylelint/node_modules/ajv": { + "version": "8.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/stylelint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/chalk": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "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/stylelint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/stylelint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/fast-glob": { + "version": "3.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/get-stdin": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/hosted-git-info": { + "version": "4.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "5.1.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/stylelint/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/meow": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/micromatch": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/stylelint/node_modules/normalize-package-data": { + "version": "3.0.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stylelint/node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/stylelint/node_modules/postcss": { + "version": "7.0.39", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/slice-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/stylelint/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/table": { + "version": "6.7.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/stylelint/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/stylelint/node_modules/type-fest": { + "version": "0.18.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/stylelint/node_modules/yargs-parser": { + "version": "20.2.7", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/sugarss": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" + } + }, + "node_modules/sugarss/node_modules/picocolors": { + "version": "0.2.1", + "dev": true, + "license": "ISC" + }, + "node_modules/sugarss/node_modules/postcss": { + "version": "7.0.39", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/sugarss/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/superagent": { + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", + "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/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/superagent/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/superagent/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/supertest": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", + "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", + "dev": true, + "dependencies": { + "methods": "^1.1.2", + "superagent": "^8.0.5" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "dev": true + }, + "node_modules/svgo": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "dev": true, + "license": "ISC", + "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/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "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/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.6.tgz", + "integrity": "sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2-map": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "~2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tmp-promise/node_modules/tmp": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/touch/node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/true-case-path": { + "version": "1.0.3", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "glob": "^7.1.2" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "dev": true, + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "jest": ">=26 <27", + "typescript": ">=3.8 <5.0" + } + }, + "node_modules/ts-jest/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8.6" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/ts-loader/node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/ts-loader/node_modules/micromatch": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/ts-loader/node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/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/ts-pnp": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsc-alias": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.6.4.tgz", + "integrity": "sha512-IXc4yh5onnSvocRU/US/TKm5L6/fh+PLsyFHKn/wI/rNs3GouiDngGgf/XIWo6z+HMR+Y0Pa0EwpZ7ZLR/c9sQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.3", + "commander": "^9.0.0", + "globby": "^11.0.4", + "mylas": "^2.1.9", + "normalize-path": "^3.0.0" + }, + "bin": { + "tsc-alias": "dist/bin/index.js" + } + }, + "node_modules/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/node_modules/commander": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", + "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsc-alias/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/tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz", + "integrity": "sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q==", + "dev": true, + "dependencies": { + "json5": "^2.2.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/tslint": { + "version": "5.20.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/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/tslint/node_modules/tsutils": { + "version": "2.29.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "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/tty-browserify": { + "version": "0.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "license": "Unlicense" + }, + "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.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.4.10", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "dev": true, + "license": "MIT" + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified": { + "version": "9.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-buffer": { + "version": "2.0.5", + "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" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unified/node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-util-find-all-after": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unused-filename": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-2.1.0.tgz", + "integrity": "sha512-BMiNwJbuWmqCpAM1FqxCTD7lXF97AvfQC8Kr/DIeA6VtvhJaMDupZ82+inbjl5yVP44PcxOuCSxye1QMS0wZyg==", + "dependencies": { + "modify-filename": "^1.1.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unzip-crx": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "jszip": "^3.1.0", + "mkdirp": "^0.5.1", + "yaku": "^0.16.6" + } + }, + "node_modules/unzip-crx-3": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "jszip": "^3.1.0", + "mkdirp": "^0.5.1", + "yaku": "^0.16.6" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "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/update-notifier/node_modules/ci-info": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/update-notifier/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/update-notifier/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/update-notifier/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/node_modules/import-lazy": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/update-notifier/node_modules/is-ci": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/update-notifier/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/url": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-parse-lax/node_modules/prepend-http": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "dev": true, + "license": "MIT" + }, + "node_modules/use": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "dev": true, + "license": "WTFPL" + }, + "node_modules/util": { + "version": "0.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/utila": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/uuid-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", + "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==" + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.5", + "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" + } + ], + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.2.31", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-sfc": "3.2.31", + "@vue/runtime-dom": "3.2.31", + "@vue/server-renderer": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "node_modules/vue-class-component": { + "version": "8.0.0-rc.1", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/cli-shared-utils": "^4.5.6", + "chokidar": "^3.0.2", + "electron-builder": "^22.2.0", + "execa": "^5.0.0", + "friendly-errors-webpack-plugin": "^1.7.0", + "fs-extra": "^9.0.1", + "lodash.merge": "^4.6.1", + "portfinder": "^1.0.16", + "pumpify": "^2.0.1", + "semver": "^7.3.2", + "shebang-loader": "^0.0.1", + "split2": "^3.0.0", + "terser-webpack-plugin": "^3.0.3", + "through2-filter": "^3.0.0", + "through2-map": "^3.0.0", + "unzip-crx": "^0.2.0", + "webpack": "^4.18.0", + "webpack-chain": "^6.0.0", + "webpack-merge": "^4.2.2", + "yargs": "^15.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/nklayman" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/cacache": { + "version": "15.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/duplexify": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/is-stream": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/jest-worker": { + "version": "26.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/pumpify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/ssri": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/terser-webpack-plugin": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.2.1", + "p-limit": "^3.0.2", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.8.0", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-cli-plugin-electron-builder/node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/vue-component-type-helpers": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.12.tgz", + "integrity": "sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz", + "integrity": "sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==", + "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.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/vue-eslint-parser/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/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-eslint-parser/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-final-modal": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/vue-final-modal/-/vue-final-modal-3.4.4.tgz", + "integrity": "sha512-4nOLU+cMcUqAT0kg+64+Hi96kkQPOph2LOJa7Fl58BXlTyhfRxaMuz3M91wi2ooMIL4poWA8428P5GIAXSpuZg==" + }, + "node_modules/vue-hot-reload-api": { + "version": "2.3.4", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-jest": { + "version": "5.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-5.0.0-alpha.10.tgz", + "integrity": "sha512-iN62cTi4AL0UsgxEyVeJtHG6qXEv+8Ci2wX1vP3b/dAZvyBRmqy5aJHQrP6VCEuio+HgHQ1LAZ+ccM2pouBmlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "chalk": "^2.1.0", + "convert-source-map": "^1.6.0", + "extract-from-css": "^0.4.4", + "source-map": "0.5.6", + "tsconfig": "^7.0.0" + }, + "peerDependencies": { + "@babel/core": "7.x", + "babel-jest": ">= 24 < 27", + "jest": ">= 24 < 27 ", + "ts-jest": ">= 24 < 27 ", + "typescript": ">= 3.x", + "vue": "^3.0.0-0" + }, + "peerDependenciesMeta": { + "ts-jest": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-jest/node_modules/source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-loader": { + "version": "15.9.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/vue-loader/node_modules/hash-sum": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-property-decorator": { + "version": "10.0.0-rc.3", + "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-10.0.0-rc.3.tgz", + "integrity": "sha512-EGqjf8Lq+kTausZzfLB1ynWOcyay8ZLAc5p2VlKGEX2q+BjYw84oZxr6IcdwuxGIdNmriZqPUX6AlAluBdnbEg==", + "dev": true, + "peerDependencies": { + "vue": "*", + "vue-class-component": "*" + } + }, + "node_modules/vue-router": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz", + "integrity": "sha512-XvK81bcYglKiayT7/vYAg/f36ExPC4t90R/HIpzrZ5x+17BOWptXLCrEPufGgZeuq68ww4ekSIMBZY1qdUdfjA==", + "dependencies": { + "@vue/devtools-api": "^6.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "dev": true, + "license": "MIT" + }, + "node_modules/vue3-click-away": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/vue3-popper": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vue3-popper/-/vue3-popper-1.5.0.tgz", + "integrity": "sha512-xaEnx90YBnlSg5G2yWqm2DHWHg+DB99UVRp4VsyTF0QLXyHrqSuE1Xo5+sG0AQq/lBcrGMlk5NU5xE2MDLKViw==", + "dependencies": { + "@popperjs/core": "^2.9.2", + "debounce": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "vue": "^3.2.20" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "1.7.5", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack": { + "version": "4.47.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz", + "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "3.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 6.14.4" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/acorn": { + "version": "7.4.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain/node_modules/deepmerge": { + "version": "1.5.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-html-community": "0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "0.19.1", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/worker-rpc": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "microevent.ts": "~0.1.1" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "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/wrap-ansi-cjs/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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==" + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/xvfb-maybe": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xvfb-maybe/-/xvfb-maybe-0.2.1.tgz", + "integrity": "sha512-9IyRz3l6Qyhl6LvnGRF5jMPB4oBEepQnuzvVAFTynP6ACLLSevqigICJ9d/+ofl29m2daeaVBChnPYUnaeJ7yA==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "which": "^1.2.4" + }, + "bin": { + "xvfb-maybe": "src/xvfb-maybe.js" + } + }, + "node_modules/xvfb-maybe/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/xvfb-maybe/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/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/yaku": { + "version": "0.16.7", + "dev": true, + "license": "MIT" + }, + "node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "dependencies": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + }, + "bin": { + "json2yaml": "bin/json2yaml", + "yaml2json": "bin/yaml2json" + } + }, + "node_modules/yargs": { + "version": "13.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "license": "ISC" + }, + "node_modules/zwitch": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, + "@achrinza/node-ipc": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.6.tgz", + "integrity": "sha512-ULSIYPy4ZPM301dfCxRz0l2GJjOwIo/PqmWonIu1bLml7UmnVQmH+juJcoyXp6E8gIRRNAjGYftJnNQlfy4vPg==", + "dev": true, + "requires": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + } + }, + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + } + }, + "@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true + }, + "@babel/core": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "dev": true, + "requires": { + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", + "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.4", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "requires": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" + }, + "@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" + }, + "@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helpers": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", + "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", + "dev": true, + "requires": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" + } + }, + "@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "requires": { + "@babel/types": "^7.28.0" + } + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-decorators": "^7.16.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.16.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.27.1" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.16.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.16.1", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.16.0" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.16.0", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.0", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.2.3", + "babel-plugin-polyfill-corejs3": "^0.3.0", + "babel-plugin-polyfill-regenerator": "^0.2.3", + "core-js-compat": "^3.19.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-typescript": { + "version": "7.16.5", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-typescript": "^7.16.1" + } + }, + "@babel/runtime": { + "version": "7.16.3", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + } + }, + "@babel/traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" + } + }, + "@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "requires": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@bufbuild/protobuf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.6.3.tgz", + "integrity": "sha512-w/gJKME9mYN7ZoUAmSMAWXk4hkVpxRKvEJCb3dV5g9wwWdxTJJ0ayOJAVcNxtdqaxDyFuC0uz4RSGVacJ030PQ==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@commitlint/config-conventional": { + "version": "15.0.0", + "dev": true, + "requires": { + "conventional-changelog-conventionalcommits": "^4.3.1" + } + }, + "@commitlint/ensure": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/types": "^15.0.0", + "lodash": "^4.17.19" + } + }, + "@commitlint/execute-rule": { + "version": "15.0.0", + "dev": true + }, + "@commitlint/format": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/types": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@commitlint/is-ignored": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/types": "^15.0.0", + "semver": "7.3.5" + } + }, + "@commitlint/lint": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/is-ignored": "^15.0.0", + "@commitlint/parse": "^15.0.0", + "@commitlint/rules": "^15.0.0", + "@commitlint/types": "^15.0.0" + } + }, + "@commitlint/load": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/execute-rule": "^15.0.0", + "@commitlint/resolve-extends": "^15.0.0", + "@commitlint/types": "^15.0.0", + "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "typescript": "^4.4.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.1", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } + }, + "@commitlint/message": { + "version": "15.0.0", + "dev": true + }, + "@commitlint/parse": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/types": "^15.0.0", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.2.2" + } + }, + "@commitlint/read": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/top-level": "^15.0.0", + "@commitlint/types": "^15.0.0", + "fs-extra": "^10.0.0", + "git-raw-commits": "^2.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" + } + } + } + }, + "@commitlint/resolve-extends": { + "version": "15.0.0", + "dev": true, + "requires": { + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "dev": true + } + } + }, + "@commitlint/rules": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/ensure": "^15.0.0", + "@commitlint/message": "^15.0.0", + "@commitlint/to-lines": "^15.0.0", + "@commitlint/types": "^15.0.0", + "execa": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "dev": true + }, + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@commitlint/to-lines": { + "version": "15.0.0", + "dev": true + }, + "@commitlint/top-level": { + "version": "15.0.0", + "dev": true, + "requires": { + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "@commitlint/types": { + "version": "15.0.0", + "dev": true, + "requires": { + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@develar/schema-utils": { + "version": "2.6.5", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@electron-toolkit/preload": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@electron-toolkit/preload/-/preload-3.0.2.tgz", + "integrity": "sha512-TWWPToXd8qPRfSXwzf5KVhpXMfONaUuRAZJHsKthKgZR/+LqX1dZVSSClQ8OTAEduvLGdecljCsoT2jSshfoUg==", + "requires": {} + }, + "@electron-toolkit/utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@electron-toolkit/utils/-/utils-4.0.0.tgz", + "integrity": "sha512-qXSntwEzluSzKl4z5yFNBknmPGjPa3zFhE4mp9+h0cgokY5ornAeP+CJQDBhKsL1S58aOQfcwkD3NwLZCl+64g==", + "requires": {} + }, + "@electron/get": { + "version": "1.13.1", + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "6.3.0" + }, + "universalify": { + "version": "0.1.2" + } + } + }, + "@electron/universal": { + "version": "1.0.5", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" + }, + "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" + } + }, + "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" + } + }, + "fs-extra": { + "version": "9.1.0", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@endemolshinegroup/cosmiconfig-typescript-loader": { + "version": "3.0.2", + "dev": true, + "requires": { + "lodash.get": "^4", + "make-error": "^1", + "ts-node": "^9", + "tslib": "^2" + }, + "dependencies": { + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + } + } + }, + "@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "dev": true, + "optional": true + }, + "@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "dev": true, + "optional": true + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "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 + } + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "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" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "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==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "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" + } + }, + "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 + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@eslint/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "dev": true + }, + "@exodus/schemasafe": { + "version": "1.0.0-rc.7", + "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.7.tgz", + "integrity": "sha512-+1mBLsa+vvlV0lwEAP1hwgmOPkjMnoJ8hyCMfCCJga0sVDwDzrPJjnxZwdDaUmOh/vbFHQGBTk+FxsVjoI/CjQ==", + "dev": true + }, + "@hapi/address": { + "version": "2.1.4", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/shot": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", + "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "dev": true + } + } + }, + "@hapi/topo": { + "version": "3.1.6", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", + "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "dependencies": { + "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" + } + } + } + }, + "@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 + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/nyc-config-typescript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.2.tgz", + "integrity": "sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "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" + } + }, + "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 + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.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 + }, + "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 + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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" + } + }, + "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" + } + } + } + }, + "@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/expect-utils": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.5.tgz", + "integrity": "sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==", + "dev": true, + "requires": { + "@jest/get-type": "30.0.1" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + } + } + }, + "@jest/get-type": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", + "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", + "dev": true + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "dependencies": { + "jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true + } + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": 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 + }, + "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" + } + } + } + }, + "@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.34.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "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 + } + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "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" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "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" + } + }, + "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 + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.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 + }, + "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 + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": 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 + }, + "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" + } + }, + "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" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.0", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-class-static-block": "^7.16.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.0", - "@babel/plugin-proposal-export-namespace-from": "^7.16.0", - "@babel/plugin-proposal-json-strings": "^7.16.0", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-object-rest-spread": "^7.16.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-proposal-private-property-in-object": "^7.16.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.0", - "@babel/plugin-transform-async-to-generator": "^7.16.0", - "@babel/plugin-transform-block-scoped-functions": "^7.16.0", - "@babel/plugin-transform-block-scoping": "^7.16.0", - "@babel/plugin-transform-classes": "^7.16.0", - "@babel/plugin-transform-computed-properties": "^7.16.0", - "@babel/plugin-transform-destructuring": "^7.16.0", - "@babel/plugin-transform-dotall-regex": "^7.16.0", - "@babel/plugin-transform-duplicate-keys": "^7.16.0", - "@babel/plugin-transform-exponentiation-operator": "^7.16.0", - "@babel/plugin-transform-for-of": "^7.16.0", - "@babel/plugin-transform-function-name": "^7.16.0", - "@babel/plugin-transform-literals": "^7.16.0", - "@babel/plugin-transform-member-expression-literals": "^7.16.0", - "@babel/plugin-transform-modules-amd": "^7.16.0", - "@babel/plugin-transform-modules-commonjs": "^7.16.0", - "@babel/plugin-transform-modules-systemjs": "^7.16.0", - "@babel/plugin-transform-modules-umd": "^7.16.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", - "@babel/plugin-transform-new-target": "^7.16.0", - "@babel/plugin-transform-object-super": "^7.16.0", - "@babel/plugin-transform-parameters": "^7.16.0", - "@babel/plugin-transform-property-literals": "^7.16.0", - "@babel/plugin-transform-regenerator": "^7.16.0", - "@babel/plugin-transform-reserved-words": "^7.16.0", - "@babel/plugin-transform-shorthand-properties": "^7.16.0", - "@babel/plugin-transform-spread": "^7.16.0", - "@babel/plugin-transform-sticky-regex": "^7.16.0", - "@babel/plugin-transform-template-literals": "^7.16.0", - "@babel/plugin-transform-typeof-symbol": "^7.16.0", - "@babel/plugin-transform-unicode-escapes": "^7.16.0", - "@babel/plugin-transform-unicode-regex": "^7.16.0", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", - "babel-plugin-polyfill-corejs2": "^0.2.3", - "babel-plugin-polyfill-corejs3": "^0.3.0", - "babel-plugin-polyfill-regenerator": "^0.2.3", - "core-js-compat": "^3.19.0", - "semver": "^6.3.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@loopback/boot": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-5.0.10.tgz", + "integrity": "sha512-dft1pHOFqs6urbzZ/m+vtB5RTqRogCY79AN3lej9YYcwFS+sX3zj8qYpyNDYWmMfZ0SSlLdTA7+K9IiitKCSYg==", + "requires": { + "@loopback/model-api-builder": "^4.0.10", + "@loopback/repository": "^5.1.5", + "@loopback/service-proxy": "^5.0.10", + "@types/debug": "^4.1.7", + "@types/glob": "^8.1.0", + "debug": "^4.3.4", + "glob": "^10.0.0", + "tslib": "^2.5.0" + }, + "dependencies": { + "@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "requires": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "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==", + "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==" + }, + "signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@loopback/build": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@loopback/build/-/build-9.0.10.tgz", + "integrity": "sha512-YMdwM7J5o7/+GGJwqW3U0Ua1zpZVT/Ok2V1/i87zwALXQvvQwNMbTncbEKbYGRqN4yicqiv1dswrmf8bnw+wdg==", + "dev": true, + "requires": { + "@loopback/eslint-config": "^13.0.10", + "@types/mocha": "^10.0.1", + "@types/node": "^14.18.42", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "eslint": "^8.38.0", + "fs-extra": "^11.1.1", + "glob": "^10.0.0", + "lodash": "^4.17.21", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "prettier": "^2.8.7", + "rimraf": "^5.0.0", + "source-map-support": "^0.5.21", + "typescript": "~4.9.5" + }, + "dependencies": { + "@loopback/eslint-config": { + "version": "13.0.10", + "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-13.0.10.tgz", + "integrity": "sha512-P76txTw4NrQD+d/ZUY1UjU4G3EXGPcKqrcJSag35GYHsJ+u0y3cb9A1jOiZfD7LyfZC7nmcjXFk3Ixp8zXMr+w==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-eslint-plugin": "^5.0.8", + "eslint-plugin-mocha": "^10.1.0" + } + }, + "@types/node": { + "version": "14.18.53", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.53.tgz", + "integrity": "sha512-soGmOpVBUq+gaBMwom1M+krC/NNbWlosh4AtGA03SyWNDiqSKtwp7OulO1M6+mg8YkHMvJ/y0AkCeO8d1hNb7A==", + "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" + } + }, + "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" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", + "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 + }, + "rimraf": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "dev": true, + "requires": { + "glob": "^10.2.5" + } + }, + "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 + }, + "signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "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" + } + } + } + }, + "@loopback/context": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/context/-/context-5.0.10.tgz", + "integrity": "sha512-FRfDTRm32w2/G62aLJS5ur96JI2RLk5xngFirz16ncTiOWy5JwNqgfupe5cfi+ayZ6JthrbGgFgRkVdyncraHw==", + "requires": { + "@loopback/metadata": "^5.0.10", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "hyperid": "^3.1.1", + "p-event": "^4.2.0", + "tslib": "^2.5.0", + "uuid": "^9.0.0" + }, + "dependencies": { + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + } + } + }, + "@loopback/core": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@loopback/core/-/core-4.0.10.tgz", + "integrity": "sha512-1UXOh19dfr/LSOEpR5iHaTkzzfjBiR43XIvMmLElLgxuHaZIdWYtPfiK3rtnWC7Hw+PG+xRMuPWyxq0aMfrMsg==", + "requires": { + "@loopback/context": "^5.0.10", + "debug": "^4.3.4", + "tslib": "^2.5.0" + } + }, + "@loopback/eslint-config": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-14.0.2.tgz", + "integrity": "sha512-3T6rspVwU1Gs51wwrhEtae++yRCUn6KS6qKU20ziLn888zwa5X/jAAnO7/Vo2r2dsVZFiA+Fv8Awy6lNlX+y4A==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-eslint-plugin": "^5.1.0", + "eslint-plugin-mocha": "^10.1.0" + } + }, + "@loopback/filter": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-3.0.10.tgz", + "integrity": "sha512-5bbIJSXNebL7RocF4wXCjwIovyRJ98WtBTSKHO2DraFCrG1EbuSjvcloiH4iR4FXhzJI2gLPQv0N9Zgdypvdrg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@loopback/metadata": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-5.0.10.tgz", + "integrity": "sha512-FME4Hla/A1s3nFc5guVCRcvWx7AXQHa3JbbCftkW0CWwAsjcE9Yt2KMU4l0YS0movR9KWRF9HcSt9Tg2vfY9bQ==", + "requires": { + "debug": "^4.3.4", + "lodash": "^4.17.21", + "reflect-metadata": "^0.1.13", + "tslib": "^2.5.0" + } + }, + "@loopback/model-api-builder": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-4.0.10.tgz", + "integrity": "sha512-0P/uHcuJBdjG7X3vBLVQwLTcfOsZHBhwIQIw/S682tWpzUM4Gw82cYsCEaoe2veNtYnezyv3qGc0fnm8JnAoZQ==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@loopback/repository": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-5.1.5.tgz", + "integrity": "sha512-v0rOpt8Sp/XofXEzEJBT4sgOEYqm3b5GyE2Zlmj074BIMIgIKCudsC8Sfwlg5O4J5I2zLaZaCXDDRg4OZSPwfg==", + "requires": { + "@loopback/filter": "^3.0.10", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "lodash": "^4.17.21", + "loopback-datasource-juggler": "^4.28.3", + "tslib": "^2.5.0" + } + }, + "@loopback/service-proxy": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-5.0.10.tgz", + "integrity": "sha512-xqEB9DmJNpDr4+jVW9YOpUkQJUgGWLk3WgCSNPQiM6uao5YThJsD2JHMn89SeKzoCreOBAtMsHCVBop5uXxCqw==", + "requires": { + "loopback-datasource-juggler": "^4.28.3", + "tslib": "^2.5.0" + } + }, + "@loopback/testlab": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-5.0.10.tgz", + "integrity": "sha512-OPzxm8jM+LdQX0LPen7E7/iusMIg9HAct7IRlThM3o+ZjPg9oHAMLvICmbgW2P/vRUtwfgoMmbYF0ZPoOboaaw==", + "dev": true, + "requires": { + "@hapi/shot": "^6.0.1", + "@types/express": "^4.17.17", + "@types/fs-extra": "^11.0.1", + "@types/shot": "^4.0.1", + "@types/sinon": "^10.0.13", + "@types/supertest": "^2.0.12", + "express": "^4.18.2", + "fs-extra": "^11.1.1", + "oas-validator": "^5.0.8", + "should": "^13.2.3", + "sinon": "^15.0.3", + "supertest": "^6.3.3", + "tslib": "^2.5.0" + }, + "dependencies": { + "@types/fs-extra": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz", + "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==", + "dev": true, + "requires": { + "@types/jsonfile": "*", + "@types/node": "*" + } + } + } + }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "dev": true + }, + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "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", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "requires": { + "easy-stack": "1.0.1" + } + }, + "@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" + }, + "dependencies": { + "@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.stat": { + "version": "1.1.3", + "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" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "dependencies": { - "@babel/compat-data": { - "version": "7.16.0", + "mkdirp": { + "version": "1.0.4", "dev": true + } + } + }, + "@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "optional": true, + "requires": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1", + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.1.1" + } }, - "@babel/helper-compilation-targets": { - "version": "7.16.3", + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "optional": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", - "semver": "^6.3.0" + "to-regex-range": "^5.0.1" } }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "dev": true + "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, + "optional": true }, - "browserslist": { - "version": "4.17.6", + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "optional": true, "requires": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" } }, - "electron-to-chromium": { - "version": "1.3.894", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "dev": true + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true }, - "semver": { - "version": "6.3.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, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "dev": true, + "optional": true + }, + "@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "dev": true, + "optional": true + }, + "@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "dev": true, + "optional": true + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, + "@playwright/test": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", + "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", + "dev": true, + "requires": { + "playwright": "1.52.0" + } + }, + "@popperjs/core": { + "version": "2.11.0" + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "dev": true, + "optional": true + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "dev": true } } }, - "@babel/preset-modules": { - "version": "0.1.5", + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.34.40", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", + "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", + "dev": true + }, + "@sindresorhus/is": { + "version": "0.14.0" + }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "type-detect": "4.0.8" } }, - "@babel/preset-typescript": { - "version": "7.16.5", + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@sinonjs/commons": "^3.0.0" + } + }, + "@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "requires": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + } + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.0", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" }, "dependencies": { - "@babel/helper-validator-option": { - "version": "7.14.5", + "ansi-regex": { + "version": "3.0.0", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", "dev": true + }, + "string-width": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "dev": true + } + } } } }, - "@babel/runtime": { - "version": "7.16.3", + "@soda/get-current-script": { + "version": "1.0.2", + "dev": true + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "@babel/core": ">=7.9.0" } }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "@stylelint/postcss-markdown": { + "version": "0.36.2", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" } }, - "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "@swc/core": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.3.tgz", + "integrity": "sha512-ZaDETVWnm6FE0fc+c2UE8MHYVS3Fe91o5vkmGfgwGXFbxYvAjKSqxM/j4cRc9T7VZNSJjriXq58XkfCp3Y6f+w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@swc/core-darwin-arm64": "1.13.3", + "@swc/core-darwin-x64": "1.13.3", + "@swc/core-linux-arm-gnueabihf": "1.13.3", + "@swc/core-linux-arm64-gnu": "1.13.3", + "@swc/core-linux-arm64-musl": "1.13.3", + "@swc/core-linux-x64-gnu": "1.13.3", + "@swc/core-linux-x64-musl": "1.13.3", + "@swc/core-win32-arm64-msvc": "1.13.3", + "@swc/core-win32-ia32-msvc": "1.13.3", + "@swc/core-win32-x64-msvc": "1.13.3", + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.23" } }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "@swc/core-darwin-arm64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.3.tgz", + "integrity": "sha512-ux0Ws4pSpBTqbDS9GlVP354MekB1DwYlbxXU3VhnDr4GBcCOimpocx62x7cFJkSpEBF8bmX8+/TTCGKh4PbyXw==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.3.tgz", + "integrity": "sha512-p0X6yhxmNUOMZrbeZ3ZNsPige8lSlSe1llllXvpCLkKKxN/k5vZt1sULoq6Nj4eQ7KeHQVm81/+AwKZyf/e0TA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.3.tgz", + "integrity": "sha512-OmDoiexL2fVWvQTCtoh0xHMyEkZweQAlh4dRyvl8ugqIPEVARSYtaj55TBMUJIP44mSUOJ5tytjzhn2KFxFcBA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.3.tgz", + "integrity": "sha512-STfKku3QfnuUj6k3g9ld4vwhtgCGYIFQmsGPPgT9MK/dI3Lwnpe5Gs5t1inoUIoGNP8sIOLlBB4HV4MmBjQuhw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.3.tgz", + "integrity": "sha512-bc+CXYlFc1t8pv9yZJGus372ldzOVscBl7encUBlU1m/Sig0+NDJLz6cXXRcFyl6ABNOApWeR4Yl7iUWx6C8og==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.3.tgz", + "integrity": "sha512-dFXoa0TEhohrKcxn/54YKs1iwNeW6tUkHJgXW33H381SvjKFUV53WR231jh1sWVJETjA3vsAwxKwR23s7UCmUA==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.3.tgz", + "integrity": "sha512-ieyjisLB+ldexiE/yD8uomaZuZIbTc8tjquYln9Quh5ykOBY7LpJJYBWvWtm1g3pHv6AXlBI8Jay7Fffb6aLfA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.3.tgz", + "integrity": "sha512-elTQpnaX5vESSbhCEgcwXjpMsnUbqqHfEpB7ewpkAsLzKEXZaK67ihSRYAuAx6ewRQTo7DS5iTT6X5aQD3MzMw==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.3.tgz", + "integrity": "sha512-nvehQVEOdI1BleJpuUgPLrclJ0TzbEMc+MarXDmmiRFwEUGqj+pnfkTSb7RZyS1puU74IXdK/YhTirHurtbI9w==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.3.tgz", + "integrity": "sha512-A+JSKGkRbPLVV2Kwx8TaDAV0yXIXm/gc8m98hSkVDGlPBBmydgzNdWy3X7HTUBM7IDk7YlWE7w2+RUGjdgpTmg==", + "dev": true, + "optional": true + }, + "@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "@swc/types": { + "version": "0.1.24", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.24.tgz", + "integrity": "sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@swc/counter": "^0.1.3" } }, - "@commitlint/config-conventional": { - "version": "15.0.0", + "@szmarczak/http-timer": { + "version": "1.1.2", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "@tsconfig/node16-strictest": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest/-/node16-strictest-1.0.4.tgz", + "integrity": "sha512-kp6/DuAoKzHVv5U+p0uOesYbjrEvrYVNdQMl163a+yXXUv9twabvkCGEn3pmVxKXB45JU5MPGolDDWnONZL5ZQ==", + "dev": true + }, + "@tsconfig/strictest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.1.tgz", + "integrity": "sha512-7JHHCbyCsGUxLd0pDbp24yz3zjxw2t673W5oAP6HCEdr/UUhaRhYd3SSnUsGCk+VnPVJVA4mXROzbhI+nyIk+w==", + "dev": true + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "requires": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "@commitlint/ensure": { - "version": "15.0.0", + "@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", - "lodash": "^4.17.19" + "@babel/types": "^7.0.0" } }, - "@commitlint/execute-rule": { - "version": "15.0.0", + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "requires": { + "@babel/types": "^7.28.2" + } + }, + "@types/body-parser": { + "version": "1.19.1", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", "dev": true }, - "@commitlint/format": { - "version": "15.0.0", + "@types/debug": { + "version": "4.1.7", + "requires": { + "@types/ms": "*" + } + }, + "@types/electron-devtools-installer": { + "version": "2.2.0", + "dev": true + }, + "@types/eslint": { + "version": "8.40.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.0.tgz", + "integrity": "sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", - "chalk": "^4.0.0" + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@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, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.7", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ini": { + "version": "1.3.31", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "requires": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" }, "dependencies": { + "@jest/types": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", + "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", + "dev": true, + "requires": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + } + }, + "@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, "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" } }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, "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" } }, + "ci-info": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", + "dev": true + }, "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" @@ -30900,830 +43378,1157 @@ }, "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 }, + "expect": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.5.tgz", + "integrity": "sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==", + "dev": true, + "requires": { + "@jest/expect-utils": "30.0.5", + "@jest/get-type": "30.0.1", + "jest-matcher-utils": "30.0.5", + "jest-message-util": "30.0.5", + "jest-mock": "30.0.5", + "jest-util": "30.0.5" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.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 }, - "supports-color": { - "version": "7.2.0", + "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 + }, + "jest-diff": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.5.tgz", + "integrity": "sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "pretty-format": "30.0.5" } - } - } - }, - "@commitlint/is-ignored": { - "version": "15.0.0", - "dev": true, - "requires": { - "@commitlint/types": "^15.0.0", - "semver": "7.3.5" - } - }, - "@commitlint/lint": { - "version": "15.0.0", - "dev": true, - "requires": { - "@commitlint/is-ignored": "^15.0.0", - "@commitlint/parse": "^15.0.0", - "@commitlint/rules": "^15.0.0", - "@commitlint/types": "^15.0.0" - } - }, - "@commitlint/load": { - "version": "15.0.0", - "dev": true, - "requires": { - "@commitlint/execute-rule": "^15.0.0", - "@commitlint/resolve-extends": "^15.0.0", - "@commitlint/types": "^15.0.0", - "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "typescript": "^4.4.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", + }, + "jest-matcher-utils": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz", + "integrity": "sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "@jest/get-type": "30.0.1", + "chalk": "^4.1.2", + "jest-diff": "30.0.5", + "pretty-format": "30.0.5" } }, - "chalk": { - "version": "4.1.2", + "jest-message-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", + "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.5", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.5", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" } }, - "color-convert": { - "version": "2.0.1", + "jest-mock": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", + "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@jest/types": "30.0.5", + "@types/node": "*", + "jest-util": "30.0.5" } }, - "color-name": { - "version": "1.1.4", - "dev": true + "jest-util": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", + "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", + "dev": true, + "requires": { + "@jest/types": "30.0.5", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "dependencies": { + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + } + } }, - "cosmiconfig": { - "version": "7.0.1", + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" } }, - "has-flag": { - "version": "4.0.0", - "dev": true + "pretty-format": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", + "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", + "dev": true, + "requires": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.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 + } + } }, - "path-type": { - "version": "4.0.0", + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "resolve-from": { - "version": "5.0.0", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "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" } + }, + "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" + } } } }, - "@commitlint/message": { - "version": "15.0.0", + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, - "@commitlint/parse": { - "version": "15.0.0", + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/jsonfile": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz", + "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==", "dev": true, "requires": { - "@commitlint/types": "^15.0.0", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.2.2" + "@types/node": "*" } }, - "@commitlint/read": { - "version": "15.0.0", + "@types/mdast": { + "version": "3.0.3", "dev": true, "requires": { - "@commitlint/top-level": "^15.0.0", - "@commitlint/types": "^15.0.0", - "fs-extra": "^10.0.0", - "git-raw-commits": "^2.0.0" + "@types/unist": "*" } }, - "@commitlint/resolve-extends": { - "version": "15.0.0", + "@types/mime": { + "version": "1.3.2", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + }, + "@types/minimist": { + "version": "1.2.1", + "dev": true + }, + "@types/mocha": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", + "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", + "dev": true + }, + "@types/mock-fs": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.1.tgz", + "integrity": "sha512-m6nFAJ3lBSnqbvDZioawRvpLXSaPyn52Srf7OfzjubYbYX8MTUdIgDxQl0wEapm4m/pNYSd9TXocpQ0TvZFlYA==", "dev": true, "requires": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "dev": true - } + "@types/node": "*" } }, - "@commitlint/rules": { - "version": "15.0.0", + "@types/mock-require": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mock-require/-/mock-require-2.0.1.tgz", + "integrity": "sha512-O7U5DVGboY/Crueb5/huUCIRjKtRVRaLmRDbZJBlDQgJn966z3aiFDN+6AtYviu2ExwMkl34LjT/IiC0OPtKuQ==", "dev": true, "requires": { - "@commitlint/ensure": "^15.0.0", - "@commitlint/message": "^15.0.0", - "@commitlint/to-lines": "^15.0.0", - "@commitlint/types": "^15.0.0", - "execa": "^5.0.0" + "@types/node": "*" + } + }, + "@types/ms": { + "version": "0.7.31" + }, + "@types/ncp": { + "version": "2.0.5", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "18.19.111", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.111.tgz", + "integrity": "sha512-90sGdgA+QLJr1F9X79tQuEut0gEYIfkX9pydI4XGRgvFo9g2JWswefI+WUSUHPYVBHYSEfTEqBxA5hQvAZB3Mw==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "which": { - "version": "2.0.2", + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } } } }, - "@commitlint/to-lines": { - "version": "15.0.0", + "@types/normalize-package-data": { + "version": "2.4.0", "dev": true }, - "@commitlint/top-level": { - "version": "15.0.0", + "@types/parse-json": { + "version": "4.0.0", + "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": { - "find-up": "^5.0.0" + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "@types/q": { + "version": "1.5.5", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "dev": true + }, + "@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" + }, + "@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/shot": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.1.tgz", + "integrity": "sha512-LUJWxDKYWmmUpVXDWZ78hFIrqb/ho9RoKqBAFRJw4OHOS3qCKCoXCyzrfmf24lbO4COYfqL0iEWNArOfKEYW9g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@types/superagent": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", + "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", + "dev": true, + "requires": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "@types/supertest": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", + "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "dev": true, + "requires": { + "@types/superagent": "*" + } + }, + "@types/tapable": { + "version": "1.0.8", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.1", + "dev": true, + "requires": { + "source-map": "^0.6.1" }, "dependencies": { - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } + "source-map": { + "version": "0.6.1", + "dev": true } } }, - "@commitlint/types": { - "version": "15.0.0", + "@types/unist": { + "version": "2.0.3", + "dev": true + }, + "@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "dev": true, + "optional": true + }, + "@types/webpack": { + "version": "4.41.31", "dev": true, "requires": { - "chalk": "^4.0.0" + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", + "source-map": { + "version": "0.6.1", "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, - "@develar/schema-utils": { - "version": "2.6.5", + "@types/webpack-dev-server": { + "version": "3.11.6", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" } }, - "@electron/get": { - "version": "1.13.1", + "@types/webpack-env": { + "version": "1.16.3", + "dev": true + }, + "@types/webpack-sources": { + "version": "3.2.0", "dev": true, "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" }, "dependencies": { - "fs-extra": { - "version": "8.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "universalify": { - "version": "0.1.2", + "source-map": { + "version": "0.7.3", "dev": true } } }, - "@electron/universal": { - "version": "1.0.5", + "@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dev": true, "requires": { - "@malept/cross-spawn-promise": "^1.1.0", - "asar": "^3.0.3", - "debug": "^4.3.1", - "dir-compare": "^2.4.0", - "fs-extra": "^9.0.1" + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "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" - } - }, - "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" - } + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true }, - "fs-extra": { - "version": "9.1.0", + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "lru-cache": "^6.0.0" } } } }, - "@endemolshinegroup/cosmiconfig-typescript-loader": { - "version": "3.0.2", + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "requires": { - "lodash.get": "^4", - "make-error": "^1", - "ts-node": "^9", - "tslib": "^2" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" } }, - "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.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" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "@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 }, - "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 }, - "eslint-visitor-keys": { + "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" + } + }, + "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" + } + }, + "fast-glob": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "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" + } }, - "espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "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": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "to-regex-range": "^5.0.1" } }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "type-fest": "^0.20.2" + "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" } }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "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==", + "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 + }, + "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": { - "argparse": "^2.0.1" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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 + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "lru-cache": "^6.0.0" } }, - "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==", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "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==", + "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" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "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.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "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 } } }, - "@exodus/schemasafe": { - "version": "1.0.0-rc.7", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.7.tgz", - "integrity": "sha512-+1mBLsa+vvlV0lwEAP1hwgmOPkjMnoJ8hyCMfCCJga0sVDwDzrPJjnxZwdDaUmOh/vbFHQGBTk+FxsVjoI/CjQ==", - "dev": true + "@vitejs/plugin-vue": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", + "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "dev": true, + "requires": {} }, - "@hapi/address": { - "version": "2.1.4", + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", "dev": true }, - "@hapi/bourne": { - "version": "1.3.2", + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", "dev": true }, - "@hapi/hoek": { - "version": "8.5.1", - "dev": true + "@vue/babel-plugin-jsx": { + "version": "1.1.1", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } }, - "@hapi/joi": { - "version": "15.1.1", + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", "dev": true, "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "dev": true + } } }, - "@hapi/shot": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.0.tgz", - "integrity": "sha512-RLGgzXy9GciJDunhY40NbVnLgYqp5gfBooZ2fOkAr4KbCEav/SJtYQS1N+knR7WFGzy8aooCR3XBUPI4ghHAkQ==", + "@vue/babel-preset-app": { + "version": "4.5.15", "dev": true, "requires": { - "@hapi/hoek": "^10.0.0", - "@hapi/validate": "^2.0.0" + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" }, "dependencies": { - "@hapi/hoek": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", - "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==", + "semver": { + "version": "6.3.0", "dev": true } } }, - "@hapi/topo": { - "version": "3.1.6", + "@vue/babel-preset-jsx": { + "version": "1.2.4", "dev": true, "requires": { - "@hapi/hoek": "^8.3.0" + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" } }, - "@hapi/validate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.0.tgz", - "integrity": "sha512-w5m8MvBgqGndbMIB+AWmXTb8CLtF1DlIxbnbAHNAo7aFuNQuI1Ywc2e0zDLK5fbFXDoqRzNrHnC7JjNJ+hDigw==", + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", "dev": true, "requires": { - "@hapi/hoek": "^10.0.0", - "@hapi/topo": "^6.0.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-10.0.1.tgz", - "integrity": "sha512-CvlW7jmOhWzuqOqiJQ3rQVLMcREh0eel4IBnxDx2FAcK8g7qoJRQK4L1CPBASoCY6y8e6zuCy3f2g+HWdkzcMw==", - "dev": true - }, - "@hapi/topo": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.0.tgz", - "integrity": "sha512-aorJvN1Q1n5xrZuA50Z4X6adI6VAM2NalIVm46ALL9LUvdoqhof3JPY69jdJH8asM3PsWr2SUVYzp57EqUP41A==", - "dev": true, - "requires": { - "@hapi/hoek": "^10.0.0" - } - } + "@babel/plugin-syntax-jsx": "^7.2.0" } }, - "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@babel/plugin-syntax-jsx": "^7.2.0" } }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } }, - "@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 + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", + "@vue/babel-sugar-v-model": { + "version": "1.2.3", "dev": true, "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", + "camelcase": { + "version": "5.3.1", "dev": true }, - "postcss": { - "version": "7.0.39", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", + "html-tags": { + "version": "2.0.0", "dev": true } } }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "@vue/babel-sugar-v-on": { + "version": "1.2.3", "dev": true, "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" }, "dependencies": { "camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "4.5.15", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.15", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.15", + "@vue/cli-shared-utils": "^4.5.15", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.5.15", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", "dev": true }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "yallist": { + "version": "3.1.1", "dev": true } } }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@loopback/boot": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/boot/-/boot-5.0.2.tgz", - "integrity": "sha512-5M2t9AA3nx3mXy8KejOffseIK6DBBcalvHbekWGMPI6gr37ydc2WZSG/JJX7ndmKmd+NhxPagm5ZlmWC2OpYHQ==", + "@vue/cli-plugin-eslint": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz", + "integrity": "sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg==", + "dev": true, "requires": { - "@loopback/model-api-builder": "^4.0.2", - "@loopback/repository": "^5.0.2", - "@loopback/service-proxy": "^5.0.2", - "@types/debug": "^4.1.7", - "@types/glob": "^7.2.0", - "debug": "^4.3.4", - "glob": "^8.0.3", - "tslib": "^2.4.0" + "@vue/cli-shared-utils": "^5.0.8", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.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==", + "@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 + }, + "@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", + "dev": true, "requires": { - "balanced-match": "^1.0.0" + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" } }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } - } - } - }, - "@loopback/build": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@loopback/build/-/build-9.0.2.tgz", - "integrity": "sha512-nxvaWdsGDk47K86FIvKTtjqi3hftHgBffvBXKK1LpZEgrEnz5zzOA13cMg1y5Ms5zhxWmsuq3k8YuBKxiXCA7Q==", - "dev": true, - "requires": { - "@loopback/eslint-config": "^13.0.2", - "@types/mocha": "^9.1.1", - "@types/node": "^14.18.21", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "eslint": "^8.19.0", - "fs-extra": "^10.1.0", - "glob": "^8.0.3", - "lodash": "^4.17.21", - "mocha": "^10.0.0", - "nyc": "^15.1.0", - "prettier": "^2.7.1", - "rimraf": "^3.0.2", - "source-map-support": "^0.5.21", - "typescript": "~4.7.4" - }, - "dependencies": { - "@loopback/eslint-config": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@loopback/eslint-config/-/eslint-config-13.0.2.tgz", - "integrity": "sha512-IxNBB9OEexiS0tYEsQX63KQ96IU0mQD/H6paHQw2ghcxOTiicPijT7Lg1B8Yt+Qv8GrnyACynRkNAhltgXRmhg==", + }, + "@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "^5.30.6", - "@typescript-eslint/parser": "^5.30.6", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-eslint-plugin": "^4.4.1", - "eslint-plugin-mocha": "^10.0.5" + "@xtuc/ieee754": "^1.2.0" } }, - "@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 + "@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } }, - "@types/node": { - "version": "14.18.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.23.tgz", - "integrity": "sha512-MhbCWN18R4GhO8ewQWAFK4TGQdBpXWByukz7cWyJmXhvRuCIaM/oWytGPqVmDzgEnnaIc9ss6HbU5mUi+vyZPA==", + "@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true }, - "@typescript-eslint/eslint-plugin": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.32.0.tgz", - "integrity": "sha512-CHLuz5Uz7bHP2WgVlvoZGhf0BvFakBJKAD/43Ty0emn4wXWv5k01ND0C0fHcl/Im8Td2y/7h44E9pca9qAu2ew==", + "@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.32.0", - "@typescript-eslint/type-utils": "5.32.0", - "@typescript-eslint/utils": "5.32.0", - "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "@typescript-eslint/parser": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.32.0.tgz", - "integrity": "sha512-IxRtsehdGV9GFQ35IGm5oKKR2OGcazUoiNBxhRV160iF9FoyuXxjY+rIqs1gfnd+4eL98OjeGnMpE7RF/NBb3A==", + "@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.32.0", - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/typescript-estree": "5.32.0", - "debug": "^4.3.4" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "@typescript-eslint/typescript-estree": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz", - "integrity": "sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==", + "@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -31733,18 +44538,23 @@ "color-convert": "^2.0.1" } }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "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 }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -31754,6 +44564,16 @@ "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, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -31764,6 +44584,15 @@ "supports-color": "^7.1.0" } }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -31779,17 +44608,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "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" - } - }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -31799,725 +44617,1226 @@ "path-type": "^4.0.0" } }, - "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==", + "enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "dev": true, + "requires": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "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" + } + }, + "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" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "eslint": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", - "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "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", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "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 + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "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-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "requires": {} + "requires": { + "is-docker": "^2.0.0" + } }, - "eslint-plugin-mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", - "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "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": { - "eslint-utils": "^3.0.0", - "rambda": "^7.1.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "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==", + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "mimic-fn": "^2.1.0" } }, - "eslint-utils": { + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "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 + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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": { - "eslint-visitor-keys": "^2.0.0" + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true + }, + "terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "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" + } + }, + "watchpack": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.99.9", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", + "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + } + }, + "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 + } + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.15", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.15" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.5.15", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "dev": true + } + } + }, + "@vue/cli-plugin-typescript": { + "version": "4.5.15", + "dev": true, + "requires": { + "@types/webpack-env": "^1.15.2", + "@vue/cli-shared-utils": "^4.5.15", + "cache-loader": "^4.1.0", + "fork-ts-checker-webpack-plugin": "^3.1.1", + "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11", + "globby": "^9.2.0", + "thread-loader": "^2.1.3", + "ts-loader": "^6.2.2", + "tslint": "^5.20.1", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.5.15", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", "dev": true }, - "espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "yallist": { + "version": "3.1.1", + "dev": true + } + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.15", + "dev": true, + "requires": {} + }, + "@vue/cli-service": { + "version": "4.5.15", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.15", + "@vue/cli-plugin-router": "^4.5.15", + "@vue/cli-plugin-vuex": "^4.5.15", + "@vue/cli-shared-utils": "^4.5.15", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.5.15", "dev": true, "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" } }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "acorn": { + "version": "7.4.1", "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" - } - } - } - }, - "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" - } - }, - "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==", + "ansi-styles": { + "version": "4.3.0", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "color-convert": "^2.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==", + "cliui": { + "version": "6.0.0", "dev": true, "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "color-convert": { + "version": "2.0.1", "dev": true, "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "color-name": "~1.1.4" } }, - "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "color-name": { + "version": "1.1.4", "dev": true }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.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" - } - }, - "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" - } - } - } - }, - "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" - } - }, - "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "fs-extra": { + "version": "7.0.1", "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" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "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 - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "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 - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { - "argparse": "^2.0.1" - } + "optional": true }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "jsonfile": { + "version": "4.0.0", "dev": true, "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "graceful-fs": "^4.1.6" } }, - "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==", + "loader-utils": { + "version": "2.0.2", "dev": true, + "optional": true, "requires": { - "p-locate": "^5.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "lru-cache": { + "version": "5.1.1", "dev": true, "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "yallist": "^3.0.2" } }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "semver": { + "version": "6.3.0", + "dev": true + }, + "ssri": { + "version": "8.0.1", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "minipass": "^3.1.1" } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "supports-color": { + "version": "7.2.0", "dev": true, + "optional": 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" + "has-flag": "^4.0.0" } }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "universalify": { + "version": "0.1.2", + "dev": true + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", "dev": true, + "optional": true, "requires": { - "yocto-queue": "^0.1.0" + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.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==", + "wrap-ansi": { + "version": "6.2.0", "dev": true, "requires": { - "p-limit": "^3.0.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "path-key": { + "yallist": { "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 - }, - "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 - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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==", + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.13", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "yallist": "^3.0.2" } }, - "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 - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "semver": { + "version": "6.3.0", "dev": true }, - "strip-json-comments": { + "yallist": { "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 + } + } + }, + "@vue/compiler-core": { + "version": "3.2.31", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "@vue/compiler-dom": { + "version": "3.2.31", + "requires": { + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.31", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-ssr": "3.2.31", + "@vue/reactivity-transform": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1" + } + } + }, + "@vue/compiler-ssr": { + "version": "3.2.31", + "requires": { + "@vue/compiler-dom": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", "dev": true }, - "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==", + "lru-cache": { + "version": "4.1.5", "dev": true, "requires": { - "has-flag": "^4.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "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" - } + "picocolors": { + "version": "0.2.1", + "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==", + "postcss": { + "version": "7.0.39", "dev": true, "requires": { - "prelude-ls": "^1.2.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "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==", + "source-map": { + "version": "0.6.1", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "yallist": { + "version": "2.1.2", + "dev": true + } + } + }, + "@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "@vue/eslint-config-prettier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==", + "dev": true, + "requires": { + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + }, + "dependencies": { + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "requires": { - "isexe": "^2.0.0" + "prettier-linter-helpers": "^1.0.0" } } } }, - "@loopback/context": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/context/-/context-5.0.2.tgz", - "integrity": "sha512-aQMvi0asJ+ejslq8dT/tUShxOf7Vv6Z4rO75WYIv7+cNK5b/gcafCuon7sEbDpSB4vtuzBWJncfACcoC2m3VEw==", + "@vue/eslint-config-standard": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-standard/-/eslint-config-standard-8.0.1.tgz", + "integrity": "sha512-+FsTb8kOf2GSbXXTwbigRBRRur/byMbwL6Ijii2JoXW4hsLB4arl9lbgV54OUOV5o20INLHDmBVONO16rP/a1g==", + "dev": true, + "requires": { + "eslint-config-standard": "^17.0.0", + "eslint-import-resolver-custom-alias": "^1.3.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.2.4", + "eslint-plugin-promise": "^6.0.0" + } + }, + "@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "dev": true, + "requires": {} + }, + "@vue/reactivity": { + "version": "3.2.31", + "requires": { + "@vue/shared": "3.2.31" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.31", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.31", + "@vue/shared": "3.2.31", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.31", + "requires": { + "@vue/reactivity": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/runtime-dom": { + "version": "3.2.31", + "requires": { + "@vue/runtime-core": "3.2.31", + "@vue/shared": "3.2.31", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.31", + "requires": { + "@vue/compiler-ssr": "3.2.31", + "@vue/shared": "3.2.31" + } + }, + "@vue/shared": { + "version": "3.2.31" + }, + "@vue/test-utils": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.6.tgz", + "integrity": "sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==", + "dev": true, + "requires": { + "js-beautify": "^1.14.9", + "vue-component-type-helpers": "^2.0.0" + } + }, + "@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "dev": true + }, + "@vueform/toggle": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vueform/toggle/-/toggle-2.1.1.tgz", + "integrity": "sha512-5o//0DkYMFSICD1ShT0CZN9RywtwX79FkeYfl0N6Xe/rpTLsqZ6g2b/jRFimU+0CUOiGCcA27hTrzSUx9p3Iiw==" + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, "requires": { - "@loopback/metadata": "^5.0.2", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "hyperid": "^3.0.1", - "p-event": "^4.2.0", - "tslib": "^2.4.0", - "uuid": "^8.3.2" + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" }, "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true } } }, - "@loopback/core": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@loopback/core/-/core-4.0.2.tgz", - "integrity": "sha512-R+cik+p5i+cBH1uae6wbap1zrQKMVrgnDTIKXn4FWc9UjQFo0BhEuwhz/73sJr9zRLRI7gDNM2FRC7IfE5o3Xg==", - "requires": { - "@loopback/context": "^5.0.2", - "debug": "^4.3.4", - "tslib": "^2.4.0" - } + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "dev": true }, - "@loopback/filter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@loopback/filter/-/filter-3.0.2.tgz", - "integrity": "sha512-cGSUbz3gRuIGch9yJ/14R5Pm05JKjKvu4pBxHJxWaPlZFlpISw47ZK+qoXtz+HEz5uqZOVJ1v4BSTjswx/1jCQ==", + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "dev": true, "requires": { - "tslib": "^2.4.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "@loopback/metadata": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/metadata/-/metadata-5.0.2.tgz", - "integrity": "sha512-zu2c490jhBrmSWSpwUgcVCy/0gsdxM4o7g9HnxGd+VKNNtNOWJzNR71hIeI50Dp71+kgYypZ58PCIlPaeXtoLw==", + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "dev": true, "requires": { - "debug": "^4.3.4", - "lodash": "^4.17.21", - "reflect-metadata": "^0.1.13", - "tslib": "^2.4.0" + "@xtuc/ieee754": "^1.2.0" } }, - "@loopback/model-api-builder": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@loopback/model-api-builder/-/model-api-builder-4.0.2.tgz", - "integrity": "sha512-X9kc2JkTKjcTfZNKmzlNq6B3rebR5fkiOVHmFZsGrnAF0CXdVRaawt2KtZ63D+J/MspSOjXOq+4KtZb1q5y/iw==", + "@webassemblyjs/leb128": { + "version": "1.9.0", + "dev": true, "requires": { - "tslib": "^2.4.0" + "@xtuc/long": "4.2.2" } }, - "@loopback/repository": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/repository/-/repository-5.0.2.tgz", - "integrity": "sha512-qbAVLWXuZM+e/owvWnuEIsPYuF0x8hqld4WO1DV5TBA6l5F09Y6wnYx6ytLs/eiuM41HP7sBgRMWyGVtAwRqLw==", - "requires": { - "@loopback/filter": "^3.0.2", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "lodash": "^4.17.21", - "loopback-datasource-juggler": "^4.27.1", - "tslib": "^2.4.0" - } + "@webassemblyjs/utf8": { + "version": "1.9.0", + "dev": true }, - "@loopback/service-proxy": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/service-proxy/-/service-proxy-5.0.2.tgz", - "integrity": "sha512-JWK9WeWgsh5OSisho5z99Q2P3TTqDluzBEUsfkTSFetoIFm2ypXAWzNwaqLhdO3n098mRkEON2Ke0l0GsofiKQ==", + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "dev": true, "requires": { - "loopback-datasource-juggler": "^4.27.1", - "tslib": "^2.4.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "@loopback/testlab": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@loopback/testlab/-/testlab-5.0.2.tgz", - "integrity": "sha512-iZK36htP1uAle5gyIj0n8tbTPnQ/SUQ32cFC/o583EXiNyg62oj9bN31PKbLeGnks1BfQc82yMYWAxcN4UZUTA==", + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", "dev": true, "requires": { - "@hapi/shot": "^6.0.0", - "@types/express": "^4.17.13", - "@types/fs-extra": "^9.0.13", - "@types/shot": "^4.0.1", - "@types/sinon": "^10.0.12", - "@types/supertest": "^2.0.12", - "express": "^4.18.1", - "fs-extra": "^10.1.0", - "oas-validator": "^5.0.8", - "should": "^13.2.3", - "sinon": "^11.1.2", - "supertest": "^6.2.3", - "tslib": "^2.4.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "@malept/cross-spawn-promise": { - "version": "1.1.1", + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", "dev": true, "requires": { - "cross-spawn": "^7.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "@malept/flatpak-bundler": { - "version": "0.4.0", + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", "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", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", + "@webassemblyjs/wast-parser": { + "version": "1.9.0", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "@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==", + "@webassemblyjs/wast-printer": { + "version": "1.9.0", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "dependencies": { - "@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 - } + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "@nodelib/fs.stat": { - "version": "1.1.3", + "@xmldom/xmldom": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.9.tgz", + "integrity": "sha512-4VSbbcMoxc4KLjb1gs96SRmi7w4h1SF+fCoiK0XaQX62buCc1G5d0DC5bJ9xJBNPDSVCmIrcl8BiYxzjrqaaJA==", + "dev": true, + "optional": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", "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==", + "@xtuc/long": { + "version": "4.2.2", + "dev": true + }, + "7zip-bin": { + "version": "5.1.1", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "dev": true + }, + "accept-language": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", + "integrity": "sha512-sUofgqBPzgfcF20sPoBYGQ1IhQLt2LSkxTnlQSuLF3n5gPEqd5AimbvOvHEi0T1kLMiGVqPWzI5a9OteBRth3A==", + "requires": { + "bcp47": "^1.1.2", + "stable": "^0.1.6" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, - "@npmcli/move-file": { - "version": "1.1.2", + "acorn": { + "version": "6.4.2", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" }, "dependencies": { - "mkdirp": { - "version": "1.0.4", + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true } } }, - "@popperjs/core": { - "version": "2.11.0" + "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": {} }, - "@sindresorhus/is": { - "version": "0.14.0", + "acorn-walk": { + "version": "7.2.0", "dev": true }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "address": { + "version": "1.1.2", + "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": { - "type-detect": "4.0.8" + "debug": "4" } }, - "@sinonjs/fake-timers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", - "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "aggregate-error": { + "version": "3.1.0", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" } }, - "@sinonjs/samsam": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", - "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "ajv": { + "version": "6.12.6", "dev": true, "requires": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "ajv-errors": { + "version": "1.0.1", + "dev": true, + "requires": {} + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", "dev": true }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.8.0", + "amdefine": { + "version": "1.0.1", + "dev": true + }, + "ansi-align": { + "version": "3.0.0", "dev": true, "requires": { - "chalk": "^2.4.2", - "error-stack-parser": "^2.0.2", - "string-width": "^2.0.0", - "strip-ansi": "^5" + "string-width": "^3.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", + "emoji-regex": { + "version": "7.0.3", "dev": true }, "is-fullwidth-code-point": { @@ -32525,20 +45844,12 @@ "dev": true }, "string-width": { - "version": "2.1.1", + "version": "3.1.0", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -32546,693 +45857,742 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - } } } } }, - "@soda/get-current-script": { - "version": "1.0.2", + "ansi-colors": { + "version": "3.2.4", "dev": true }, - "@stylelint/postcss-css-in-js": { - "version": "0.37.2", + "ansi-escapes": { + "version": "4.3.2", "dev": true, "requires": { - "@babel/core": ">=7.9.0" + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "dev": true + } } }, - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "dev": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - } + "ansi-html-community": { + "version": "0.0.8", + "dev": true }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } + "ansi-regex": { + "version": "4.1.0", + "dev": true }, - "@types/body-parser": { - "version": "1.19.1", + "ansi-styles": { + "version": "3.2.1", "dev": true, "requires": { - "@types/connect": "*", - "@types/node": "*" + "color-convert": "^1.9.0" } }, - "@types/connect": { - "version": "3.4.35", + "any-promise": { + "version": "1.3.0", + "dev": true + }, + "anymatch": { + "version": "3.1.2", "dev": true, "requires": { - "@types/node": "*" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", + "app-builder-bin": { + "version": "3.5.13", + "dev": true + }, + "app-builder-lib": { + "version": "22.11.7", "dev": true, "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-publish": "22.11.7", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.0.4", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "dev": true + }, + "builder-util-runtime": { + "version": "8.7.7", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + }, + "ci-info": { + "version": "3.2.0", + "dev": true + }, + "ejs": { + "version": "3.1.6", + "dev": true, + "requires": { + "jake": "^10.6.1" + } + }, + "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" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "is-ci": { + "version": "3.0.0", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "js-yaml": { + "version": "4.1.0", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } } }, - "@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", - "dev": true - }, - "@types/debug": { - "version": "4.1.7", + "append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, "requires": { - "@types/ms": "*" + "default-require-extensions": "^3.0.0" } }, - "@types/electron-devtools-installer": { + "aproba": { + "version": "1.2.0", + "dev": true + }, + "arch": { "version": "2.2.0", "dev": true }, - "@types/eslint-visitor-keys": { + "archy": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, - "@types/express": { - "version": "4.17.13", + "are-we-there-yet": { + "version": "1.1.5", "dev": true, "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "@types/express-serve-static-core": { - "version": "4.17.25", - "dev": true, + "arg": { + "version": "4.1.3", + "dev": true + }, + "argparse": { + "version": "1.0.10", "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "sprintf-js": "~1.0.2" } }, - "@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==", + "arr-diff": { + "version": "4.0.0", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "dev": true + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, "requires": { - "@types/node": "*" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" } }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "array-flatten": { + "version": "1.1.1", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "dev": true + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" } }, - "@types/http-proxy": { - "version": "1.17.7", + "array-union": { + "version": "1.0.2", "dev": true, "requires": { - "@types/node": "*" + "array-uniq": "^1.0.1" } }, - "@types/ini": { - "version": "1.3.31", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.9", + "array-uniq": { + "version": "1.0.3", "dev": true }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "array-unique": { + "version": "0.3.2", "dev": true }, - "@types/mdast": { - "version": "3.0.3", + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "requires": { - "@types/unist": "*" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" } }, - "@types/mime": { - "version": "1.3.2", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.4" + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } }, - "@types/minimist": { - "version": "1.2.1", + "arrify": { + "version": "1.0.1", "dev": true }, - "@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, - "@types/mock-fs": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.1.tgz", - "integrity": "sha512-m6nFAJ3lBSnqbvDZioawRvpLXSaPyn52Srf7OfzjubYbYX8MTUdIgDxQl0wEapm4m/pNYSd9TXocpQ0TvZFlYA==", + "asar": { + "version": "3.0.3", "dev": true, "requires": { - "@types/node": "*" + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "dev": true + } } }, - "@types/mock-require": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/mock-require/-/mock-require-2.0.1.tgz", - "integrity": "sha512-O7U5DVGboY/Crueb5/huUCIRjKtRVRaLmRDbZJBlDQgJn966z3aiFDN+6AtYviu2ExwMkl34LjT/IiC0OPtKuQ==", + "asn1": { + "version": "0.2.4", "dev": true, "requires": { - "@types/node": "*" + "safer-buffer": "~2.1.0" } }, - "@types/ms": { - "version": "0.7.31" - }, - "@types/ncp": { - "version": "2.0.5", + "asn1.js": { + "version": "5.4.1", "dev": true, "requires": { - "@types/node": "*" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } } }, - "@types/node": { - "version": "15.6.0" - }, - "@types/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", + "assert": { + "version": "1.5.0", "dev": true, "requires": { - "@types/node": "*", - "form-data": "^3.0.0" + "object-assign": "^4.1.1", + "util": "0.10.3" }, "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "inherits": { + "version": "2.0.1", + "dev": true + }, + "util": { + "version": "0.10.3", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "inherits": "2.0.1" } } } }, - "@types/normalize-package-data": { - "version": "2.4.0", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", + "assert-plus": { + "version": "1.0.0", "dev": true }, - "@types/range-parser": { - "version": "1.2.4", + "assign-symbols": { + "version": "1.0.0", "dev": true }, - "@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, - "@types/serve-static": { - "version": "1.13.10", + "async": { + "version": "2.6.3", "dev": true, "requires": { - "@types/mime": "^1", - "@types/node": "*" + "lodash": "^4.17.14" } }, - "@types/shot": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/shot/-/shot-4.0.1.tgz", - "integrity": "sha512-LUJWxDKYWmmUpVXDWZ78hFIrqb/ho9RoKqBAFRJw4OHOS3qCKCoXCyzrfmf24lbO4COYfqL0iEWNArOfKEYW9g==", - "dev": true, - "requires": { - "@types/node": "*" - } + "async-each": { + "version": "1.0.3", + "dev": true }, - "@types/sinon": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", - "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", - "dev": true, - "requires": { - "@types/sinonjs__fake-timers": "*" - } + "async-exit-hook": { + "version": "2.0.1", + "dev": true }, - "@types/sinonjs__fake-timers": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", - "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "async-foreach": { + "version": "0.1.3", "dev": true }, - "@types/source-list-map": { - "version": "0.1.2", + "async-limiter": { + "version": "1.0.1", "dev": true }, - "@types/superagent": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.15.tgz", - "integrity": "sha512-mu/N4uvfDN2zVQQ5AYJI/g4qxn2bHB6521t1UuH09ShNWjebTqN0ZFuYK9uYjcgmI0dTQEs+Owi1EO6U0OkOZQ==", - "dev": true, - "requires": { - "@types/cookiejar": "*", - "@types/node": "*" - } + "asynckit": { + "version": "0.4.0", + "dev": true }, - "@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", - "dev": true, - "requires": { - "@types/superagent": "*" - } + "at-least-node": { + "version": "1.0.0", + "dev": true }, - "@types/tapable": { - "version": "1.0.8", + "atob": { + "version": "2.1.2", "dev": true }, - "@types/uglify-js": { - "version": "3.13.1", + "atomically": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", + "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" + }, + "autoprefixer": { + "version": "9.8.6", "dev": true, "requires": { - "source-map": "^0.6.1" + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, "source-map": { "version": "0.6.1", "dev": true } } }, - "@types/unist": { - "version": "2.0.3", + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "dev": true }, - "@types/webpack": { - "version": "4.41.31", - "dev": true, - "requires": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "@types/webpack-dev-server": { - "version": "3.11.6", - "dev": true, - "requires": { - "@types/connect-history-api-fallback": "*", - "@types/express": "*", - "@types/serve-static": "*", - "@types/webpack": "^4", - "http-proxy-middleware": "^1.0.0" - } + "aws-sign2": { + "version": "0.7.0", + "dev": true }, - "@types/webpack-env": { - "version": "1.16.3", + "aws4": { + "version": "1.11.0", "dev": true }, - "@types/webpack-sources": { - "version": "3.2.0", + "babel-code-frame": { + "version": "6.26.0", "dev": true, "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { - "source-map": { - "version": "0.7.3", + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", "dev": true } } }, - "@types/yargs-parser": { - "version": "20.2.0", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.34.0", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.32.0.tgz", - "integrity": "sha512-KyAE+tUON0D7tNz92p1uetRqVJiiAkeluvwvZOqBmW9z2XApmk5WSMV9FrzOroAcVxJZB3GfUwVKr98Dr/OjOg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.32.0.tgz", - "integrity": "sha512-0gSsIhFDduBz3QcHJIp3qRCvVYbqzHg8D6bHFsDMrm0rURYDj+skBK2zmYebdCp+4nrd9VWd13egvhYFJj/wZg==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.32.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.32.0.tgz", - "integrity": "sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "2.34.0", + "babel-eslint": { + "version": "10.1.0", "dev": true, "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" } }, - "@typescript-eslint/utils": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.32.0.tgz", - "integrity": "sha512-W7lYIAI5Zlc5K082dGR27Fczjb3Q57ECcXefKU/f0ajM5ToM0P+N9NmJWip8GmGu/g6QISNT+K6KYB+iSHjXCQ==", + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", "dev": true, "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.32.0", - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/typescript-estree": "5.32.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, "dependencies": { - "@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 + "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" + } }, - "@typescript-eslint/typescript-estree": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz", - "integrity": "sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg==", + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.32.0", - "@typescript-eslint/visitor-keys": "5.32.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" } }, - "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 + "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" + } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "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": { - "fill-range": "^7.0.1" + "color-name": "~1.1.4" } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "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 + }, + "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 + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { - "path-type": "^4.0.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" } }, - "eslint-utils": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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" + } + } + } + }, + "babel-loader": { + "version": "8.2.3", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "eslint-visitor-keys": "^2.0.0" + "locate-path": "^3.0.0" } }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "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==", + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "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" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" } }, - "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==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "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" + "p-limit": "^2.0.0" } }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, - "path-type": { + "read-pkg-up": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, - "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==", + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "is-number": "^7.0.0" + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" } } } }, - "@typescript-eslint/visitor-keys": { - "version": "5.32.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz", - "integrity": "sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.32.0", - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - } - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.2.1", - "dev": true - }, - "@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.1", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.2.1", + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "html-tags": "^2.0.0", - "lodash.kebabcase": "^4.1.1", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "html-tags": { - "version": "2.0.0", - "dev": true - } + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" } }, - "@vue/babel-preset-app": { - "version": "4.5.15", + "babel-plugin-polyfill-corejs2": { + "version": "0.2.3", "dev": true, "requires": { - "@babel/core": "^7.11.0", - "@babel/helper-compilation-targets": "^7.9.6", - "@babel/helper-module-imports": "^7.8.3", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/plugin-proposal-decorators": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.11.0", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.0", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.2.4", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.6.5", - "core-js-compat": "^3.6.5", - "semver": "^6.1.0" + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.4", + "semver": "^6.1.1" }, "dependencies": { "semver": { @@ -33241,367 +46601,269 @@ } } }, - "@vue/babel-preset-jsx": { - "version": "1.2.4", - "dev": true, - "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", - "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", - "@vue/babel-sugar-functional-vue": "^1.2.2", - "@vue/babel-sugar-inject-h": "^1.2.2", - "@vue/babel-sugar-v-model": "^1.2.3", - "@vue/babel-sugar-v-on": "^1.2.3" - } - }, - "@vue/babel-sugar-composition-api-inject-h": { - "version": "1.2.1", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-composition-api-render-instance": { - "version": "1.2.4", - "dev": true, - "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" - } - }, - "@vue/babel-sugar-functional-vue": { - "version": "1.2.2", + "babel-plugin-polyfill-corejs3": { + "version": "0.3.0", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-define-polyfill-provider": "^0.2.4", + "core-js-compat": "^3.18.0" } }, - "@vue/babel-sugar-inject-h": { - "version": "1.2.2", + "babel-plugin-polyfill-regenerator": { + "version": "0.2.3", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-define-polyfill-provider": "^0.2.4" } }, - "@vue/babel-sugar-v-model": { - "version": "1.2.3", + "babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0", - "html-tags": "^2.0.0", - "svg-tags": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "html-tags": { - "version": "2.0.0", - "dev": true - } + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" } }, - "@vue/babel-sugar-v-on": { - "version": "1.2.3", + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", "dev": true, "requires": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - } + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" } }, - "@vue/cli-overlay": { - "version": "4.5.15", + "bail": { + "version": "1.0.5", "dev": true }, - "@vue/cli-plugin-babel": { - "version": "4.5.15", + "balanced-match": { + "version": "1.0.2" + }, + "base": { + "version": "0.11.2", "dev": true, "requires": { - "@babel/core": "^7.11.0", - "@vue/babel-preset-app": "^4.5.15", - "@vue/cli-shared-utils": "^4.5.15", - "babel-loader": "^8.1.0", - "cache-loader": "^4.1.0", - "thread-loader": "^2.1.3", - "webpack": "^4.0.0" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "@vue/cli-shared-utils": { - "version": "4.5.15", + "define-property": { + "version": "1.0.0", "dev": true, "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "is-descriptor": "^1.0.0" } }, - "lru-cache": { - "version": "5.1.1", + "is-accessor-descriptor": { + "version": "1.0.0", "dev": true, "requires": { - "yallist": "^3.0.2" + "kind-of": "^6.0.0" } }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "dev": true - } - } - }, - "@vue/cli-plugin-eslint": { - "version": "4.5.15", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.15", - "eslint-loader": "^2.2.1", - "globby": "^9.2.0", - "inquirer": "^7.1.0", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "dependencies": { - "@vue/cli-shared-utils": { - "version": "4.5.15", + "is-data-descriptor": { + "version": "1.0.0", "dev": true, "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "kind-of": "^6.0.0" } }, - "lru-cache": { - "version": "5.1.1", + "is-descriptor": { + "version": "1.0.2", "dev": true, "requires": { - "yallist": "^3.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "dev": true } } }, - "@vue/cli-plugin-router": { - "version": "4.5.15", + "base64-js": { + "version": "1.5.1", + "dev": true + }, + "batch": { + "version": "0.6.1", + "dev": true + }, + "bcp47": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", + "integrity": "sha512-JnkkL4GUpOvvanH9AZPX38CxhiLsXMBicBY2IAtqiVN8YulGDQybUydWA4W6yAMtw6iShtw+8HEF6cfrTHU+UQ==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.15" - }, - "dependencies": { - "@vue/cli-shared-utils": { - "version": "4.5.15", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "dev": true - } + "tweetnacl": "^0.14.3" } }, - "@vue/cli-plugin-typescript": { - "version": "4.5.15", + "bfj": { + "version": "6.1.2", "dev": true, "requires": { - "@types/webpack-env": "^1.15.2", - "@vue/cli-shared-utils": "^4.5.15", - "cache-loader": "^4.1.0", - "fork-ts-checker-webpack-plugin": "^3.1.1", - "fork-ts-checker-webpack-plugin-v5": "npm:fork-ts-checker-webpack-plugin@^5.0.11", - "globby": "^9.2.0", - "thread-loader": "^2.1.3", - "ts-loader": "^6.2.2", - "tslint": "^5.20.1", - "webpack": "^4.0.0", - "yorkie": "^2.0.0" - }, - "dependencies": { - "@vue/cli-shared-utils": { - "version": "4.5.15", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bluebird": { + "version": "3.7.2" + }, + "bluebird-lst": { + "version": "1.0.9", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, + "bn.js": { + "version": "5.2.0", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "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": { - "yallist": "^3.0.2" + "ms": "2.0.0" } }, - "semver": { - "version": "6.3.0", + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, - "yallist": { - "version": "3.1.1", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } } } }, - "@vue/cli-plugin-vuex": { - "version": "4.5.15", + "bonjour": { + "version": "3.5.0", "dev": true, - "requires": {} + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "dev": true + } + } }, - "@vue/cli-service": { - "version": "4.5.15", + "boolbase": { + "version": "1.0.0", + "dev": true + }, + "boolean": { + "version": "3.1.4", + "optional": true + }, + "boxen": { + "version": "5.0.1", "dev": true, "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@soda/get-current-script": "^1.0.0", - "@types/minimist": "^1.2.0", - "@types/webpack": "^4.0.0", - "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.15", - "@vue/cli-plugin-router": "^4.5.15", - "@vue/cli-plugin-vuex": "^4.5.15", - "@vue/cli-shared-utils": "^4.5.15", - "@vue/component-compiler-utils": "^3.1.2", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^7.4.0", - "acorn-walk": "^7.1.1", - "address": "^1.1.2", - "autoprefixer": "^9.8.6", - "browserslist": "^4.12.0", - "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.4", - "clipboardy": "^2.3.0", - "cliui": "^6.0.0", - "copy-webpack-plugin": "^5.1.1", - "css-loader": "^3.5.3", - "cssnano": "^4.1.10", - "debug": "^4.1.1", - "default-gateway": "^5.0.5", - "dotenv": "^8.2.0", - "dotenv-expand": "^5.1.0", - "file-loader": "^4.2.0", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.9.0", - "minimist": "^1.2.5", - "pnp-webpack-plugin": "^1.6.4", - "portfinder": "^1.0.26", - "postcss-loader": "^3.0.0", - "ssri": "^8.0.1", - "terser-webpack-plugin": "^1.4.4", - "thread-loader": "^2.1.3", - "url-loader": "^2.2.0", - "vue-loader": "^15.9.2", - "vue-loader-v16": "npm:vue-loader@^16.1.0", - "vue-style-loader": "^4.1.2", - "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.8.0", - "webpack-chain": "^6.4.0", - "webpack-dev-server": "^3.11.0", - "webpack-merge": "^4.2.2" + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { - "@vue/cli-shared-utils": { - "version": "4.5.15", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" - } - }, - "acorn": { - "version": "7.4.1", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "dev": true, @@ -33609,13 +46871,12 @@ "color-convert": "^2.0.1" } }, - "cliui": { - "version": "6.0.0", + "chalk": { + "version": "4.1.2", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "color-convert": { @@ -33629,1541 +46890,1465 @@ "version": "1.1.4", "dev": true }, - "fs-extra": { - "version": "7.0.1", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, "has-flag": { "version": "4.0.0", - "dev": true, - "optional": true - }, - "jsonfile": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "loader-utils": { - "version": "2.0.2", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "lru-cache": { - "version": "5.1.1", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "semver": { - "version": "6.3.0", "dev": true }, - "ssri": { - "version": "8.0.1", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, "supports-color": { "version": "7.2.0", "dev": true, - "optional": true, "requires": { "has-flag": "^4.0.0" } }, - "universalify": { - "version": "0.1.2", + "type-fest": { + "version": "0.20.2", "dev": true }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.8.3", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, "wrap-ansi": { - "version": "6.2.0", + "version": "7.0.0", "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } - }, - "yallist": { - "version": "3.1.1", - "dev": true } } }, - "@vue/cli-shared-utils": { - "version": "4.5.13", + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", "dev": true, "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.2", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "read-pkg": "^5.1.1", - "request": "^2.88.2", - "semver": "^6.1.0", - "strip-ansi": "^6.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { - "lru-cache": { - "version": "5.1.1", + "extend-shallow": { + "version": "2.0.1", "dev": true, "requires": { - "yallist": "^3.0.2" + "is-extendable": "^0.1.0" } - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "dev": true } } }, - "@vue/compiler-core": { - "version": "3.2.31", + "brorand": { + "version": "1.1.0", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "dev": true, "requires": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.31", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1" - } + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "@vue/compiler-dom": { - "version": "3.2.31", + "browserify-cipher": { + "version": "1.0.1", + "dev": true, "requires": { - "@vue/compiler-core": "3.2.31", - "@vue/shared": "3.2.31" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "@vue/compiler-sfc": { - "version": "3.2.31", + "browserify-des": { + "version": "1.0.2", + "dev": true, "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.31", - "@vue/compiler-dom": "3.2.31", - "@vue/compiler-ssr": "3.2.31", - "@vue/reactivity-transform": "3.2.31", - "@vue/shared": "3.2.31", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "dependencies": { - "source-map": { - "version": "0.6.1" + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "dev": true } } }, - "@vue/compiler-ssr": { - "version": "3.2.31", + "browserify-zlib": { + "version": "0.2.0", + "dev": true, "requires": { - "@vue/compiler-dom": "3.2.31", - "@vue/shared": "3.2.31" + "pako": "~1.0.5" } }, - "@vue/component-compiler-utils": { - "version": "3.3.0", + "browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13" + }, + "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-from": { + "version": "1.1.1" + }, + "buffer-indexof": { + "version": "1.1.1", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "dev": true + }, + "builder-util": { + "version": "22.11.7", + "dev": true, + "requires": { + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.5.13", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "debug": "^4.3.2", + "fs-extra": "^10.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": { - "hash-sum": { - "version": "1.0.2", + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "dev": true + }, + "builder-util-runtime": { + "version": "8.7.7", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "3.2.0", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", "dev": true }, - "lru-cache": { - "version": "4.1.5", + "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": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "picocolors": { - "version": "0.2.1", + "has-flag": { + "version": "4.0.0", "dev": true }, - "postcss": { - "version": "7.0.39", + "is-ci": { + "version": "3.0.0", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ci-info": "^3.1.1" } }, - "source-map": { - "version": "0.6.1", - "dev": true + "js-yaml": { + "version": "4.1.0", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } }, - "yallist": { - "version": "2.1.2", - "dev": true + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "@vue/devtools-api": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz", - "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" - }, - "@vue/eslint-config-prettier": { - "version": "6.0.0", - "dev": true, - "requires": { - "eslint-config-prettier": "^6.0.0" - } - }, - "@vue/eslint-config-standard": { - "version": "5.1.2", - "dev": true, - "requires": { - "eslint-config-standard": "^14.1.0", - "eslint-import-resolver-node": "^0.3.3", - "eslint-import-resolver-webpack": "^0.12.1" - } - }, - "@vue/eslint-config-typescript": { - "version": "5.1.0", - "dev": true, - "requires": { - "vue-eslint-parser": "^7.0.0" - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.2", - "dev": true, - "requires": {} - }, - "@vue/reactivity": { - "version": "3.2.31", - "requires": { - "@vue/shared": "3.2.31" - } - }, - "@vue/reactivity-transform": { - "version": "3.2.31", - "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.31", - "@vue/shared": "3.2.31", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "@vue/runtime-core": { - "version": "3.2.31", - "requires": { - "@vue/reactivity": "3.2.31", - "@vue/shared": "3.2.31" - } - }, - "@vue/runtime-dom": { - "version": "3.2.31", - "requires": { - "@vue/runtime-core": "3.2.31", - "@vue/shared": "3.2.31", - "csstype": "^2.6.8" - } - }, - "@vue/server-renderer": { - "version": "3.2.31", - "requires": { - "@vue/compiler-ssr": "3.2.31", - "@vue/shared": "3.2.31" - } - }, - "@vue/shared": { - "version": "3.2.31" - }, - "@vue/web-component-wrapper": { - "version": "1.3.0", - "dev": true - }, - "@vueform/toggle": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@vueform/toggle/-/toggle-2.1.1.tgz", - "integrity": "sha512-5o//0DkYMFSICD1ShT0CZN9RywtwX79FkeYfl0N6Xe/rpTLsqZ6g2b/jRFimU+0CUOiGCcA27hTrzSUx9p3Iiw==" - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "dev": true, + "builder-util-runtime": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", + "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "debug": "^4.3.2", + "sax": "^1.2.4" } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", + "builtin-modules": { + "version": "1.1.1", "dev": true }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", + "builtin-status-codes": { + "version": "3.0.0", "dev": true }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.9.0" + "semver": "^7.0.0" } }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", + "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 }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", + "cacache": { + "version": "12.0.4", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "yallist": { + "version": "3.1.1", + "dev": true + } } }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", + "cache-base": { + "version": "1.0.1", "dev": true, "requires": { - "@xtuc/ieee754": "^1.2.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "@webassemblyjs/leb128": { - "version": "1.9.0", + "cache-loader": { + "version": "4.1.0", "dev": true, "requires": { - "@xtuc/long": "4.2.2" + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" } }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "dev": true, + "cacheable-request": { + "version": "6.1.0", "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0" + }, + "normalize-url": { + "version": "4.5.1" + } } }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", + "caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" } }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "dev": true, + "call-bind": { + "version": "1.0.2", "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" } }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "dev": true, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" } }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", + "call-me-maybe": { + "version": "1.0.1", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "dev": true + } } }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", + "caller-path": { + "version": "2.0.0", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "caller-callsite": "^2.0.0" } }, - "@xtuc/ieee754": { - "version": "1.2.0", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "dev": true - }, - "7zip-bin": { - "version": "5.1.1", - "dev": true - }, - "abbrev": { - "version": "1.1.1", + "callsites": { + "version": "3.1.0", "dev": true }, - "accept-language": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", - "integrity": "sha512-sUofgqBPzgfcF20sPoBYGQ1IhQLt2LSkxTnlQSuLF3n5gPEqd5AimbvOvHEi0T1kLMiGVqPWzI5a9OteBRth3A==", - "requires": { - "bcp47": "^1.1.2", - "stable": "^0.1.6" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "camel-case": { + "version": "3.0.0", "dev": true, "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, - "acorn": { - "version": "6.4.2", - "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": "7.2.0", - "dev": true - }, - "address": { - "version": "1.1.2", + "camelcase": { + "version": "6.2.0", "dev": true }, - "aggregate-error": { - "version": "3.1.0", + "camelcase-keys": { + "version": "6.2.2", "dev": true, "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "dev": true + } } }, - "ajv": { - "version": "6.12.6", + "caniuse-api": { + "version": "3.0.0", "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" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "ajv-errors": { - "version": "1.0.1", - "dev": true, - "requires": {} + "caniuse-lite": { + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", + "dev": true }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "requires": { - "ajv": "^8.0.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" }, "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "tslib": "^2.0.3" } }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } } } }, - "ajv-keywords": { - "version": "3.5.2", + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, - "requires": {} + "requires": { + "rsvp": "^4.8.4" + } }, - "alphanum-sort": { - "version": "1.0.2", + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", "dev": true }, - "amdefine": { - "version": "1.0.1", + "caseless": { + "version": "0.12.0", "dev": true }, - "ansi-align": { - "version": "3.0.0", + "chalk": { + "version": "2.4.2", "dev": true, "requires": { - "string-width": "^3.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "dev": true + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } }, - "string-width": { - "version": "3.1.0", - "dev": true, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "requires": { - "ansi-regex": "^4.1.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } } } }, - "ansi-colors": { - "version": "3.2.4", + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "ansi-escapes": { - "version": "4.3.2", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "dev": true - } - } - }, - "ansi-html-community": { - "version": "0.0.8", + "character-entities": { + "version": "1.2.4", "dev": true }, - "ansi-regex": { - "version": "4.1.0", + "character-entities-legacy": { + "version": "1.1.4", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", + "character-reference-invalid": { + "version": "1.1.4", "dev": true }, - "anymatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" }, - "app-builder-bin": { - "version": "3.5.13", + "check-types": { + "version": "8.0.3", "dev": true }, - "app-builder-lib": { - "version": "22.11.7", + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "@develar/schema-utils": "~2.6.5", - "@electron/universal": "1.0.5", - "@malept/flatpak-bundler": "^0.4.0", - "7zip-bin": "~5.1.1", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.7", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.2", - "ejs": "^3.1.6", - "electron-publish": "22.11.7", - "fs-extra": "^10.0.0", - "hosted-git-info": "^4.0.2", - "is-ci": "^3.0.0", - "isbinaryfile": "^4.0.8", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^3.0.4", - "read-config-file": "6.2.0", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.5", - "temp-file": "^3.4.0" + "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": { - "argparse": { - "version": "2.0.1", - "dev": true - }, - "builder-util-runtime": { - "version": "8.7.7", - "dev": true, - "requires": { - "debug": "^4.3.2", - "sax": "^1.2.4" - } - }, - "ci-info": { - "version": "3.2.0", - "dev": true - }, - "ejs": { - "version": "3.1.6", + "braces": { + "version": "3.0.2", "dev": true, "requires": { - "jake": "^10.6.1" + "fill-range": "^7.0.1" } }, - "hosted-git-info": { - "version": "4.0.2", + "fill-range": { + "version": "7.0.1", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "to-regex-range": "^5.0.1" } }, - "is-ci": { - "version": "3.0.0", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } + "is-number": { + "version": "7.0.0", + "dev": true }, - "js-yaml": { - "version": "4.1.0", + "to-regex-range": { + "version": "5.0.1", "dev": true, "requires": { - "argparse": "^2.0.1" + "is-number": "^7.0.0" } } } }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } + "chownr": { + "version": "1.1.4", + "dev": true }, - "aproba": { - "version": "1.2.0", + "chrome-trace-event": { + "version": "1.0.3", "dev": true }, - "arch": { - "version": "2.2.0", + "chromium-pickle-js": { + "version": "0.2.0", "dev": true }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "ci-info": { + "version": "1.6.0", "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", + "cipher-base": { + "version": "1.0.4", "dev": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "arg": { - "version": "4.1.3", + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", "dev": true }, - "argparse": { - "version": "1.0.10", + "class-utils": { + "version": "0.3.6", + "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } } }, - "arr-diff": { - "version": "4.0.0", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "dev": true + "cldrjs": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", + "integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA==" }, - "arr-union": { - "version": "3.1.0", - "dev": true + "clean-css": { + "version": "4.2.4", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } }, - "array-find": { - "version": "1.0.0", + "clean-stack": { + "version": "2.2.0", "dev": true }, - "array-flatten": { - "version": "1.1.1", + "cli-boxes": { + "version": "2.2.1", "dev": true }, - "array-ify": { - "version": "1.0.0", - "dev": true + "cli-cursor": { + "version": "2.1.0", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } }, - "array-includes": { - "version": "3.1.4", + "cli-highlight": { + "version": "2.1.11", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" }, "dependencies": { - "es-abstract": { - "version": "1.19.1", + "ansi-styles": { + "version": "4.3.0", "dev": true, "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "color-convert": "^2.0.1" } }, - "is-callable": { - "version": "1.2.4", - "dev": true - }, - "is-regex": { - "version": "1.1.4", + "chalk": { + "version": "4.1.2", "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "is-string": { - "version": "1.0.7", + "cliui": { + "version": "7.0.4", "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } - } - } - }, - "array-union": { - "version": "1.0.2", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "dev": true - }, - "array.prototype.flat": { - "version": "1.2.5", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.19.1", + }, + "color-convert": { + "version": "2.0.1", "dev": true, "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "color-name": "~1.1.4" } }, - "is-callable": { - "version": "1.2.4", + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", "dev": true }, - "is-regex": { - "version": "1.1.4", + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", "dev": true, "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "is-string": { - "version": "1.0.7", + "y18n": { + "version": "5.0.8", + "dev": true + }, + "yargs": { + "version": "16.2.0", "dev": true, "requires": { - "has-tostringtag": "^1.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.9", + "dev": true } } }, - "arrify": { - "version": "1.0.1", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "cli-spinners": { + "version": "2.6.0", "dev": true }, - "asar": { - "version": "3.0.3", + "cli-truncate": { + "version": "3.1.0", "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" + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" }, "dependencies": { - "commander": { - "version": "5.1.0", + "ansi-regex": { + "version": "6.0.1", "dev": true - } - } - }, - "asn1": { - "version": "0.2.4", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", + }, + "ansi-styles": { + "version": "6.1.0", "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", + }, + "emoji-regex": { + "version": "9.2.2", "dev": true }, - "util": { - "version": "0.10.3", + "is-fullwidth-code-point": { + "version": "4.0.0", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", "dev": true, "requires": { - "inherits": "2.0.1" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "string-width": { + "version": "5.0.1", + "dev": true, + "requires": { + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" } } } }, - "assert-plus": { - "version": "1.0.0", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "dev": true - }, - "async": { - "version": "2.6.3", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "dev": true - }, - "async-exit-hook": { - "version": "2.0.1", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "dev": true - }, - "atob": { - "version": "2.1.2", - "dev": true - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==" - }, - "autoprefixer": { - "version": "9.8.6", + "clipboardy": { + "version": "2.3.0", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "dev": true - }, - "postcss": { - "version": "7.0.39", + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "is-docker": "^2.0.0" } - }, - "source-map": { - "version": "0.6.1", - "dev": true } } }, - "aws-sign2": { - "version": "0.7.0", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", + "cliui": { + "version": "5.0.0", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", + "emoji-regex": { + "version": "7.0.3", "dev": true }, - "ansi-styles": { - "version": "2.2.1", + "is-fullwidth-code-point": { + "version": "2.0.0", "dev": true }, - "chalk": { - "version": "1.1.3", + "string-width": { + "version": "3.1.0", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, - "js-tokens": { - "version": "3.0.2", - "dev": true - }, "strip-ansi": { - "version": "3.0.1", + "version": "5.2.0", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^4.1.0" } - }, - "supports-color": { - "version": "2.0.0", - "dev": true } } }, - "babel-eslint": { - "version": "10.1.0", + "clone": { + "version": "1.0.4", + "dev": true + }, + "clone-regexp": { + "version": "2.2.0", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" + "is-regexp": "^2.0.0" + }, + "dependencies": { + "is-regexp": { + "version": "2.1.0", + "dev": true + } } }, - "babel-loader": { - "version": "8.2.3", + "clone-response": { + "version": "1.0.2", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "coa": { + "version": "2.0.2", "dev": true, "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", + "code-point-at": { + "version": "1.1.0", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", "dev": true, "requires": { - "object.assign": "^4.1.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.3", + "color": { + "version": "3.2.1", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.4", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, - "babel-plugin-polyfill-corejs3": { - "version": "0.3.0", + "color-convert": { + "version": "1.9.3", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.4", - "core-js-compat": "^3.18.0" + "color-name": "1.1.3" } }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.3", + "color-name": { + "version": "1.1.3", + "dev": true + }, + "color-string": { + "version": "1.6.0", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.4" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "bail": { - "version": "1.0.5", + "colorette": { + "version": "1.2.2", "dev": true }, - "balanced-match": { - "version": "1.0.2" + "colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true }, - "base": { - "version": "0.11.2", + "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", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "dev": true + }, + "commitlint": { + "version": "15.0.0", + "dev": true, + "requires": { + "@commitlint/cli": "^15.0.0", + "@commitlint/types": "^15.0.0" }, "dependencies": { - "define-property": { - "version": "1.0.0", + "@commitlint/cli": { + "version": "15.0.0", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "@commitlint/format": "^15.0.0", + "@commitlint/lint": "^15.0.0", + "@commitlint/load": "^15.0.0", + "@commitlint/read": "^15.0.0", + "@commitlint/types": "^15.0.0", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^17.0.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", + "ansi-styles": { + "version": "4.3.0", "dev": true, "requires": { - "kind-of": "^6.0.0" + "color-convert": "^2.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", + "cliui": { + "version": "7.0.4", "dev": true, "requires": { - "kind-of": "^6.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "is-descriptor": { - "version": "1.0.2", + "color-convert": { + "version": "2.0.1", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "dev": true + }, + "yargs": { + "version": "17.2.1", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.9", + "dev": true } } }, - "base64-js": { - "version": "1.5.1", - "dev": true - }, - "batch": { - "version": "0.6.1", + "commondir": { + "version": "1.0.1", "dev": true }, - "bcp47": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", - "integrity": "sha512-JnkkL4GUpOvvanH9AZPX38CxhiLsXMBicBY2IAtqiVN8YulGDQybUydWA4W6yAMtw6iShtw+8HEF6cfrTHU+UQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bfj": { - "version": "6.1.2", + "compare-func": { + "version": "2.0.0", "dev": true, "requires": { - "bluebird": "^3.5.5", - "check-types": "^8.0.3", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "big.js": { - "version": "5.2.2", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", + "component-emitter": { + "version": "1.3.0", "dev": true }, - "bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - }, - "bluebird": { - "version": "3.7.2" - }, - "bluebird-lst": { - "version": "1.0.9", + "compressible": { + "version": "2.0.18", "dev": true, "requires": { - "bluebird": "^3.5.5" + "mime-db": ">= 1.43.0 < 2" } }, - "bn.js": { - "version": "5.2.0", - "dev": true - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "compression": { + "version": "1.7.4", "dev": true, "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, "dependencies": { + "bytes": { + "version": "3.0.0", + "dev": true + }, "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" } }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } } } }, - "bonjour": { - "version": "3.5.0", - "dev": true, + "concat-map": { + "version": "0.0.1" + }, + "concat-stream": { + "version": "1.6.2", "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "dev": true - } + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "boolbase": { - "version": "1.0.0", - "dev": true - }, - "boolean": { - "version": "3.1.4", - "dev": true, - "optional": true - }, - "boxen": { - "version": "5.0.1", - "dev": true, + "conf": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", + "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.0", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "ajv": "^8.6.3", + "ajv-formats": "^2.1.1", + "atomically": "^1.7.0", + "debounce-fn": "^4.0.0", + "dot-prop": "^6.0.1", + "env-paths": "^2.2.1", + "json-schema-typed": "^7.0.3", + "onetime": "^5.1.2", + "pkg-up": "^3.1.0", + "semver": "^7.3.5" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "color-convert": { - "version": "2.0.1", - "dev": true, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "requires": { - "color-name": "~1.1.4" + "is-obj": "^2.0.0" } }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, - "type-fest": { - "version": "0.20.2", - "dev": true + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "wrap-ansi": { - "version": "7.0.0", - "dev": true, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "mimic-fn": "^2.1.0" } } } }, - "brace-expansion": { - "version": "1.1.11", + "config-chain": { + "version": "1.1.13", + "devOptional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "5.0.1", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "bluebird": "^3.1.1" } }, - "braces": { - "version": "2.3.2", - "dev": true, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "dev": true, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "requires": { - "is-extendable": "^0.1.0" + "tslib": "^2.0.3" + } + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "requires": { + "tslib": "^2.0.3" } } } }, - "brorand": { - "version": "1.1.0", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "constants-browserify": { + "version": "1.0.0", "dev": true }, - "browserify-aes": { - "version": "1.2.0", + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, - "browserify-cipher": { - "version": "1.0.1", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true }, - "browserify-des": { - "version": "1.0.2", + "conventional-changelog-angular": { + "version": "5.0.13", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "compare-func": "^2.0.0", + "q": "^1.5.1" } }, - "browserify-rsa": { - "version": "4.1.0", + "conventional-changelog-conventionalcommits": { + "version": "4.6.1", "dev": true, "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" } }, - "browserify-sign": { - "version": "4.2.1", + "conventional-commits-parser": { + "version": "3.2.3", "dev": true, "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, "dependencies": { "readable-stream": { @@ -35175,1164 +48360,1319 @@ "util-deprecate": "^1.0.1" } }, - "safe-buffer": { - "version": "5.2.1", - "dev": true + "through2": { + "version": "4.0.2", + "dev": true, + "requires": { + "readable-stream": "3" + } } } }, - "browserify-zlib": { - "version": "0.2.0", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.16.6", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "buffer": { - "version": "4.9.2", + "convert-source-map": { + "version": "1.7.0", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "safe-buffer": "~5.1.1" } }, - "buffer-crc32": { - "version": "0.2.13", - "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==", + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true }, - "buffer-from": { - "version": "1.1.1", + "cookie-signature": { + "version": "1.0.6", "dev": true }, - "buffer-indexof": { - "version": "1.1.1", + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, - "buffer-json": { - "version": "2.0.0", - "dev": true + "copy-concurrently": { + "version": "1.0.5", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } }, - "buffer-xor": { - "version": "1.0.3", + "copy-descriptor": { + "version": "0.1.1", "dev": true }, - "builder-util": { - "version": "22.11.7", + "copy-webpack-plugin": { + "version": "5.1.2", "dev": true, "requires": { - "@types/debug": "^4.1.5", - "@types/fs-extra": "^9.0.11", - "7zip-bin": "~5.1.1", - "app-builder-bin": "3.5.13", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.7.7", - "chalk": "^4.1.1", - "debug": "^4.3.2", - "fs-extra": "^10.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" + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", + "find-cache-dir": { + "version": "2.1.0", "dev": true, "requires": { - "color-convert": "^2.0.1" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, - "argparse": { - "version": "2.0.1", - "dev": true + "find-up": { + "version": "3.0.0", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } }, - "builder-util-runtime": { - "version": "8.7.7", + "glob-parent": { + "version": "3.1.0", "dev": true, "requires": { - "debug": "^4.3.2", - "sax": "^1.2.4" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "chalk": { - "version": "4.1.2", + "globby": { + "version": "7.1.1", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "dev": true + } } }, - "ci-info": { - "version": "3.2.0", + "ignore": { + "version": "3.3.10", "dev": true }, - "color-convert": { - "version": "2.0.1", + "locate-path": { + "version": "3.0.0", "dev": true, "requires": { - "color-name": "~1.1.4" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true + "make-dir": { + "version": "2.1.0", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } }, - "is-ci": { + "p-locate": { "version": "3.0.0", "dev": true, "requires": { - "ci-info": "^3.1.1" + "p-limit": "^2.0.0" } }, - "js-yaml": { - "version": "4.1.0", + "path-exists": { + "version": "3.0.0", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", "dev": true, "requires": { - "argparse": "^2.0.1" + "find-up": "^3.0.0" } }, - "supports-color": { - "version": "7.2.0", + "schema-utils": { + "version": "1.0.0", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "slash": { + "version": "1.0.0", + "dev": true } } }, - "builder-util-runtime": { - "version": "8.9.2", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz", - "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==", - "requires": { - "debug": "^4.3.2", - "sax": "^1.2.4" - } - }, - "builtin-modules": { - "version": "1.1.1", + "core-js": { + "version": "3.19.1", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "dev": true + "core-js-compat": { + "version": "3.19.1", + "dev": true, + "requires": { + "browserslist": "^4.17.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "dev": true + } + } }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true + "core-util-is": { + "version": "1.0.2" }, - "cacache": { - "version": "12.0.4", + "cosmiconfig": { + "version": "6.0.0", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "dependencies": { - "lru-cache": { - "version": "5.1.1", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "path-type": { + "version": "4.0.0", + "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "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": { - "glob": "^7.1.3" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } - }, - "yallist": { - "version": "3.1.1", + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", "dev": true } } }, - "cache-base": { - "version": "1.0.1", + "create-hash": { + "version": "1.2.0", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "cache-loader": { - "version": "4.1.0", + "create-hmac": { + "version": "1.1.7", "dev": true, "requires": { - "buffer-json": "^2.0.0", - "find-cache-dir": "^3.0.0", - "loader-utils": "^1.2.3", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "schema-utils": "^2.0.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "cacheable-request": { - "version": "6.1.0", + "create-require": { + "version": "1.1.1", + "dev": true + }, + "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": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "cross-spawn": "^7.0.1" }, "dependencies": { - "get-stream": { - "version": "5.2.0", + "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" + } + }, + "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 + }, + "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": { - "pump": "^3.0.0" + "shebang-regex": "^3.0.0" } }, - "lowercase-keys": { - "version": "2.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 }, - "normalize-url": { - "version": "4.5.1", - "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" + } } } }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "cross-spawn": { + "version": "6.0.5", "dev": true, "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } } }, - "call-bind": { - "version": "1.0.2", + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" + }, + "crypto-browserify": { + "version": "3.12.0", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "call-me-maybe": { - "version": "1.0.1", + "crypto-random-string": { + "version": "2.0.0", "dev": true }, - "caller-callsite": { - "version": "2.0.0", + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "dev": true, "requires": { - "callsites": "^2.0.0" + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" }, "dependencies": { - "callsites": { - "version": "2.0.0", + "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 } } }, - "caller-path": { - "version": "2.0.0", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "3.1.0", + "css-color-names": { + "version": "0.0.4", "dev": true }, - "camel-case": { - "version": "3.0.0", + "css-declaration-sorter": { + "version": "4.0.1", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } } }, - "camelcase": { - "version": "6.2.0", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", + "css-loader": { + "version": "3.6.0", "dev": true, "requires": { "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "dependencies": { "camelcase": { "version": "5.3.1", "dev": true + }, + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "semver": { + "version": "6.3.0", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true } } }, - "caniuse-api": { - "version": "3.0.0", + "css-select": { + "version": "2.1.0", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "caniuse-lite": { - "version": "1.0.30001409", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz", - "integrity": "sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ==", + "css-select-base-adapter": { + "version": "0.1.1", "dev": true }, - "capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "css-tree": { + "version": "1.0.0-alpha.37", + "dev": true, "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "mdn-data": "2.0.4", + "source-map": "^0.6.1" }, "dependencies": { - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } + "source-map": { + "version": "0.6.1", + "dev": true } } }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", + "css-what": { + "version": "3.4.2", "dev": true }, - "caseless": { - "version": "0.12.0", + "cssesc": { + "version": "3.0.0", "dev": true }, - "chalk": { - "version": "2.4.2", + "cssnano": { + "version": "4.1.11", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" }, "dependencies": { - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "cosmiconfig": { + "version": "5.2.1", + "dev": true, "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "import-fresh": { + "version": "2.0.0", + "dev": true, "requires": { - "tslib": "^2.0.3" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "parse-json": { + "version": "4.0.0", + "dev": true, "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "dev": true, "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } + }, + "resolve-from": { + "version": "3.0.0", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true } } }, - "character-entities": { - "version": "1.2.4", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "dev": true + "cssnano-preset-default": { + "version": "4.0.8", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } }, - "chardet": { - "version": "0.7.0", + "cssnano-util-get-arguments": { + "version": "4.0.0", "dev": true }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" - }, - "check-types": { - "version": "8.0.3", + "cssnano-util-get-match": { + "version": "4.0.0", "dev": true }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "cssnano-util-raw-cache": { + "version": "4.0.1", "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" + "postcss": "^7.0.0" }, "dependencies": { - "braces": { - "version": "3.0.2", + "picocolors": { + "version": "0.2.1", + "dev": true + }, + "postcss": { + "version": "7.0.39", "dev": true, "requires": { - "fill-range": "^7.0.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "fill-range": { - "version": "7.0.1", + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "dev": true + }, + "csso": { + "version": "4.2.0", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" } }, - "is-number": { - "version": "7.0.0", + "mdn-data": { + "version": "2.0.14", "dev": true }, - "to-regex-range": { - "version": "5.0.1", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } + "source-map": { + "version": "0.6.1", + "dev": true } } }, - "chownr": { - "version": "1.1.4", + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, - "chrome-trace-event": { - "version": "1.0.3", - "dev": true + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } }, - "chromium-pickle-js": { - "version": "0.2.0", + "csstype": { + "version": "2.6.20" + }, + "cyclist": { + "version": "1.0.1", "dev": true }, - "ci-info": { - "version": "1.6.0", + "dargs": { + "version": "7.0.0", "dev": true }, - "cipher-base": { - "version": "1.0.4", + "dashdash": { + "version": "1.14.1", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "assert-plus": "^1.0.0" } }, - "class-utils": { - "version": "0.3.6", + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "dependencies": { + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + } + } + }, + "debounce": { + "version": "1.2.1" + }, + "debounce-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", + "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "requires": { + "mimic-fn": "^3.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" } } }, - "cldrjs": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", - "integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA==" + "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" + } }, - "clean-css": { - "version": "4.2.4", + "decamelize": { + "version": "1.2.0", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", "dev": true, "requires": { - "source-map": "~0.6.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", + "map-obj": { + "version": "1.0.1", "dev": true } } }, - "clean-stack": { - "version": "2.2.0", + "decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true }, - "cli-boxes": { - "version": "2.2.1", + "decode-uri-component": { + "version": "0.2.0", "dev": true }, - "cli-cursor": { - "version": "2.1.0", + "decompress-response": { + "version": "3.3.0", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" } }, - "cli-highlight": { - "version": "2.1.11", + "deep-extend": { + "version": "0.6.0", + "dev": true + }, + "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 + }, + "deepmerge": { + "version": "4.2.2", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", "dev": true, "requires": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" + "execa": "^3.3.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", + "cross-spawn": { + "version": "7.0.3", "dev": true, "requires": { - "color-convert": "^2.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "chalk": { - "version": "4.1.2", + "execa": { + "version": "3.4.0", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "cliui": { - "version": "7.0.4", + "get-stream": { + "version": "5.2.0", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "pump": "^3.0.0" } }, - "color-convert": { + "is-stream": { "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", "dev": true }, - "has-flag": { - "version": "4.0.0", + "mimic-fn": { + "version": "2.1.0", "dev": true }, - "supports-color": { - "version": "7.2.0", + "npm-run-path": { + "version": "4.0.1", "dev": true, "requires": { - "has-flag": "^4.0.0" + "path-key": "^3.0.0" } }, - "wrap-ansi": { - "version": "7.0.0", + "onetime": { + "version": "5.1.2", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "mimic-fn": "^2.1.0" } }, - "y18n": { - "version": "5.0.8", + "p-finally": { + "version": "2.0.1", "dev": true }, - "yargs": { - "version": "16.2.0", + "path-key": { + "version": "3.1.1", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "shebang-regex": "^3.0.0" } }, - "yargs-parser": { - "version": "20.2.9", + "shebang-regex": { + "version": "3.0.0", "dev": true + }, + "which": { + "version": "2.0.2", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, - "cli-spinners": { - "version": "2.6.0", - "dev": true - }, - "cli-truncate": { - "version": "3.1.0", + "default-require-extensions": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" + "strip-bom": "^4.0.0" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "dev": true - }, - "ansi-styles": { - "version": "6.1.0", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "dev": true - }, - "is-fullwidth-code-point": { + "strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true - }, - "slice-ansi": { - "version": "5.0.0", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - } - }, - "string-width": { - "version": "5.0.1", - "dev": true, - "requires": { - "emoji-regex": "^9.2.2", - "is-fullwidth-code-point": "^4.0.0", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } } } }, - "cli-width": { - "version": "3.0.0", + "defaults": { + "version": "1.0.3", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "defer-to-connect": { + "version": "1.1.3" + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "clipboardy": { - "version": "2.3.0", - "dev": true, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "devOptional": true, "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - } + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, - "cliui": { - "version": "5.0.0", + "define-property": { + "version": "2.0.2", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true + "is-accessor-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } }, - "string-width": { - "version": "3.1.0", + "is-data-descriptor": { + "version": "1.0.0", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "kind-of": "^6.0.0" } }, - "strip-ansi": { - "version": "5.2.0", + "is-descriptor": { + "version": "1.0.2", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "clone": { - "version": "1.0.4", - "dev": true - }, - "clone-regexp": { - "version": "2.2.0", + "del": { + "version": "4.1.1", "dev": true, "requires": { - "is-regexp": "^2.0.0" + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" }, "dependencies": { - "is-regexp": { - "version": "2.1.0", - "dev": true + "globby": { + "version": "6.1.0", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "dev": true + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, - "clone-response": { - "version": "1.0.2", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } + "delayed-stream": { + "version": "1.0.0", + "dev": true }, - "coa": { - "version": "2.0.2", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } + "delegates": { + "version": "1.0.0", + "dev": true }, - "code-point-at": { - "version": "1.1.0", + "depd": { + "version": "1.1.2", "dev": true }, - "collection-visit": { - "version": "1.0.0", + "des.js": { + "version": "1.0.1", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "color": { - "version": "3.2.1", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true }, - "color-convert": { - "version": "1.9.3", + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, - "requires": { - "color-name": "1.1.3" - } + "optional": true }, - "color-name": { - "version": "1.1.3", + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "color-string": { - "version": "1.6.0", + "detect-node": { + "version": "2.1.0", + "devOptional": true + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "asap": "^2.0.0", + "wrappy": "1" } }, - "colorette": { - "version": "1.2.2", + "diff": { + "version": "4.0.2", "dev": true }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, - "combined-stream": { - "version": "1.0.8", + "diffie-hellman": { + "version": "5.0.3", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "dev": true + } } }, - "commander": { - "version": "2.20.3", - "dev": true + "dir-glob": { + "version": "2.2.2", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } }, - "commitlint": { - "version": "15.0.0", + "dmg-builder": { + "version": "22.11.7", "dev": true, "requires": { - "@commitlint/cli": "^15.0.0", - "@commitlint/types": "^15.0.0" + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.6", + "dmg-license": "^1.0.9", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" }, "dependencies": { - "@commitlint/cli": { - "version": "15.0.0", - "dev": true, - "requires": { - "@commitlint/format": "^15.0.0", - "@commitlint/lint": "^15.0.0", - "@commitlint/load": "^15.0.0", - "@commitlint/read": "^15.0.0", - "@commitlint/types": "^15.0.0", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^17.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } + "argparse": { + "version": "2.0.1", + "dev": true }, - "cliui": { - "version": "7.0.4", + "builder-util-runtime": { + "version": "8.7.6", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "debug": "^4.3.2", + "sax": "^1.2.4" } }, - "color-convert": { - "version": "2.0.1", + "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": { - "color-name": "~1.1.4" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", + "iconv-lite": { + "version": "0.6.3", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" } - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yargs": { - "version": "17.2.1", + }, + "js-yaml": { + "version": "4.1.0", "dev": true, "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "argparse": "^2.0.1" } - }, - "yargs-parser": { - "version": "20.2.9", - "dev": true } } }, - "commondir": { - "version": "1.0.1", - "dev": true - }, - "compare-func": { - "version": "2.0.0", + "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": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "@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" } }, - "component-emitter": { - "version": "1.3.0", + "dns-equal": { + "version": "1.0.0", "dev": true }, - "compressible": { - "version": "2.0.18", + "dns-packet": { + "version": "1.3.4", "dev": true, "requires": { - "mime-db": ">= 1.43.0 < 2" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, - "compression": { - "version": "1.7.4", + "dns-txt": { + "version": "2.0.2", "dev": true, "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } + "buffer-indexof": "^1.0.0" } }, - "concat-map": { - "version": "0.0.1" + "doctrine": { + "version": "3.0.0", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } }, - "concat-stream": { - "version": "1.6.2", + "dom-converter": { + "version": "0.2.0", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "utila": "~0.4" } }, - "conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", + "dom-serializer": { + "version": "0.2.2", + "dev": true, "requires": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" }, "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } + "domelementtype": { + "version": "2.2.0", + "dev": true } } }, - "config-chain": { - "version": "1.1.13", + "domain-browser": { + "version": "1.2.0", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dev": true, - "optional": true, "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } } }, - "configstore": { - "version": "5.0.1", + "domhandler": { + "version": "2.4.2", "dev": true, "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "domelementtype": "1" } }, - "connect-history-api-fallback": { - "version": "1.6.0", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "dev": true - }, - "consolidate": { - "version": "0.15.1", + "domutils": { + "version": "1.7.0", "dev": true, "requires": { - "bluebird": "^3.1.1" + "dom-serializer": "0", + "domelementtype": "1" } }, - "constant-case": { + "dot-case": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "requires": { "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "tslib": "^2.0.3" }, "dependencies": { "lower-case": { @@ -36351,800 +49691,861 @@ "lower-case": "^2.0.2", "tslib": "^2.0.3" } - }, - "upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "requires": { - "tslib": "^2.0.3" - } } } }, - "constants-browserify": { - "version": "1.0.0", + "dot-prop": { + "version": "5.3.0", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.6.0", "dev": true }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, + "dotenv-expand": { + "version": "5.1.0", + "dev": true + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" } }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "duplexer": { + "version": "0.1.2", "dev": true }, - "conventional-changelog-angular": { - "version": "5.0.13", + "duplexer3": { + "version": "0.1.4" + }, + "duplexify": { + "version": "3.7.1", "dev": true, "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "conventional-changelog-conventionalcommits": { - "version": "4.6.1", + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "easy-stack": { + "version": "1.0.1", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", "dev": true, "requires": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "conventional-commits-parser": { - "version": "3.2.3", + "editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, "requires": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "balanced-match": "^1.0.0" } }, - "through2": { - "version": "4.0.2", + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "requires": { - "readable-stream": "3" + "brace-expansion": "^2.0.1" } + }, + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true } } }, - "convert-source-map": { - "version": "1.7.0", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, - "cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==", + "ejs": { + "version": "2.7.4", "dev": true }, - "copy-concurrently": { - "version": "1.0.5", - "dev": true, + "electron": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.5.tgz", + "integrity": "sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==", "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "@electron/get": "^1.13.0", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" }, "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "@types/node": { + "version": "14.18.0" } } }, - "copy-descriptor": { - "version": "0.1.1", - "dev": true - }, - "copy-webpack-plugin": { - "version": "5.1.2", + "electron-builder": { + "version": "22.11.7", "dev": true, "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "webpack-log": "^2.0.0" + "@types/yargs": "^16.0.2", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "dmg-builder": "22.11.7", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" }, "dependencies": { - "find-cache-dir": { - "version": "2.1.0", + "@types/yargs": { + "version": "16.0.4", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@types/yargs-parser": "*" } }, - "find-up": { - "version": "3.0.0", + "ansi-styles": { + "version": "4.3.0", "dev": true, "requires": { - "locate-path": "^3.0.0" + "color-convert": "^2.0.1" } }, - "glob-parent": { - "version": "3.1.0", + "builder-util-runtime": { + "version": "8.7.7", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "debug": "^4.3.2", + "sax": "^1.2.4" } }, - "globby": { - "version": "7.1.1", + "chalk": { + "version": "4.1.2", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "ignore": { - "version": "3.3.10", + "ci-info": { + "version": "3.2.0", "dev": true }, - "locate-path": { - "version": "3.0.0", + "cliui": { + "version": "7.0.4", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "make-dir": { - "version": "2.1.0", + "color-convert": { + "version": "2.0.1", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "color-name": "~1.1.4" } }, - "p-locate": { - "version": "3.0.0", + "color-name": { + "version": "1.1.4", + "dev": true + }, + "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": { - "p-limit": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "path-exists": { - "version": "3.0.0", + "has-flag": { + "version": "4.0.0", "dev": true }, - "pkg-dir": { + "is-ci": { "version": "3.0.0", "dev": true, "requires": { - "find-up": "^3.0.0" + "ci-info": "^3.1.1" } }, - "schema-utils": { - "version": "1.0.0", + "supports-color": { + "version": "7.2.0", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "has-flag": "^4.0.0" } }, - "semver": { - "version": "5.7.1", - "dev": true + "wrap-ansi": { + "version": "7.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } }, - "slash": { - "version": "1.0.0", + "y18n": { + "version": "5.0.8", "dev": true - } - } - }, - "core-js": { - "version": "3.19.1", - "dev": true - }, - "core-js-compat": { - "version": "3.19.1", - "dev": true, - "requires": { - "browserslist": "^4.17.6", - "semver": "7.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.17.6", + }, + "yargs": { + "version": "17.1.0", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", + "cliui": "^7.0.2", "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, - "electron-to-chromium": { - "version": "1.3.894", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "dev": true - }, - "semver": { - "version": "7.0.0", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2" - }, - "cosmiconfig": { - "version": "6.0.0", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", + "yargs-parser": { + "version": "20.2.9", "dev": true } } }, - "create-ecdh": { - "version": "4.0.4", - "dev": true, + "electron-context-menu": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-3.4.0.tgz", + "integrity": "sha512-UcEsDNX7WCgg8mrot8vdGdmq/vwL7SSMHKRx/Q5YTo94NS1117OauJIfJQxoxm3/Fxsh0QItET//PQwKRYEVww==", "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "cli-truncate": "^2.1.0", + "electron-dl": "^3.2.1", + "electron-is-dev": "^2.0.0" }, "dependencies": { - "bn.js": { - "version": "4.12.0", - "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==", + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + } } } }, - "create-hash": { - "version": "1.2.0", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", + "electron-devtools-installer": { + "version": "3.2.0", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "dev": true - } + "rimraf": "^3.0.2", + "semver": "^7.2.1", + "tslib": "^2.1.0", + "unzip-crx-3": "^0.2.0" } }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" - }, - "crypto-browserify": { - "version": "3.12.0", - "dev": true, + "electron-dl": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.1.tgz", + "integrity": "sha512-kmcSYZyHVEHHHFKlZWW58GiCmu2NSu3Rdwnl3+/fr/ftQYHJULVf1QkrCBPFE2bp/Ly113Za7c8wJZs1nBy04A==", "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "ext-name": "^5.0.0", + "pupa": "^2.0.1", + "unused-filename": "^2.1.0" } }, - "crypto-random-string": { + "electron-is-dev": { "version": "2.0.0", - "dev": true + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz", + "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==" }, - "css-color-names": { - "version": "0.0.4", - "dev": true + "electron-log": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-5.4.2.tgz", + "integrity": "sha512-L55kJzbVVoBY6kyJ3A+cjPchL1aXLdV2/Q8SvIj4sE5VmOcwZa6KXaFICZE+Z+RMXhAIFta79kSaXBqn+0XXMA==" }, - "css-declaration-sorter": { - "version": "4.0.1", + "electron-publish": { + "version": "22.11.7", "dev": true, "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" + "@types/fs-extra": "^9.0.11", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "dev": true + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "postcss": { - "version": "7.0.39", + "builder-util-runtime": { + "version": "8.7.7", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "debug": "^4.3.2", + "sax": "^1.2.4" } }, - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "css-loader": { - "version": "3.6.0", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } }, - "picocolors": { - "version": "0.2.1", + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", "dev": true }, - "postcss": { - "version": "7.0.39", + "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": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "semver": { - "version": "6.3.0", + "has-flag": { + "version": "4.0.0", "dev": true }, - "source-map": { - "version": "0.6.1", - "dev": true + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "css-select": { - "version": "2.1.0", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "dev": true + "electron-shutdown-command": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/electron-shutdown-command/-/electron-shutdown-command-2.0.1.tgz", + "integrity": "sha512-u8fpVGBpKGv0u7c7uAodUWzjF37+FbOeWBxr3vNO/DKt3KISFT48/UIfu/7smTHluCwrWvjwUXLkrZTA8pWPtg==" }, - "css-tree": { - "version": "1.0.0-alpha.37", - "dev": true, + "electron-store": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", + "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" + "conf": "^10.2.0", + "type-fest": "^2.17.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true + "type-fest": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.0.tgz", + "integrity": "sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==" } } }, - "css-what": { - "version": "3.4.2", - "dev": true - }, - "cssesc": { - "version": "3.0.0", + "electron-to-chromium": { + "version": "1.5.39", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", + "integrity": "sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==", "dev": true }, - "cssnano": { - "version": "4.1.11", - "dev": true, + "electron-updater": { + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.5.tgz", + "integrity": "sha512-kdTly8O9mSZfm9fslc1mnCY+mYOeaYRy7ERa2Fed240u01BKll3aiupzkd07qKw69KvhBSzuHroIW3mF0D8DWA==", "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" + "@types/semver": "^7.3.6", + "builder-util-runtime": "8.9.2", + "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" }, "dependencies": { - "cosmiconfig": { - "version": "5.2.1", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "parse-json": { - "version": "4.0.0", - "dev": true, + "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": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "picocolors": { - "version": "0.2.1", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "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": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "argparse": "^2.0.1" } - }, - "resolve-from": { - "version": "3.0.0", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "dev": true } } }, - "cssnano-preset-default": { - "version": "4.0.8", + "electron-vite": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/electron-vite/-/electron-vite-3.1.0.tgz", + "integrity": "sha512-M7aAzaRvSl5VO+6KN4neJCYLHLpF/iWo5ztchI/+wMxIieDZQqpbCYfaEHHHPH6eupEzfvZdLYdPdmvGqoVe0Q==", "dev": true, "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" + "@babel/core": "^7.26.10", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "cac": "^6.7.14", + "esbuild": "^0.25.1", + "magic-string": "^0.30.17", + "picocolors": "^1.1.1" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "dev": true - }, - "postcss": { - "version": "7.0.39", + "magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "@jridgewell/sourcemap-codec": "^1.5.0" } - }, - "source-map": { - "version": "0.6.1", + } + } + }, + "elliptic": { + "version": "6.5.4", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", "dev": true } } }, - "cssnano-util-get-arguments": { - "version": "4.0.0", + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", "dev": true }, - "cssnano-util-get-match": { - "version": "4.0.0", + "emoji-regex": { + "version": "8.0.0" + }, + "emojis-list": { + "version": "3.0.0", "dev": true }, - "cssnano-util-raw-cache": { - "version": "4.0.1", + "encodeurl": { + "version": "1.0.2", + "devOptional": true + }, + "end-of-stream": { + "version": "1.4.4", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", "dev": true, "requires": { - "postcss": "^7.0.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", - "dev": true - }, - "postcss": { - "version": "7.0.39", + "memory-fs": { + "version": "0.5.0", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } - }, - "source-map": { - "version": "0.6.1", - "dev": true } } }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "dev": true - }, - "csso": { - "version": "4.2.0", + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, + "optional": true, + "peer": true, "requires": { - "css-tree": "^1.1.2" + "ansi-colors": "^4.1.1" }, "dependencies": { - "css-tree": { - "version": "1.1.3", + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "dev": true + "optional": true, + "peer": true } } }, - "csstype": { - "version": "2.6.20" - }, - "cyclist": { - "version": "1.0.1", + "entities": { + "version": "2.2.0", "dev": true }, - "dargs": { - "version": "7.0.0", - "dev": true + "env-paths": { + "version": "2.2.1" }, - "dashdash": { - "version": "1.14.1", + "errno": { + "version": "0.1.8", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "prr": "~1.0.1" } }, - "debounce": { - "version": "1.2.1" - }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", + "error-ex": { + "version": "1.3.2", + "dev": true, "requires": { - "mimic-fn": "^3.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" - } + "is-arrayish": "^0.2.1" } }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "error-stack-parser": { + "version": "2.0.6", + "dev": true, "requires": { - "ms": "2.1.2" + "stackframe": "^1.1.1" } }, - "decamelize": { - "version": "1.2.0", + "es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, - "decamelize-keys": { - "version": "1.1.0", - "dev": true, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "dev": true - } + "es-errors": "^1.3.0" } }, - "decode-uri-component": { - "version": "0.2.0", - "dev": true + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } }, - "decompress-response": { - "version": "3.3.0", + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, "requires": { - "mimic-response": "^1.0.0" + "has": "^1.0.3" } }, - "deep-equal": { - "version": "1.1.1", + "es-to-primitive": { + "version": "1.2.1", "dev": true, "requires": { - "is-arguments": "^1.0.4", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "is-symbol": "^1.0.2" } }, - "deep-extend": { - "version": "0.6.0", + "es6-error": { + "version": "4.1.1", + "devOptional": true + }, + "esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true }, - "deep-is": { - "version": "0.1.3", + "escape-goat": { + "version": "2.1.1" + }, + "escape-html": { + "version": "1.0.3", "dev": true }, - "deepmerge": { - "version": "4.2.2", - "dev": true, - "optional": true + "escape-string-regexp": { + "version": "1.0.5", + "dev": true }, - "default-gateway": { - "version": "5.0.5", + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, "requires": { - "execa": "^3.3.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "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 + }, + "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, + "optional": true + } + } + }, + "eslint": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@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.6.0", + "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", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "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.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { + "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" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "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" + } + }, + "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 + }, "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", @@ -37152,61 +50553,135 @@ "which": "^2.0.1" } }, - "execa": { - "version": "3.4.0", + "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-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": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "p-finally": "^2.0.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "get-stream": { - "version": "5.2.0", + "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 + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "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": { - "pump": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, - "is-stream": { - "version": "2.0.1", + "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" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "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 }, - "mimic-fn": { - "version": "2.1.0", + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, - "npm-run-path": { - "version": "4.0.1", + "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 + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "path-key": "^3.0.0" + "argparse": "^2.0.1" } }, - "onetime": { - "version": "5.1.2", + "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": { - "mimic-fn": "^2.1.0" + "p-locate": "^5.0.0" } }, - "p-finally": { - "version": "2.0.1", - "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" + } + }, + "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" + } }, "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 }, "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" @@ -37214,10 +50689,29 @@ }, "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 + }, + "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" + } + }, + "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 }, "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" @@ -37225,455 +50719,596 @@ } } }, - "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "requires": {} + }, + "eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-custom-alias": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-custom-alias/-/eslint-import-resolver-custom-alias-1.3.2.tgz", + "integrity": "sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==", "dev": true, "requires": { - "strip-bom": "^4.0.0" + "glob-parent": "^6.0.2", + "resolve": "^1.22.2" }, "dependencies": { - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true + "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" + } } } }, - "defaults": { - "version": "1.0.3", + "eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "requires": { - "clone": "^1.0.2" + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, - "defer-to-connect": { - "version": "1.1.3", - "dev": true + "eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } }, - "define-properties": { - "version": "1.1.3", + "eslint-plugin-es": { + "version": "3.0.1", + "dev": true, + "requires": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + } + }, + "eslint-plugin-eslint-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-5.1.0.tgz", + "integrity": "sha512-HOzgLRSZJdEZpLaXbA3qd/4Sfa09W6NTzDBqWd5zeQNc1wnsGfGYGE2Rr8nVDeckyFT5u7GlU+lYrXF89UyECg==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "eslint-utils": "^3.0.0", + "estraverse": "^5.3.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } } }, - "define-property": { - "version": "2.0.2", + "eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "ms": "^2.1.1" } }, - "is-data-descriptor": { - "version": "1.0.0", + "doctrine": { + "version": "2.1.0", "dev": true, "requires": { - "kind-of": "^6.0.0" + "esutils": "^2.0.2" } }, - "is-descriptor": { - "version": "1.0.2", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "minimist": "^1.2.0" + } + }, + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } } } }, - "del": { - "version": "4.1.1", + "eslint-plugin-mocha": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", + "integrity": "sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "eslint-utils": "^3.0.0", + "rambda": "^7.1.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "requires": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "dependencies": { - "globby": { - "version": "6.1.0", + "eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "dependencies": { - "pify": { - "version": "2.3.0", + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true } } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "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": { - "glob": "^7.1.3" + "brace-expansion": "^1.1.7" + } + }, + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } }, - "delayed-stream": { - "version": "1.0.0", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "dev": true - }, - "depd": { - "version": "1.1.2", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "dev": true - }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "4.0.2", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", + "eslint-plugin-node": { + "version": "11.1.0", "dev": true, "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "dependencies": { - "bn.js": { - "version": "4.12.0", + "ignore": { + "version": "5.1.8", + "dev": true + }, + "semver": { + "version": "6.3.0", "dev": true } } }, - "dir-glob": { - "version": "2.2.2", + "eslint-plugin-prettier": { + "version": "3.4.1", "dev": true, "requires": { - "path-type": "^3.0.0" + "prettier-linter-helpers": "^1.0.0" } }, - "dmg-builder": { - "version": "22.11.7", + "eslint-plugin-promise": { + "version": "6.0.0", + "dev": true, + "requires": {} + }, + "eslint-plugin-standard": { + "version": "4.1.0", + "dev": true, + "requires": {} + }, + "eslint-plugin-vue": { + "version": "9.14.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz", + "integrity": "sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==", "dev": true, "requires": { - "app-builder-lib": "22.11.7", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.6", - "dmg-license": "^1.0.9", - "fs-extra": "^10.0.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" + "@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.3.0", + "xml-name-validator": "^4.0.0" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "dev": true - }, - "builder-util-runtime": { - "version": "8.7.6", - "dev": true, - "requires": { - "debug": "^4.3.2", - "sax": "^1.2.4" - } - }, - "iconv-lite": { - "version": "0.6.3", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "js-yaml": { - "version": "4.1.0", + "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": { - "argparse": "^2.0.1" + "boolbase": "^1.0.0" } } } }, - "dns-equal": { - "version": "1.0.0", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", + "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": { - "buffer-indexof": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" } }, - "doctrine": { - "version": "3.0.0", + "eslint-utils": { + "version": "2.1.0", "dev": true, "requires": { - "esutils": "^2.0.2" + "eslint-visitor-keys": "^1.1.0" } }, - "dom-converter": { - "version": "0.2.0", - "dev": true, - "requires": { - "utila": "~0.4" - } + "eslint-visitor-keys": { + "version": "1.3.0", + "dev": true }, - "dom-serializer": { - "version": "0.2.2", + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { - "domelementtype": { - "version": "2.2.0", + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "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 } } }, - "domain-browser": { - "version": "1.2.0", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", + "esprima": { + "version": "4.0.1", "dev": true }, - "domhandler": { - "version": "2.4.2", + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { - "domelementtype": "1" + "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 + } } }, - "domutils": { - "version": "1.7.0", + "esrecurse": { + "version": "4.3.0", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "estraverse": "^5.2.0" }, "dependencies": { - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } + "estraverse": { + "version": "5.2.0", + "dev": true } } }, - "dot-prop": { - "version": "5.3.0", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } + "estraverse": { + "version": "4.3.0", + "dev": true }, - "dotenv": { - "version": "8.6.0", + "estree-walker": { + "version": "2.0.2" + }, + "esutils": { + "version": "2.0.3", "dev": true }, - "dotenv-expand": { - "version": "5.1.0", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, - "duplexer": { - "version": "0.1.2", + "event-pubsub": { + "version": "4.3.0", "dev": true }, - "duplexer3": { - "version": "0.1.4", + "eventemitter3": { + "version": "4.0.7", "dev": true }, - "duplexify": { - "version": "3.7.1", + "events": { + "version": "3.3.0", + "dev": true + }, + "eventsource": { + "version": "1.1.0", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "original": "^1.0.0" } }, - "easy-stack": { - "version": "1.0.1", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", + "evp_bytestokey": { + "version": "1.0.3", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", "dev": true }, - "ejs": { - "version": "2.7.4", - "dev": true + "execa": { + "version": "1.0.0", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } }, - "electron": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.5.tgz", - "integrity": "sha512-TgQXWmEGQ3uH2P2JDq5GyJDEu/fimRgqp1iNisARtGreU1k3630PqWlR+4SPnSEHN9NuSv92ng6NWxtefeFzxg==", + "execall": { + "version": "2.0.0", "dev": true, "requires": { - "@electron/get": "^1.13.0", - "@types/node": "^14.6.2", - "extract-zip": "^1.0.3" - }, - "dependencies": { - "@types/node": { - "version": "14.18.0", - "dev": true - } + "clone-regexp": "^2.1.0" } }, - "electron-builder": { - "version": "22.11.7", + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", "dev": true, "requires": { - "@types/yargs": "^16.0.2", - "app-builder-lib": "22.11.7", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.7", - "chalk": "^4.1.1", - "dmg-builder": "22.11.7", - "fs-extra": "^10.0.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.2.0", - "update-notifier": "^5.1.0", - "yargs": "^17.0.1" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "@types/yargs": { - "version": "16.0.4", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", + "debug": { + "version": "2.6.9", "dev": true, "requires": { - "color-convert": "^2.0.1" + "ms": "2.0.0" } }, - "builder-util-runtime": { - "version": "8.7.7", + "define-property": { + "version": "0.2.5", "dev": true, "requires": { - "debug": "^4.3.2", - "sax": "^1.2.4" + "is-descriptor": "^0.1.0" } }, - "chalk": { - "version": "4.1.2", + "extend-shallow": { + "version": "2.0.1", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-extendable": "^0.1.0" } }, - "ci-info": { - "version": "3.2.0", + "ms": { + "version": "2.0.0", "dev": true - }, - "cliui": { - "version": "7.0.4", + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "dependencies": { + "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": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "color-convert": "^2.0.1" } }, "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" @@ -37681,1451 +51316,1547 @@ }, "color-name": { "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "is-ci": { - "version": "3.0.0", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yargs": { - "version": "17.1.0", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, - "electron-context-menu": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-3.4.0.tgz", - "integrity": "sha512-UcEsDNX7WCgg8mrot8vdGdmq/vwL7SSMHKRx/Q5YTo94NS1117OauJIfJQxoxm3/Fxsh0QItET//PQwKRYEVww==", + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, "requires": { - "cli-truncate": "^2.1.0", - "electron-dl": "^3.2.1", - "electron-is-dev": "^2.0.0" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "debug": { + "version": "2.6.9", + "dev": true, "requires": { - "color-convert": "^2.0.1" + "ms": "2.0.0" } }, - "astral-regex": { + "depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "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==", - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } + "ms": { + "version": "2.0.0", + "dev": true }, - "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==", + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, "requires": { - "color-name": "~1.1.4" + "side-channel": "^1.0.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==" + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true } } }, - "electron-devtools-installer": { - "version": "3.2.0", - "dev": true, + "ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "requires": { - "rimraf": "^3.0.2", - "semver": "^7.2.1", - "tslib": "^2.1.0", - "unzip-crx-3": "^0.2.0" + "mime-db": "^1.28.0" } }, - "electron-dl": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.1.tgz", - "integrity": "sha512-kmcSYZyHVEHHHFKlZWW58GiCmu2NSu3Rdwnl3+/fr/ftQYHJULVf1QkrCBPFE2bp/Ly113Za7c8wJZs1nBy04A==", + "ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", "requires": { - "ext-name": "^5.0.0", - "pupa": "^2.0.1", - "unused-filename": "^2.1.0" + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" } }, - "electron-is-dev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-2.0.0.tgz", - "integrity": "sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA==" - }, - "electron-log": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", - "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" + "extend": { + "version": "3.0.2", + "dev": true }, - "electron-publish": { - "version": "22.11.7", + "extend-shallow": { + "version": "3.0.2", "dev": true, "requires": { - "@types/fs-extra": "^9.0.11", - "builder-util": "22.11.7", - "builder-util-runtime": "8.7.7", - "chalk": "^4.1.1", - "fs-extra": "^10.0.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", + "is-extendable": { + "version": "1.0.1", "dev": true, "requires": { - "color-convert": "^2.0.1" + "is-plain-object": "^2.0.4" } }, - "builder-util-runtime": { - "version": "8.7.7", + "is-plain-object": { + "version": "2.0.4", "dev": true, "requires": { - "debug": "^4.3.2", - "sax": "^1.2.4" + "isobject": "^3.0.1" } - }, - "chalk": { - "version": "4.1.2", + } + } + }, + "extglob": { + "version": "2.0.4", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-descriptor": "^1.0.0" } }, - "color-convert": { + "extend-shallow": { "version": "2.0.1", "dev": true, "requires": { - "color-name": "~1.1.4" + "is-extendable": "^0.1.0" } }, - "color-name": { - "version": "1.1.4", - "dev": true + "is-accessor-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } }, - "has-flag": { - "version": "4.0.0", - "dev": true + "is-data-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } }, - "supports-color": { - "version": "7.2.0", + "is-descriptor": { + "version": "1.0.2", "dev": true, "requires": { - "has-flag": "^4.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "electron-shutdown-command": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/electron-shutdown-command/-/electron-shutdown-command-2.0.1.tgz", - "integrity": "sha512-u8fpVGBpKGv0u7c7uAodUWzjF37+FbOeWBxr3vNO/DKt3KISFT48/UIfu/7smTHluCwrWvjwUXLkrZTA8pWPtg==" - }, - "electron-store": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-8.1.0.tgz", - "integrity": "sha512-2clHg/juMjOH0GT9cQ6qtmIvK183B39ZXR0bUoPwKwYHJsEF3quqyDzMFUAu+0OP8ijmN2CbPRAelhNbWUbzwA==", + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha512-41qWGBdtKp9U7sgBxAQ7vonYqSXzgW/SiAYzq4tdWSVhAShvpVCH1nyvPQgjse6EdgbW7Y7ERdT3674/lKr65A==", + "dev": true, "requires": { - "conf": "^10.2.0", - "type-fest": "^2.17.0" - }, - "dependencies": { - "type-fest": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.0.tgz", - "integrity": "sha512-pRS+/yrW5TjPPHNOvxhbNZexr2bS63WjrMU8a+VzEBhUi9Tz1pZeD+vQz3ut0svZ46P+SRqMEPnJmk2XnvNzTw==" - } + "css": "^2.1.0" } }, - "electron-to-chromium": { - "version": "1.3.736", - "dev": true - }, - "electron-updater": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.5.tgz", - "integrity": "sha512-kdTly8O9mSZfm9fslc1mnCY+mYOeaYRy7ERa2Fed240u01BKll3aiupzkd07qKw69KvhBSzuHroIW3mF0D8DWA==", + "extract-zip": { + "version": "1.7.0", "requires": { - "@types/semver": "^7.3.6", - "builder-util-runtime": "8.9.2", - "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" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" }, "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "debug": { + "version": "2.6.9", "requires": { - "argparse": "^2.0.1" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0" } } }, - "elliptic": { - "version": "6.5.4", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0" - }, - "emojis-list": { - "version": "3.0.0", + "extsprintf": { + "version": "1.3.0", "dev": true }, - "encodeurl": { - "version": "1.0.2", - "dev": true + "fast-deep-equal": { + "version": "3.1.3" }, - "end-of-stream": { - "version": "1.4.4", - "requires": { - "once": "^1.4.0" - } + "fast-diff": { + "version": "1.2.0", + "dev": true }, - "enhanced-resolve": { - "version": "4.5.0", + "fast-glob": { + "version": "2.2.7", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "dependencies": { - "memory-fs": { - "version": "0.5.0", + "glob-parent": { + "version": "3.1.0", "dev": true, "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } } } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "optional": true, - "peer": true - } - } + "fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true }, - "entities": { - "version": "2.2.0", + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "env-paths": { - "version": "2.2.1" + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true }, - "errno": { - "version": "0.1.8", + "fastest-levenshtein": { + "version": "1.0.12", + "dev": true + }, + "fastq": { + "version": "1.11.0", "dev": true, "requires": { - "prr": "~1.0.1" + "reusify": "^1.0.4" } }, - "error-ex": { - "version": "1.3.2", + "faye-websocket": { + "version": "0.11.4", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "websocket-driver": ">=0.5.1" } }, - "error-stack-parser": { - "version": "2.0.6", + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "requires": { - "stackframe": "^1.1.1" + "bser": "2.1.1" } }, - "es-abstract": { - "version": "1.18.0", - "dev": true, + "fd-slicer": { + "version": "1.1.0", "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "pend": "~1.2.0" } }, - "es-to-primitive": { - "version": "1.2.1", + "fetch-installed-software": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/fetch-installed-software/-/fetch-installed-software-0.0.7.tgz", + "integrity": "sha512-lV9bMiEvF6tC80k2FisTQC3mm7UiZq+RHKNT45N29OnG2w/JHq/POkeFO6rqmtfAKDaz5kcpCE1yqpGsnAVFbw==" + }, + "figgy-pudding": { + "version": "3.5.2", + "dev": true + }, + "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": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "flat-cache": "^3.0.4" } }, - "es6-error": { - "version": "4.1.1", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "dev": true + "file-loader": { + "version": "4.3.0", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } }, - "escape-goat": { - "version": "2.1.1" + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true }, - "escape-html": { - "version": "1.0.3", - "dev": true + "filelist": { + "version": "1.0.2", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } }, - "escape-string-regexp": { - "version": "1.0.5", + "filesize": { + "version": "3.6.1", "dev": true }, - "eslint": { - "version": "6.8.0", + "fill-range": { + "version": "4.0.0", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { - "eslint-utils": { - "version": "1.4.3", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "globals": { - "version": "12.4.0", + "extend-shallow": { + "version": "2.0.1", "dev": true, "requires": { - "type-fest": "^0.8.1" + "is-extendable": "^0.1.0" } - }, - "regexpp": { - "version": "2.0.1", - "dev": true - }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", + } + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "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": { - "ansi-regex": "^4.1.0" + "ms": "2.0.0" } }, - "strip-json-comments": { - "version": "3.1.1", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "type-fest": { - "version": "0.8.1", + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true } } }, - "eslint-config-prettier": { - "version": "6.15.0", + "find-cache-dir": { + "version": "3.3.1", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", "dev": true, "requires": { - "get-stdin": "^6.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "eslint-config-standard": { - "version": "14.1.1", + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "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": {} + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } }, - "eslint-import-resolver-node": { - "version": "0.3.4", + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", "dev": true, "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.14.5", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" } }, - "eslint-import-resolver-webpack": { - "version": "0.12.2", + "for-in": { + "version": "1.0.2", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { - "array-find": "^1.0.0", - "debug": "^2.6.9", - "enhanced-resolve": "^0.9.1", - "find-root": "^1.1.0", - "has": "^1.0.3", - "interpret": "^1.2.0", - "lodash": "^4.17.15", - "node-libs-browser": "^1.0.0 || ^2.0.0", - "resolve": "^1.13.1", - "semver": "^5.7.1" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "enhanced-resolve": { - "version": "0.9.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": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.2.0", - "tapable": "^0.1.8" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "memory-fs": { - "version": "0.2.0", + "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 }, - "ms": { + "shebang-command": { "version": "2.0.0", - "dev": true + "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" + } }, - "semver": { - "version": "5.7.1", + "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 }, - "tapable": { - "version": "0.1.10", - "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" + } } } }, - "eslint-loader": { - "version": "2.2.1", + "forever-agent": { + "version": "0.6.1", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", "dev": true, "requires": { - "loader-fs-cache": "^1.0.0", - "loader-utils": "^1.0.2", - "object-assign": "^4.0.1", - "object-hash": "^1.1.4", - "rimraf": "^2.6.1" + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" }, "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "semver": { + "version": "5.7.1", + "dev": true } } }, - "eslint-module-utils": { - "version": "2.7.1", + "fork-ts-checker-webpack-plugin-v5": { + "version": "npm:fork-ts-checker-webpack-plugin@5.2.1", "dev": true, + "optional": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "dependencies": { - "debug": { - "version": "3.2.7", + "ansi-styles": { + "version": "4.3.0", "dev": true, + "optional": true, "requires": { - "ms": "^2.1.1" + "color-convert": "^2.0.1" } }, - "find-up": { - "version": "2.1.0", + "chalk": { + "version": "4.1.2", "dev": true, + "optional": true, "requires": { - "locate-path": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "locate-path": { - "version": "2.0.0", + "color-convert": { + "version": "2.0.1", "dev": true, + "optional": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "color-name": "~1.1.4" } }, - "p-limit": { - "version": "1.3.0", + "color-name": { + "version": "1.1.4", "dev": true, - "requires": { - "p-try": "^1.0.0" - } + "optional": true }, - "p-locate": { - "version": "2.0.0", + "fs-extra": { + "version": "9.1.0", "dev": true, + "optional": true, "requires": { - "p-limit": "^1.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "p-try": { - "version": "1.0.0", - "dev": true + "has-flag": { + "version": "4.0.0", + "dev": true, + "optional": true }, - "path-exists": { - "version": "3.0.0", - "dev": true + "schema-utils": { + "version": "2.7.0", + "dev": true, + "optional": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } }, - "pkg-dir": { - "version": "2.0.0", + "supports-color": { + "version": "7.2.0", "dev": true, + "optional": true, "requires": { - "find-up": "^2.1.0" + "has-flag": "^4.0.0" } } } }, - "eslint-plugin-es": { - "version": "3.0.1", + "form-data": { + "version": "2.3.3", "dev": true, "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "eslint-plugin-eslint-plugin": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-4.4.1.tgz", - "integrity": "sha512-e4jJGw/ezJseAPutnIasBfnO0XMdp0wPD/upBvRtzN5tqMM3xiwXtcCmDyH5NHO79ij7olxpaNGATFqS+5480g==", + "formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", "dev": true, "requires": { - "eslint-utils": "^3.0.0", - "estraverse": "^5.2.0" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "requires": { - "eslint-visitor-keys": "^2.0.0" + "side-channel": "^1.0.4" } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "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-import": { - "version": "2.25.3", + "forwarded": { + "version": "0.2.0", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.1", - "has": "^1.0.3", - "is-core-module": "^2.8.0", - "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "friendly-errors-webpack-plugin": { + "version": "1.7.0", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "ansi-regex": { + "version": "2.1.1", + "dev": true }, - "doctrine": { - "version": "2.1.0", + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", "dev": true, "requires": { - "esutils": "^2.0.2" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "eslint-import-resolver-node": { - "version": "0.3.6", + "is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true + }, + "string-width": { + "version": "2.1.1", "dev": true, "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { - "debug": { - "version": "3.2.7", + "ansi-regex": { + "version": "3.0.0", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-regex": "^3.0.0" } - }, - "ms": { - "version": "2.1.3", - "dev": true } } }, - "is-core-module": { - "version": "2.8.0", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "strip-ansi": { + "version": "3.0.1", "dev": true, "requires": { - "minimist": "^1.2.0" + "ansi-regex": "^2.0.0" } }, - "ms": { + "supports-color": { "version": "2.0.0", "dev": true - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } } } }, - "eslint-plugin-node": { - "version": "11.1.0", + "from2": { + "version": "2.3.0", "dev": true, "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true + }, + "fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "dev": true, + "optional": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0" + }, + "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.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" }, "dependencies": { - "ignore": { - "version": "5.1.8", + "ansi-regex": { + "version": "2.1.1", "dev": true }, - "semver": { - "version": "6.3.0", - "dev": true + "is-fullwidth-code-point": { + "version": "1.0.0", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } } } }, - "eslint-plugin-prettier": { - "version": "3.4.1", + "gaze": { + "version": "1.1.3", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "globule": "^1.0.0" } }, - "eslint-plugin-promise": { - "version": "6.0.0", - "dev": true, - "requires": {} + "gensync": { + "version": "1.0.0-beta.2", + "dev": true }, - "eslint-plugin-standard": { + "get-caller-file": { + "version": "2.0.5", + "dev": true + }, + "get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, + "get-stream": { "version": "4.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "dev": true + }, + "getpass": { + "version": "0.1.7", "dev": true, - "requires": {} + "requires": { + "assert-plus": "^1.0.0" + } }, - "eslint-plugin-vue": { - "version": "8.2.0", + "git-raw-commits": { + "version": "2.0.10", "dev": true, "requires": { - "eslint-utils": "^3.0.0", - "natural-compare": "^1.4.0", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, "dependencies": { - "acorn": { - "version": "8.6.0", - "dev": true - }, - "eslint-scope": { - "version": "6.0.0", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "dev": true - }, - "espree": { - "version": "9.2.0", + "readable-stream": { + "version": "3.6.0", "dev": true, "requires": { - "acorn": "^8.6.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.1.0", - "dev": true - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "estraverse": { - "version": "5.3.0", - "dev": true - }, - "vue-eslint-parser": { - "version": "8.0.1", + "through2": { + "version": "4.0.2", "dev": true, "requires": { - "debug": "^4.3.2", - "eslint-scope": "^6.0.0", - "eslint-visitor-keys": "^3.0.0", - "espree": "^9.0.0", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.5" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.1.0", - "dev": true - } + "readable-stream": "3" } } } }, - "eslint-scope": { - "version": "5.1.1", - "dev": true, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "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" } }, - "eslint-utils": { - "version": "2.1.0", + "glob-parent": { + "version": "5.1.2", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "is-glob": "^4.0.1" } }, - "eslint-visitor-keys": { - "version": "1.3.0", + "glob-to-regexp": { + "version": "0.3.0", "dev": true }, - "espree": { - "version": "6.2.1", + "global-agent": { + "version": "3.0.0", + "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" + } + }, + "global-dirs": { + "version": "0.1.1", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "dev": true - } + "ini": "^1.3.4" } }, - "esprima": { - "version": "4.0.1", + "global-modules": { + "version": "2.0.0", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globalize": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz", + "integrity": "sha512-faR46vTIbFCeAemyuc9E6/d7Wrx9k2ae2L60UhakztFg6VuE42gENVJNuPFtt7Sdjrk9m2w8+py7Jj+JTNy59w==", + "requires": { + "cldrjs": "^0.5.4" + } + }, + "globals": { + "version": "11.12.0", "dev": true }, - "esquery": { - "version": "1.4.0", + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "devOptional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "9.2.0", "dev": true, "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "dev": true - } + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" } }, - "esrecurse": { - "version": "4.3.0", + "globjoin": { + "version": "0.1.4", + "dev": true + }, + "globule": { + "version": "1.3.2", "dev": true, "requires": { - "estraverse": "^5.2.0" + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" }, "dependencies": { - "estraverse": { - "version": "5.2.0", - "dev": true + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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" + } } } }, - "estraverse": { + "gonzales-pe": { "version": "4.3.0", - "dev": true - }, - "estree-walker": { - "version": "2.0.2" + "dev": true, + "requires": { + "minimist": "^1.2.5" + } }, - "esutils": { - "version": "2.0.3", - "dev": true + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true + "got": { + "version": "9.6.0", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } }, - "event-pubsub": { - "version": "4.3.0", - "dev": true + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "eventemitter3": { - "version": "4.0.7", + "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 }, - "events": { - "version": "3.3.0", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "eventsource": { - "version": "1.1.0", + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true, - "requires": { - "original": "^1.0.0" - } + "optional": true }, - "evp_bytestokey": { - "version": "1.0.3", + "gzip-size": { + "version": "5.1.1", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "duplexer": "^0.1.1", + "pify": "^4.0.1" } }, - "execa": { - "version": "1.0.0", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "handle-thing": { + "version": "2.0.1", + "dev": true }, - "execall": { + "har-schema": { "version": "2.0.0", + "dev": true + }, + "har-validator": { + "version": "5.1.5", "dev": true, "requires": { - "clone-regexp": "^2.1.0" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" } }, - "expand-brackets": { - "version": "2.1.4", + "hard-rejection": { + "version": "2.1.0", + "dev": true + }, + "has": { + "version": "1.0.3", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } + "function-bind": "^1.1.1" } }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "has-ansi": { + "version": "2.0.0", "dev": true, "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "ansi-regex": "^2.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "ansi-regex": { + "version": "2.1.1", "dev": true } } }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "requires": { - "mime-db": "^1.28.0" - } + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "has-flag": { + "version": "3.0.0", + "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==", + "devOptional": true, "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" + "get-intrinsic": "^1.1.1" } }, - "extend": { - "version": "3.0.2", + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true }, - "extend-shallow": { - "version": "3.0.2", + "has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } + "has-symbols": "^1.0.3" } }, - "external-editor": { - "version": "3.1.0", + "has-unicode": { + "version": "2.0.1", + "dev": true + }, + "has-value": { + "version": "1.0.0", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, - "extglob": { - "version": "2.0.4", + "has-values": { + "version": "1.0.0", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", + "kind-of": { + "version": "4.0.0", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-buffer": "^1.1.5" } } } }, - "extract-zip": { - "version": "1.7.0", + "has-yarn": { + "version": "2.1.0", + "dev": true + }, + "hash-base": { + "version": "3.1.0", "dev": true, "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "dependencies": { - "debug": { - "version": "2.6.9", + "readable-stream": { + "version": "3.6.0", "dev": true, "requires": { - "ms": "2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "ms": { - "version": "2.0.0", + "safe-buffer": { + "version": "5.2.1", "dev": true } } }, - "extsprintf": { - "version": "1.3.0", + "hash-sum": { + "version": "2.0.0", "dev": true }, - "fast-deep-equal": { - "version": "3.1.3" - }, - "fast-diff": { - "version": "1.2.0", - "dev": true + "hash.js": { + "version": "1.1.7", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } }, - "fast-glob": { - "version": "2.2.7", + "hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" }, "dependencies": { - "glob-parent": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, - "fast-json-stable-stringify": { - "version": "2.1.0", + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", "dev": true }, - "fast-levenshtein": { - "version": "2.0.6", + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "hex-color-regex": { + "version": "1.1.0", "dev": true }, - "fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true }, - "fastest-levenshtein": { - "version": "1.0.12", + "highlight.js": { + "version": "10.7.3", "dev": true }, - "fastq": { - "version": "1.11.0", + "hmac-drbg": { + "version": "1.0.1", "dev": true, "requires": { - "reusify": "^1.0.4" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "faye-websocket": { - "version": "0.11.4", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } + "hoopy": { + "version": "0.1.4", + "dev": true }, - "fd-slicer": { - "version": "1.1.0", + "hosted-git-info": { + "version": "2.8.9", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", "dev": true, "requires": { - "pend": "~1.2.0" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "fetch-installed-software": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/fetch-installed-software/-/fetch-installed-software-0.0.7.tgz", - "integrity": "sha512-lV9bMiEvF6tC80k2FisTQC3mm7UiZq+RHKNT45N29OnG2w/JHq/POkeFO6rqmtfAKDaz5kcpCE1yqpGsnAVFbw==" + "hsl-regex": { + "version": "1.0.0", + "dev": true }, - "figgy-pudding": { - "version": "3.5.2", + "hsla-regex": { + "version": "1.0.0", "dev": true }, - "figures": { - "version": "3.2.0", + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "whatwg-encoding": "^1.0.5" } }, - "file-entry-cache": { - "version": "5.0.1", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } + "html-entities": { + "version": "1.4.0", + "dev": true }, - "file-loader": { - "version": "4.3.0", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, - "filelist": { - "version": "1.0.2", + "html-minifier": { + "version": "3.5.21", "dev": true, "requires": { - "minimatch": "^3.0.4" + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "dev": true + } } }, - "filesize": { - "version": "3.6.1", + "html-tags": { + "version": "3.1.0", "dev": true }, - "fill-range": { - "version": "4.0.0", + "html-webpack-plugin": { + "version": "3.2.0", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", + "big.js": { + "version": "3.2.0", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "dev": true + }, + "json5": { + "version": "0.5.1", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } } } }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "htmlparser2": { + "version": "3.10.1", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "entities": { + "version": "1.1.2", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", "dev": true, "requires": { - "ms": "2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } - }, - "ms": { + } + } + }, + "http-cache-semantics": { + "version": "4.1.0" + }, + "http-deceiver": { + "version": "1.2.7", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, "statuses": { @@ -39136,1121 +52867,1937 @@ } } }, - "find-cache-dir": { - "version": "3.3.1", + "http-parser-js": { + "version": "0.5.3", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" } }, - "find-root": { - "version": "1.1.0", - "dev": true - }, - "find-up": { - "version": "4.1.0", + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" } }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "2.0.1", + "http-proxy-middleware": { + "version": "1.3.1", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "dependencies": { - "rimraf": { - "version": "2.6.3", + "braces": { + "version": "3.0.2", "dev": true, "requires": { - "glob": "^7.1.3" + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" } } } }, - "flatted": { - "version": "2.0.2", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", + "http-signature": { + "version": "1.2.0", "dev": true, "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "follow-redirects": { - "version": "1.14.5", + "http2-client": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", + "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", "dev": true }, - "for-in": { - "version": "1.0.2", + "https-browserify": { + "version": "1.0.0", "dev": true }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "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": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1" + }, + "hyperid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.1.1.tgz", + "integrity": "sha512-RveV33kIksycSf7HLkq1sHB5wW0OwuX8ot8MYnY++gaaPXGFfKpBncHrAWxdpuEeRlazUMGWefwP1w6o6GaumA==", + "requires": { + "uuid": "^8.3.2", + "uuid-parse": "^1.1.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, + "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" + }, + "dependencies": { + "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": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", "dev": 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==", + "postcss": { + "version": "7.0.39", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "source-map": { + "version": "0.6.1", "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" - } } } }, - "forever-agent": { - "version": "0.6.1", + "ieee754": { + "version": "1.2.1", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "dev": true + }, + "immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", "dev": true }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.1", + "import-cwd": { + "version": "2.1.0", "dev": true, "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" }, "dependencies": { - "semver": { - "version": "5.7.1", + "resolve-from": { + "version": "3.0.0", "dev": true } } }, - "fork-ts-checker-webpack-plugin-v5": { - "version": "npm:fork-ts-checker-webpack-plugin@5.2.1", + "import-lazy": { + "version": "4.0.0", + "dev": true + }, + "import-local": { + "version": "2.0.0", "dev": true, - "optional": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "optional": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", + "find-up": { + "version": "3.0.0", "dev": true, - "optional": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "locate-path": "^3.0.0" } }, - "color-convert": { - "version": "2.0.1", + "locate-path": { + "version": "3.0.0", "dev": true, - "optional": true, "requires": { - "color-name": "~1.1.4" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "color-name": { - "version": "1.1.4", - "dev": true, - "optional": true - }, - "fs-extra": { - "version": "9.1.0", + "p-locate": { + "version": "3.0.0", "dev": true, - "optional": true, "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "p-limit": "^2.0.0" } }, - "has-flag": { - "version": "4.0.0", - "dev": true, - "optional": true - }, - "schema-utils": { - "version": "2.7.0", - "dev": true, - "optional": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } + "path-exists": { + "version": "3.0.0", + "dev": true }, - "supports-color": { - "version": "7.2.0", + "pkg-dir": { + "version": "3.0.0", "dev": true, - "optional": true, "requires": { - "has-flag": "^4.0.0" + "find-up": "^3.0.0" } } } }, - "form-data": { - "version": "2.3.3", - "dev": true, + "imurmurhash": { + "version": "0.1.4", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "dev": true + }, + "inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==" + }, + "inflight": { + "version": "1.0.6", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "once": "^1.3.0", + "wrappy": "1" } }, - "formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "1.3.8", + "devOptional": true + }, + "internal-ip": { + "version": "4.3.0", "dev": true, "requires": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" }, "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "dev": true + "default-gateway": { + "version": "4.2.0", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } } } }, - "forwarded": { - "version": "0.2.0", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==" + }, + "ip": { + "version": "1.1.5", "dev": true }, - "friendly-errors-webpack-plugin": { - "version": "1.7.0", + "ip-regex": { + "version": "2.1.0", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", "dev": true, "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" + "kind-of": "^3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", + "kind-of": { + "version": "3.2.2", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "is-buffer": "^1.1.5" } - }, - "supports-color": { - "version": "2.0.0", - "dev": true } } }, - "from2": { - "version": "2.3.0", + "is-alphabetical": { + "version": "1.0.4", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" } }, - "fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "is-arguments": { + "version": "1.1.1", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", "dev": true }, - "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==", + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "has-bigints": "^1.0.1" } }, - "fs-minipass": { + "is-binary-path": { "version": "2.1.0", "dev": true, "requires": { - "minipass": "^3.0.0" + "binary-extensions": "^2.0.0" } }, - "fs-monkey": { - "version": "1.0.3", + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "optional": true + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } }, - "fs-write-stream-atomic": { - "version": "1.0.10", + "is-buffer": { + "version": "1.1.6" + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "ci-info": "^1.5.0" } }, - "fs.realpath": { - "version": "1.0.0" + "is-color-stop": { + "version": "1.1.0", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } }, - "function-bind": { - "version": "1.1.1", + "is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.4", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", + "is-decimal": { + "version": "1.0.4", "dev": true }, - "gauge": { - "version": "2.7.4", + "is-descriptor": { + "version": "0.1.6", "dev": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", + "kind-of": { + "version": "5.1.0", "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", + } + } + }, + "is-directory": { + "version": "0.3.1", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "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-hexadecimal": { + "version": "1.0.4", + "dev": true + }, + "is-installed-globally": { + "version": "0.4.0", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "dependencies": { + "global-dirs": { + "version": "3.0.0", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "ini": "2.0.0" } }, - "string-width": { - "version": "1.0.2", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "ini": { + "version": "2.0.0", + "dev": true }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "is-path-inside": { + "version": "3.0.3", + "dev": true } } }, - "gaze": { - "version": "1.1.3", - "dev": true, - "requires": { - "globule": "^1.0.0" - } + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true }, - "gensync": { - "version": "1.0.0-beta.2", + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", + "is-npm": { + "version": "5.0.0", "dev": true }, - "get-intrinsic": { - "version": "1.1.1", + "is-number": { + "version": "3.0.0", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" } }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true + "is-obj": { + "version": "2.0.0" }, - "get-stdin": { - "version": "6.0.0", + "is-path-cwd": { + "version": "2.2.0", "dev": true }, - "get-stream": { - "version": "4.1.0", + "is-path-in-cwd": { + "version": "2.1.0", "dev": true, "requires": { - "pump": "^3.0.0" + "is-path-inside": "^2.1.0" } }, - "get-symbol-description": { - "version": "1.0.0", + "is-path-inside": { + "version": "2.1.0", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "path-is-inside": "^1.0.2" } }, - "get-value": { - "version": "2.0.6", + "is-plain-obj": { + "version": "3.0.0", "dev": true }, - "getpass": { - "version": "0.1.7", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, - "git-raw-commits": { - "version": "2.0.10", + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "through2": { - "version": "4.0.2", - "dev": true, - "requires": { - "readable-stream": "3" - } - } + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "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" - } + "is-resolvable": { + "version": "1.1.0", + "dev": true }, - "glob-parent": { - "version": "5.1.2", + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "call-bind": "^1.0.2" } }, - "glob-to-regexp": { - "version": "0.3.0", + "is-stream": { + "version": "1.1.0", "dev": true }, - "global-agent": { - "version": "3.0.0", + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "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" + "has-tostringtag": "^1.0.0" } }, - "global-dirs": { - "version": "0.1.1", + "is-symbol": { + "version": "1.0.4", "dev": true, "requires": { - "ini": "^1.3.4" + "has-symbols": "^1.0.2" } }, - "global-modules": { - "version": "2.0.0", + "is-text-path": { + "version": "1.0.1", "dev": true, "requires": { - "global-prefix": "^3.0.0" + "text-extensions": "^1.0.0" } }, - "global-prefix": { - "version": "3.0.0", + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" } }, - "global-tunnel-ng": { - "version": "2.7.1", + "is-typedarray": { + "version": "1.0.0", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "optional": true, "requires": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" + "call-bind": "^1.0.2" } }, - "globalize": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.7.0.tgz", - "integrity": "sha512-faR46vTIbFCeAemyuc9E6/d7Wrx9k2ae2L60UhakztFg6VuE42gENVJNuPFtt7Sdjrk9m2w8+py7Jj+JTNy59w==", - "requires": { - "cldrjs": "^0.5.4" - } + "is-windows": { + "version": "1.0.2", + "dev": true }, - "globals": { - "version": "11.12.0", + "is-wsl": { + "version": "1.1.0", "dev": true }, - "globalthis": { - "version": "1.0.2", + "is-yarn-global": { + "version": "0.3.0", + "dev": true + }, + "isarray": { + "version": "1.0.0" + }, + "isbinaryfile": { + "version": "4.0.8", + "dev": true + }, + "isexe": { + "version": "2.0.0" + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, - "optional": true, "requires": { - "define-properties": "^1.1.3" + "append-transform": "^2.0.0" } }, - "globby": { - "version": "9.2.0", + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } } }, - "globjoin": { - "version": "0.1.4", - "dev": true - }, - "globule": { - "version": "1.3.2", + "istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" }, "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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": { - "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" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "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 + }, + "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 + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "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" } } } }, - "gonzales-pe": { - "version": "4.3.0", + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "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 + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, + "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" + } + } } }, - "got": { - "version": "9.6.0", + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } } }, - "graceful-fs": { - "version": "4.2.6" - }, - "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 - }, - "gzip-size": { - "version": "5.1.1", + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" } }, - "handle-thing": { - "version": "2.0.1", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "dev": true + "jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } }, - "har-validator": { - "version": "5.1.5", + "jake": { + "version": "10.8.2", "dev": true, "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "dev": true + } } }, - "hard-rejection": { + "javascript-stringify": { "version": "2.1.0", "dev": true }, - "has": { - "version": "1.0.3", + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "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 + }, + "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 + }, + "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" + } + } } }, - "has-ansi": { - "version": "2.0.0", + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", + "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" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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 + }, + "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 + }, + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true + }, + "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" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, - "has-bigints": { - "version": "1.0.1", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-unicode": { - "version": "2.0.1", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" }, "dependencies": { - "kind-of": { + "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" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "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" + } + }, + "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 + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.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 + }, + "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 + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "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" + } + }, + "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" } } } }, - "has-yarn": { - "version": "2.1.0", - "dev": true - }, - "hash-base": { - "version": "3.1.0", + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", + "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": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "color-convert": "^2.0.1" } }, - "safe-buffer": { - "version": "5.2.1", + "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" + } + }, + "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 + }, + "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 + }, + "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" + } } } }, - "hash-sum": { - "version": "2.0.0", - "dev": true - }, - "hash.js": { - "version": "1.1.7", + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "detect-newline": "^3.0.0" } }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", "dev": true, "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" }, "dependencies": { - "is-stream": { + "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" + } + }, + "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" + } + }, + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "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 }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "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 + }, + "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" + } } } }, - "he": { - "version": "1.2.0", - "dev": true - }, - "header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "dev": true - }, - "hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true - }, - "highlight.js": { - "version": "10.7.3", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoopy": { - "version": "0.1.4", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", "dev": true, "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" } }, - "hsl-regex": { - "version": "1.0.0", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", "dev": true, "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "dev": true - } + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" } }, - "html-tags": { - "version": "3.1.0", + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", "dev": true }, - "html-webpack-plugin": { - "version": "3.2.0", + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "dependencies": { - "big.js": { - "version": "3.2.0", + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.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 }, - "emojis-list": { - "version": "2.1.0", + "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 }, - "json5": { - "version": "0.5.1", - "dev": true + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } }, - "loader-utils": { - "version": "0.2.17", + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" } }, - "util.promisify": { - "version": "1.0.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": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "has-flag": "^4.0.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" } } } }, - "htmlparser2": { - "version": "3.10.1", + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", "dev": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" }, "dependencies": { - "entities": { - "version": "1.1.2", + "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" + } + }, + "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" + } + }, + "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 }, - "readable-stream": { - "version": "3.6.0", + "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 + }, + "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": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "has-flag": "^4.0.0" } } } }, - "http-cache-semantics": { - "version": "4.1.0", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "dev": true + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", "dev": true, "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true + "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" + } }, - "statuses": { + "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" + } + }, + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "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 + }, + "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 + }, + "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" + } } } }, - "http-parser-js": { - "version": "0.5.3", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "1.3.1", + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, "requires": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" }, "dependencies": { + "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" + } + }, "braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" + } + }, + "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" + } + }, + "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 + }, "fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.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 + }, "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 }, "micromatch": { - "version": "4.0.4", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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" } }, "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" @@ -40258,251 +54805,495 @@ } } }, - "http-signature": { - "version": "1.2.0", + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "@jest/types": "^26.6.2", + "@types/node": "*" } }, - "http2-client": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", - "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", - "dev": true + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} }, - "https-browserify": { - "version": "1.0.0", + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", "dev": true }, - "human-signals": { - "version": "1.1.1" - }, - "hyperid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.0.1.tgz", - "integrity": "sha512-I+tl7TS5nsoVhkxqX1rS3Qmqlq44eoPUcgPthW8v3IW8CvWL7lwtd6HQbkDUMrBKJTG0vgEaRsjT35imW/D+9Q==", + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, "requires": { - "uuid": "^8.3.2", - "uuid-parse": "^1.1.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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" + } } } }, - "iconv-lite": { - "version": "0.4.24", + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" } }, - "icss-utils": { - "version": "4.1.1", + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", "dev": true, "requires": { - "postcss": "^7.0.14" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" }, "dependencies": { - "picocolors": { - "version": "0.2.1", + "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" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.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" + } + } + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "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" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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 + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, - "postcss": { - "version": "7.0.39", + "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" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "source-map": { - "version": "0.6.1", - "dev": true + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, - "ieee754": { - "version": "1.2.1", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "immediate": { - "version": "3.0.6", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "3.3.0", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-from": { - "version": "2.1.0", + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "dev": true - } + "@types/node": "*", + "graceful-fs": "^4.2.4" } }, - "import-lazy": { - "version": "4.0.0", - "dev": true - }, - "import-local": { - "version": "2.0.0", + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" }, "dependencies": { - "find-up": { - "version": "3.0.0", + "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": { - "locate-path": "^3.0.0" + "color-convert": "^2.0.1" } }, - "locate-path": { - "version": "3.0.0", + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "p-locate": { - "version": "3.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": { - "p-limit": "^2.0.0" + "color-name": "~1.1.4" } }, - "path-exists": { - "version": "3.0.0", + "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 }, - "pkg-dir": { - "version": "3.0.0", + "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 + }, + "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": { - "find-up": "^3.0.0" + "has-flag": "^4.0.0" } } } }, - "imurmurhash": { - "version": "0.1.4", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "dev": true - }, - "inflection": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", - "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==" - }, - "inflight": { - "version": "1.0.6", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4" - }, - "ini": { - "version": "1.3.8", - "dev": true - }, - "inquirer": { - "version": "7.3.3", + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" }, "dependencies": { "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" } }, - "chalk": { - "version": "4.1.1", + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fill-range": "^7.1.1" } }, - "cli-cursor": { - "version": "3.1.0", + "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": { - "restore-cursor": "^3.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "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" @@ -40510,468 +55301,295 @@ }, "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 }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.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 }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "onetime": { - "version": "5.1.2", + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "ci-info": "^2.0.0" } }, - "restore-cursor": { - "version": "3.1.0", + "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 + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" } }, "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" } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "default-gateway": { - "version": "4.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": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "is-number": "^7.0.0" } } } }, - "internal-slot": { - "version": "1.0.3", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "dev": true - }, - "invert-kv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", - "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==" - }, - "ip": { - "version": "1.1.5", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.1", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" }, "dependencies": { - "kind-of": { - "version": "3.2.2", + "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": { - "is-buffer": "^1.1.5" + "color-convert": "^2.0.1" } - } - } - }, - "is-alphabetical": { - "version": "1.0.4", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-arguments": { - "version": "1.1.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "dev": true - }, - "is-bigint": { - "version": "1.0.2", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-buffer": { - "version": "1.1.6" - }, - "is-callable": { - "version": "1.2.3", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.4.0", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", + }, + "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": { - "is-buffer": "^1.1.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } - } - } - }, - "is-date-object": { - "version": "1.0.4", - "dev": true - }, - "is-decimal": { - "version": "1.0.4", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.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 + }, + "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 + }, + "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" + } } } }, - "is-directory": { - "version": "0.3.1", - "dev": true - }, - "is-docker": { - "version": "2.2.1", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0" - }, - "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-hexadecimal": { - "version": "1.0.4", - "dev": true - }, - "is-installed-globally": { - "version": "0.4.0", + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", "dev": true, "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" }, "dependencies": { - "global-dirs": { - "version": "3.0.0", + "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" + } + }, + "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": { - "ini": "2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "ini": { - "version": "2.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 }, - "is-path-inside": { - "version": "3.0.3", + "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 + }, + "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" + } } } }, - "is-negative-zero": { - "version": "2.0.1", - "dev": true - }, - "is-npm": { - "version": "5.0.0", - "dev": true - }, - "is-number": { - "version": "3.0.0", + "jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", + "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 + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "has-flag": "^4.0.0" } } } }, - "is-number-object": { - "version": "1.0.5", - "dev": true - }, - "is-obj": { - "version": "2.0.0" - }, - "is-path-cwd": { - "version": "2.2.0", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "3.0.0", - "dev": true - }, - "is-regex": { - "version": "1.1.3", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "is-resolvable": { - "version": "1.1.0", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "dev": true - }, - "is-string": { - "version": "1.0.6", - "dev": true - }, - "is-symbol": { - "version": "1.0.4", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-text-path": { - "version": "1.0.1", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "dev": true - }, - "is-weakref": { - "version": "1.0.1", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "dev": true - }, - "is-yarn-global": { - "version": "0.3.0", - "dev": true - }, - "isarray": { - "version": "1.0.0" - }, - "isbinaryfile": { - "version": "4.0.8", - "dev": true - }, - "isexe": { - "version": "2.0.0" - }, - "isobject": { - "version": "3.0.1", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "joi": { + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", "dev": true, "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } } } }, - "istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "js-base64": { + "version": "2.6.4", + "dev": true + }, + "js-beautify": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.4.tgz", + "integrity": "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==", "dev": true, "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.4.2", + "js-cookie": "^3.0.5", + "nopt": "^7.2.1" }, "dependencies": { + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -40979,13 +55597,62 @@ "which": "^2.0.1" } }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "aggregate-error": "^3.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "requires": { + "abbrev": "^2.0.0" } }, "path-key": { @@ -41009,10 +55676,10 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, "which": { @@ -41026,89 +55693,16 @@ } } }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "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 - }, - "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" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "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 - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jake": { - "version": "10.8.2", - "dev": true, - "requires": { - "async": "0.9.x", - "chalk": "^2.4.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "dev": true - } - } - }, - "javascript-stringify": { - "version": "2.1.0", - "dev": true - }, - "js-base64": { - "version": "2.6.4", + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", "dev": true }, "js-ini": { - "version": "1.5.1" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/js-ini/-/js-ini-1.6.0.tgz", + "integrity": "sha512-9Vx+NVkMRNY4i7pLLIGdXIQbP1iwB3fP2IG1zMCgeUUvR1ODmTKa33eR/J9FHoorNsfoJr9/2SVqeSKLwPD9Nw==" }, "js-message": { "version": "1.0.7", @@ -41139,13 +55733,133 @@ "version": "0.1.1", "dev": true }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true + }, + "form-data": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "requires": {} + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + } + } + }, "jsesc": { - "version": "2.5.2", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true }, "json-buffer": { - "version": "3.0.0", - "dev": true + "version": "3.0.0" }, "json-parse-better-errors": { "version": "1.0.2", @@ -41174,18 +55888,17 @@ }, "json-stringify-safe": { "version": "5.0.1", - "dev": true + "devOptional": true }, "json3": { "version": "3.3.3", "dev": true }, "json5": { - "version": "2.2.0", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true }, "jsonfile": { "version": "6.1.0", @@ -41237,7 +55950,6 @@ }, "keyv": { "version": "3.1.0", - "dev": true, "requires": { "json-buffer": "3.0.0" } @@ -41250,6 +55962,12 @@ "version": "6.0.3", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "klona": { "version": "2.0.4", "dev": true @@ -41291,12 +56009,20 @@ "invert-kv": "^3.0.0" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "levn": { - "version": "0.3.0", + "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.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, "lie": { @@ -41453,6 +56179,12 @@ "requires": { "isexe": "^2.0.0" } + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true } } }, @@ -41477,10 +56209,6 @@ "color-convert": "^2.0.1" } }, - "astral-regex": { - "version": "2.0.0", - "dev": true - }, "cli-truncate": { "version": "2.1.0", "dev": true, @@ -41511,26 +56239,6 @@ "aggregate-error": "^3.0.0" } }, - "rxjs": { - "version": "7.4.0", - "dev": true, - "requires": { - "tslib": "~2.1.0" - } - }, - "slice-ansi": { - "version": "3.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "tslib": { - "version": "2.1.0", - "dev": true - }, "wrap-ansi": { "version": "7.0.0", "dev": true, @@ -41542,44 +56250,33 @@ } } }, - "loader-fs-cache": { - "version": "1.0.3", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "pkg-dir": { - "version": "1.0.0", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true } } }, @@ -41699,10 +56396,6 @@ "color-convert": "^2.0.1" } }, - "astral-regex": { - "version": "2.0.0", - "dev": true - }, "cli-cursor": { "version": "3.1.0", "dev": true, @@ -41769,16 +56462,16 @@ "dev": true }, "loopback-connector": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-5.0.1.tgz", - "integrity": "sha512-aSPT6x5WZdoW9ylyNE4CxGqFbIqC9cSEZJwWkCincso27PXlZPj52POoF6pgxug9mkH7MrbXuP3SSDLkLq5oQQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-5.3.3.tgz", + "integrity": "sha512-ZYULfy5W7+R2A3I9TILWZOdfMVcZ2qEQT/tye0Fy7Ju3zQ6Gv1bmroARGPGVDAneFt+5YaiaieLdoJ1t02hLpg==", "requires": { - "async": "^3.2.0", + "async": "^3.2.4", "bluebird": "^3.7.2", - "debug": "^4.1.1", - "msgpack5": "^4.2.0", - "strong-globalize": "^6.0.4", - "uuid": "^8.3.0" + "debug": "^4.3.4", + "msgpack5": "^4.5.1", + "strong-globalize": "^6.0.5", + "uuid": "^9.0.0" }, "dependencies": { "async": { @@ -41787,30 +56480,30 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" } } }, "loopback-datasource-juggler": { - "version": "4.27.1", - "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-4.27.1.tgz", - "integrity": "sha512-tZ+NB55F/syrFAOBAndKXKERKmFU7w0UYT6NhbQqLFSc2eVmrk4Wfx3lULGYB9UCJAJIeDoCXJYvjThaeZ3TCQ==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-4.28.8.tgz", + "integrity": "sha512-tfBmMhtbop6BIFuYVWwMXFaNj9Q+LGZiKR31hhlYriOA78FOzJ9efAWGEEFtWLa/uMpI3OJcwKsa20OGF63IPQ==", "requires": { - "async": "^3.1.0", - "change-case": "^4.1.1", - "debug": "^4.1.0", + "async": "^3.2.4", + "change-case": "^4.1.2", + "debug": "^4.3.4", "depd": "^2.0.0", - "inflection": "^1.6.0", - "lodash": "^4.17.11", - "loopback-connector": "^5.0.0", - "minimatch": "^3.0.3", - "nanoid": "^3.1.20", - "qs": "^6.5.0", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "loopback-connector": "^5.3.3", + "minimatch": "^5.1.6", + "nanoid": "^3.3.6", + "qs": "^6.11.2", "strong-globalize": "^6.0.5", - "traverse": "^0.6.6", - "uuid": "^8.3.1" + "traverse": "^0.6.7", + "uuid": "^9.0.0" }, "dependencies": { "async": { @@ -41818,15 +56511,44 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" } } }, @@ -41835,8 +56557,7 @@ "dev": true }, "lowercase-keys": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "lru-cache": { "version": "6.0.0", @@ -41867,6 +56588,15 @@ "version": "1.3.6", "dev": true }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -41892,7 +56622,6 @@ }, "matcher": { "version": "3.0.0", - "dev": true, "optional": true, "requires": { "escape-string-regexp": "^4.0.0" @@ -41900,11 +56629,15 @@ "dependencies": { "escape-string-regexp": { "version": "4.0.0", - "dev": true, "optional": true } } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "mathml-tag-names": { "version": "2.1.3", "dev": true @@ -42022,13 +56755,6 @@ "lru-cache": "^6.0.0" } }, - "is-core-module": { - "version": "2.8.0", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "normalize-package-data": { "version": "3.0.3", "dev": true, @@ -42147,8 +56873,7 @@ "dev": true }, "mimic-response": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "min-indent": { "version": "1.0.1", @@ -42202,8 +56927,7 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "minimist-options": { "version": "4.1.0", @@ -42301,18 +57025,16 @@ }, "mkdirp": { "version": "0.5.5", - "dev": true, "requires": { "minimist": "^1.2.5" } }, "mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", - "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", @@ -42567,9 +57289,9 @@ } }, "mock-fs": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.1.3.tgz", - "integrity": "sha512-6rAOGeJgXFYsHlRSsuwUsSIPHk3sA4JfCOLswTc0gSFIU6HTC2xaRXh14orYKYLAg5ygmnxaYsrRxC4xNUkxnw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.5.0.tgz", + "integrity": "sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==", "dev": true }, "mock-require": { @@ -42653,10 +57375,6 @@ "version": "1.1.0", "dev": true }, - "mute-stream": { - "version": "0.0.8", - "dev": true - }, "mylas": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.9.tgz", @@ -42679,7 +57397,8 @@ "nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -42702,6 +57421,12 @@ "version": "1.4.0", "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 + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -42717,18 +57442,27 @@ "dev": true }, "nise": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", - "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", + "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", "dev": true, "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": ">=5", + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", "path-to-regexp": "^1.7.0" }, "dependencies": { + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -42753,6 +57487,24 @@ "lower-case": "^1.1.1" } }, + "nock": { + "version": "13.5.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.4.tgz", + "integrity": "sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" + } + }, + "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-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -42799,6 +57551,12 @@ } } }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node-ipc": { "version": "9.1.4", "dev": true, @@ -42843,6 +57601,50 @@ } } }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -42853,7 +57655,9 @@ } }, "node-releases": { - "version": "1.1.72", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node-sass": { @@ -43063,7 +57867,6 @@ }, "npm-conf": { "version": "1.1.3", - "dev": true, "optional": true, "requires": { "config-chain": "^1.1.11", @@ -43072,7 +57875,6 @@ "dependencies": { "pify": { "version": "3.0.0", - "dev": true, "optional": true } } @@ -43109,6 +57911,12 @@ "version": "1.0.1", "dev": true }, + "nwsapi": { + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", + "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", + "dev": true + }, "nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -43260,6 +58068,14 @@ "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", "yaml": "^1.10.0" + }, + "dependencies": { + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } } }, "oas-resolver": { @@ -43327,6 +58143,12 @@ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs": { "version": "17.5.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", @@ -43370,6 +58192,14 @@ "reftools": "^1.1.9", "should": "^13.2.1", "yaml": "^1.10.0" + }, + "dependencies": { + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } } }, "oauth-sign": { @@ -43405,13 +58235,10 @@ } } }, - "object-hash": { - "version": "1.3.1", - "dev": true - }, "object-inspect": { - "version": "1.12.0", - "dev": true + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, "object-is": { "version": "1.1.5", @@ -43423,7 +58250,7 @@ }, "object-keys": { "version": "1.1.1", - "dev": true + "devOptional": true }, "object-visit": { "version": "1.0.1", @@ -43433,12 +58260,14 @@ } }, "object.assign": { - "version": "4.1.2", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -43449,53 +58278,6 @@ "call-bind": "^1.0.2", "define-properties": "^1.1.3", "es-abstract": "^1.19.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.19.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "is-callable": { - "version": "1.2.4", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-string": { - "version": "1.0.7", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - } } }, "object.pick": { @@ -43506,59 +58288,14 @@ } }, "object.values": { - "version": "1.1.5", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.19.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "is-callable": { - "version": "1.2.4", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-string": { - "version": "1.0.7", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - } + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "obuf": { @@ -43610,15 +58347,17 @@ } }, "optionator": { - "version": "0.8.3", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" } }, "ora": { @@ -43751,19 +58490,20 @@ } } }, - "os-tmpdir": { - "version": "1.0.2", - "dev": true - }, "p-cancelable": { - "version": "1.1.0", - "dev": true + "version": "1.1.0" }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==" }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, "p-event": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", @@ -43843,6 +58583,12 @@ } } }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "pako": { "version": "1.0.11", "dev": true @@ -43991,6 +58737,27 @@ "version": "1.0.7", "dev": true }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==" + } + } + }, "path-to-regexp": { "version": "0.1.7", "dev": true @@ -44020,15 +58787,16 @@ } }, "pend": { - "version": "1.2.0", - "dev": true + "version": "1.2.0" }, "performance-now": { "version": "2.1.0", "dev": true }, "picocolors": { - "version": "1.0.0" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "picomatch": { "version": "2.3.1", @@ -44051,6 +58819,12 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true + }, "pkg-dir": { "version": "4.2.0", "dev": true, @@ -44098,6 +58872,34 @@ } } }, + "playwright": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", + "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "dev": true, + "requires": { + "fsevents": "2.3.2", + "playwright-core": "1.52.0" + } + }, + "playwright-core": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", + "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "dev": true + }, + "plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "optional": true, + "requires": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, "pnp-webpack-plugin": { "version": "1.7.0", "dev": true, @@ -44128,11 +58930,20 @@ "dev": true }, "postcss": { - "version": "8.3.11", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "dependencies": { + "nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" + } } }, "postcss-calc": { @@ -45194,7 +60005,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.6", + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -45269,7 +60082,9 @@ "dev": true }, "prelude-ls": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prepend-http": { @@ -45277,9 +60092,9 @@ "dev": true }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, "prettier-linter-helpers": { @@ -45297,6 +60112,50 @@ "renderkid": "^2.0.4" } }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, "process": { "version": "0.11.10", "dev": true @@ -45314,17 +60173,31 @@ } }, "progress": { - "version": "2.0.3", - "dev": true + "version": "2.0.3" }, "promise-inflight": { "version": "1.0.1", "dev": true }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, "proto-list": { "version": "1.2.4", - "dev": true, - "optional": true + "devOptional": true }, "proxy-addr": { "version": "2.0.7", @@ -45415,7 +60288,8 @@ "dev": true }, "qs": { - "version": "6.5.2" + "version": "6.5.2", + "dev": true }, "query-string": { "version": "4.3.4", @@ -45494,6 +60368,12 @@ "strip-json-comments": "~2.0.1" } }, + "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", "dev": true, @@ -45627,11 +60507,14 @@ } }, "regexp.prototype.flags": { - "version": "1.3.1", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" } }, "regexpp": { @@ -45858,11 +60741,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -45895,7 +60781,6 @@ }, "responselike": { "version": "1.0.2", - "dev": true, "requires": { "lowercase-keys": "^1.0.0" } @@ -45951,7 +60836,6 @@ }, "roarr": { "version": "2.15.4", - "dev": true, "optional": true, "requires": { "boolean": "^3.0.1", @@ -45964,13 +60848,44 @@ "dependencies": { "sprintf-js": { "version": "1.1.2", - "dev": true, "optional": true } } }, - "run-async": { - "version": "2.4.1", + "rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "@types/estree": "1.0.8", + "fsevents": "~2.3.2" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", "dev": true }, "run-parallel": { @@ -45990,18 +60905,12 @@ } }, "rxjs": { - "version": "6.6.7", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "tslib": "^2.1.0" } }, "safe-buffer": { @@ -46014,10 +60923,59 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "dev": true }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, "sanitize-filename": { "version": "1.6.3", "dev": true, @@ -46025,6 +60983,221 @@ "truncate-utf8-bytes": "^1.0.0" } }, + "sass": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", + "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", + "dev": true, + "optional": true, + "requires": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "dependencies": { + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "optional": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "optional": true + } + } + }, + "sass-embedded": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.90.0.tgz", + "integrity": "sha512-XP1EltyLLfuU5FsGVjSz8PcT925oA3rDnJTWOEBHR42k62ZEbKTcZ4gVlFwKi0Ggzi5E8v1K2BplD8ELHwusYg==", + "dev": true, + "requires": { + "@bufbuild/protobuf": "^2.5.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "sass-embedded-all-unknown": "1.90.0", + "sass-embedded-android-arm": "1.90.0", + "sass-embedded-android-arm64": "1.90.0", + "sass-embedded-android-riscv64": "1.90.0", + "sass-embedded-android-x64": "1.90.0", + "sass-embedded-darwin-arm64": "1.90.0", + "sass-embedded-darwin-x64": "1.90.0", + "sass-embedded-linux-arm": "1.90.0", + "sass-embedded-linux-arm64": "1.90.0", + "sass-embedded-linux-musl-arm": "1.90.0", + "sass-embedded-linux-musl-arm64": "1.90.0", + "sass-embedded-linux-musl-riscv64": "1.90.0", + "sass-embedded-linux-musl-x64": "1.90.0", + "sass-embedded-linux-riscv64": "1.90.0", + "sass-embedded-linux-x64": "1.90.0", + "sass-embedded-unknown-all": "1.90.0", + "sass-embedded-win32-arm64": "1.90.0", + "sass-embedded-win32-x64": "1.90.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "dependencies": { + "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 + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "sass-embedded-all-unknown": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.90.0.tgz", + "integrity": "sha512-/n7jTQvI+hftDDrHzK19G4pxfDzOhtjuQO1K54ui1pT2S0sWfWDjCYUbQgtWQ6FO7g5qWS0hgmrWdc7fmS3rgA==", + "dev": true, + "optional": true, + "requires": { + "sass": "1.90.0" + } + }, + "sass-embedded-android-arm": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.90.0.tgz", + "integrity": "sha512-usF6kVJQWa1CMgPH1nCT1y8KEmAT2fzB00dDIPBYHq8U5VZLCihi2bJRP5U9NlcwP1TlKGKCjwsbIdSjDKfecg==", + "dev": true, + "optional": true + }, + "sass-embedded-android-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.90.0.tgz", + "integrity": "sha512-bkTlewzWksa6Sj4Zs1CWiutnvUbsO3xuYh2QBRknXsOtuMlfTPoXnwhCnyE4lSvUxw2qxSbv+NdQev9qMfsBgA==", + "dev": true, + "optional": true + }, + "sass-embedded-android-riscv64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.90.0.tgz", + "integrity": "sha512-bpqCIOaX+0Lou/BNJ4iJIKbWbVaYXFdg26C3gG6gxxKZRzp/6OYCxHrIQDwhKz6YC8Q5rwNPMpfDVYbWPcgroA==", + "dev": true, + "optional": true + }, + "sass-embedded-android-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.90.0.tgz", + "integrity": "sha512-GNxVKnCMd/p2icZ+Q4mhvNk19NrLXq1C4guiqjrycHYQLEnxRkjbW1QXYiL+XyDn4e+Bcq0knzG0I9pMuNZxkg==", + "dev": true, + "optional": true + }, + "sass-embedded-darwin-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.90.0.tgz", + "integrity": "sha512-qr4KBMJfBA+lzXiWnP00qzpLzHQzGd1OSK3VHcUFjZ8l7VOYf2R7Tc3fcTLhpaNPMJtTK0jrk8rFqBvsiZExnA==", + "dev": true, + "optional": true + }, + "sass-embedded-darwin-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.90.0.tgz", + "integrity": "sha512-z2nr1nNqtWDLVRwTbHtL7zriK90U7O/Gb15UaCSMYeAz9Y+wog5s/sDEKm0+GsVdzzkaCaMZRWGN4jTilnUwmQ==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-arm": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.90.0.tgz", + "integrity": "sha512-FeBxI5Q2HvM3CCadcEcQgvWbDPVs2YEF0PZ87fbAVTCG8dV+iNnQreSz7GRJroknpvbRhm5t2gedvcgmTnPb2Q==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.90.0.tgz", + "integrity": "sha512-SPMcGZuP71Fj8btCGtlBnv8h8DAbJn8EQfLzXs9oo6NGFFLVjNGiFpqGfgtUV6DLWCuaRyEFeViO7wZow/vKGQ==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-musl-arm": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.90.0.tgz", + "integrity": "sha512-EB2z0fUXdUdvSoddf4DzdZQkD/xyreD72gwAi8YScgUvR4HMXI7bLcK/n78Rft6OnqvV8090hjC8FsLDo3x5xQ==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-musl-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.90.0.tgz", + "integrity": "sha512-xLH7+PFq763MoEm3vI7hQk5E+nStiLWbijHEYW/tEtCbcQIphgzSkDItEezxXew3dU4EJ1jqrBUySPdoXFLqWA==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-musl-riscv64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.90.0.tgz", + "integrity": "sha512-L21UkOgnSrD+ERF+jo1IWneGv40t0ap9+3cI+wZWYhQS5MkxponhT9QaNU57JEDJwB9mOl01LVw14opz4SN+VQ==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-musl-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.90.0.tgz", + "integrity": "sha512-NeAycQlsdhFdnIeSmRmScYUyCd+uE+x15NLFunbF8M0PgCKurrUhaxgGKSuBbaK56FpxarKOHCqcOrWbemIGzQ==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-riscv64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.90.0.tgz", + "integrity": "sha512-lJopaQhW8S+kaQ61vMqq3c+bOurcf9RdZf2EmzQYpc2y1vT5cWfRNrRkbAgO/23IQxsk/fq3UIUnsjnyQmi6MA==", + "dev": true, + "optional": true + }, + "sass-embedded-linux-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.90.0.tgz", + "integrity": "sha512-Cc061gBfMPwH9rN7neQaH36cvOQC+dFMSGIeX5qUOhrEL4Ng51iqBV6aI4RIB1jCFGth6eDydVRN1VdV9qom8A==", + "dev": true, + "optional": true + }, + "sass-embedded-unknown-all": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.90.0.tgz", + "integrity": "sha512-DBGzHVCJDqtjTHZFohush9YTxd4ZxhIygIRTNRXnA0359woF9Z8AS7/YxfzwkqrTX5durSJa6ZamGFYVLoRphQ==", + "dev": true, + "optional": true, + "requires": { + "sass": "1.90.0" + } + }, + "sass-embedded-win32-arm64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.90.0.tgz", + "integrity": "sha512-c3/vL/CATnaW3x/6kcNbCROEOUU7zvJpIURp7M9664GJj08/gLPRWKNruw0OkAPQ3C5TTQz7+/fQWEpRA6qmvA==", + "dev": true, + "optional": true + }, + "sass-embedded-win32-x64": { + "version": "1.90.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.90.0.tgz", + "integrity": "sha512-PFwdW7AYtCkwi3NfWFeexvIZEJ0nuShp8Bjjc3px756+18yYwBWa78F4TGdIQmJfpYKBhgkVjFOctwq+NCHntA==", + "dev": true, + "optional": true + }, "sass-graph": { "version": "2.2.5", "dev": true, @@ -46069,6 +61242,15 @@ "sax": { "version": "1.2.4" }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "schema-utils": { "version": "2.7.1", "dev": true, @@ -46114,7 +61296,6 @@ }, "semver-compare": { "version": "1.0.0", - "dev": true, "optional": true }, "semver-diff": { @@ -46225,7 +61406,6 @@ }, "serialize-error": { "version": "7.0.1", - "dev": true, "optional": true, "requires": { "type-fest": "^0.13.1" @@ -46233,7 +61413,6 @@ "dependencies": { "type-fest": { "version": "0.13.1", - "dev": true, "optional": true } } @@ -46372,6 +61551,13 @@ "version": "1.7.2", "dev": true }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, "should": { "version": "13.2.3", "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", @@ -46428,7 +61614,6 @@ }, "side-channel": { "version": "1.0.4", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -46452,16 +61637,16 @@ } }, "sinon": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-11.1.2.tgz", - "integrity": "sha512-59237HChms4kg7/sXhiRcUzdSkKuydDeTiamT/jesUVHshBgL8XAmhgFo0GfK6RruMDM/iRSij1EybmMog9cJw==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", "dev": true, "requires": { - "@sinonjs/commons": "^1.8.3", - "@sinonjs/fake-timers": "^7.1.2", - "@sinonjs/samsam": "^6.0.2", - "diff": "^5.0.0", - "nise": "^5.1.0", + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", "supports-color": "^7.2.0" }, "dependencies": { @@ -46488,25 +61673,56 @@ } } }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, "slash": { "version": "2.0.0", "dev": true }, "slice-ansi": { - "version": "2.1.0", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "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==", + "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==" } } }, + "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 + }, "snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -46672,7 +61888,9 @@ "dev": true }, "source-map-js": { - "version": "0.6.2" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, "source-map-resolve": { "version": "0.5.3", @@ -46848,6 +62066,23 @@ "stable": { "version": "0.1.8" }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "stackframe": { "version": "1.2.0", "dev": true @@ -46929,6 +62164,16 @@ "version": "0.3.1", "dev": true }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -46939,20 +62184,47 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, "string.prototype.trimend": { - "version": "1.0.4", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.4", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "strip-ansi": { @@ -46968,6 +62240,21 @@ } } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + } + } + }, "strip-bom": { "version": "3.0.0", "dev": true @@ -47128,10 +62415,6 @@ "version": "2.1.0", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "dev": true - }, "balanced-match": { "version": "2.0.0", "dev": true @@ -47192,13 +62475,6 @@ "picomatch": "^2.2.1" } }, - "file-entry-cache": { - "version": "6.0.1", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, "fill-range": { "version": "7.0.1", "dev": true, @@ -47206,18 +62482,6 @@ "to-regex-range": "^5.0.1" } }, - "flat-cache": { - "version": "3.0.4", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.1.1", - "dev": true - }, "get-stdin": { "version": "8.0.0", "dev": true @@ -47368,6 +62632,12 @@ "version": "0.18.1", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs-parser": { "version": "20.2.7", "dev": true @@ -47424,28 +62694,26 @@ }, "sumchecker": { "version": "3.0.1", - "dev": true, "requires": { "debug": "^4.1.0" } }, "superagent": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.0.tgz", - "integrity": "sha512-iudipXEel+SzlP9y29UBWGDjB+Zzag+eeA1iLosaR2YHBRr1Q1kC29iBrF2zIVD9fqVbpZnXkN/VJmwFMVyNWg==", + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", + "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", "dev": true, "requires": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", + "cookiejar": "^2.1.4", "debug": "^4.3.4", "fast-safe-stringify": "^2.1.1", "form-data": "^4.0.0", - "formidable": "^2.0.1", + "formidable": "^2.1.2", "methods": "^1.1.2", "mime": "2.6.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" + "qs": "^6.11.0", + "semver": "^7.3.8" }, "dependencies": { "form-data": { @@ -47460,29 +62728,18 @@ } }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "requires": { "side-channel": "^1.0.4" } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -47491,13 +62748,13 @@ } }, "supertest": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.4.tgz", - "integrity": "sha512-M8xVnCNv+q2T2WXVzxDECvL2695Uv2uUj2O0utxsld/HRyJvOU8W9f1gvsYxSNU4wmIe0/L/ItnpU4iKq0emDA==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz", + "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==", "dev": true, "requires": { "methods": "^1.1.2", - "superagent": "^8.0.0" + "superagent": "^8.0.5" } }, "supports-color": { @@ -47507,6 +62764,39 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "svg-tags": { "version": "1.0.0", "dev": true @@ -47530,42 +62820,27 @@ "util.promisify": "~1.0.0" } }, - "table": { - "version": "5.4.6", + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "sync-message-port": "^1.0.0" } }, + "sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true + }, "tapable": { "version": "1.1.3", "dev": true @@ -47598,25 +62873,55 @@ "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" + } + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" } }, "terser": { - "version": "4.8.0", + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "dependencies": { - "source-map": { - "version": "0.6.1", + "acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true } } }, "terser-webpack-plugin": { - "version": "1.4.5", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.6.tgz", + "integrity": "sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==", "dev": true, "requires": { "cacache": "^12.0.2", @@ -47696,6 +63001,17 @@ "source-map": { "version": "0.6.1", "dev": true + }, + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } } } }, @@ -47741,6 +63057,12 @@ "neo-async": "^2.6.0" } }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, "through": { "version": "2.3.8", "dev": true @@ -47784,11 +63106,29 @@ "version": "0.3.0", "dev": true }, - "tmp": { - "version": "0.0.33", + "tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "dependencies": { + "fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "requires": {} + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + } } }, "tmp-promise": { @@ -47807,12 +63147,14 @@ } } }, - "to-arraybuffer": { - "version": "1.0.1", + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, - "to-fast-properties": { - "version": "2.0.0", + "to-arraybuffer": { + "version": "1.0.1", "dev": true }, "to-object-path": { @@ -47832,8 +63174,7 @@ } }, "to-readable-stream": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "to-regex": { "version": "3.0.2", @@ -47897,9 +63238,9 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==" }, "trim-newlines": { "version": "3.0.1", @@ -47927,6 +63268,38 @@ "version": "1.0.1", "dev": true }, + "ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, "ts-loader": { "version": "6.2.2", "dev": true, @@ -47978,15 +63351,38 @@ } }, "ts-node": { - "version": "9.1.1", - "dev": true, - "requires": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "dev": true + }, + "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 + } } }, "ts-pnp": { @@ -48123,6 +63519,18 @@ } } }, + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, "tsconfig-paths": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz", @@ -48132,14 +63540,6 @@ "json5": "^2.2.1", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - } } }, "tslib": { @@ -48206,7 +63606,6 @@ }, "tunnel": { "version": "0.0.6", - "dev": true, "optional": true }, "tunnel-agent": { @@ -48221,10 +63620,12 @@ "dev": true }, "type-check": { - "version": "0.3.2", + "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.1.2" + "prelude-ls": "^1.2.1" } }, "type-detect": { @@ -48247,9 +63648,19 @@ "mime-types": "~2.1.24" } }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typedarray": { - "version": "0.0.6", - "dev": true + "version": "0.0.6" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -48259,9 +63670,9 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "uglify-js": { @@ -48283,12 +63694,14 @@ } }, "unbox-primitive": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -48298,6 +63711,11 @@ "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", "dev": true }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "dev": true @@ -48473,6 +63891,16 @@ "version": "1.2.0", "dev": true }, + "update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + } + }, "update-notifier": { "version": "5.1.0", "dev": true, @@ -48496,476 +63924,46 @@ "ansi-styles": { "version": "4.3.0", "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "ci-info": { - "version": "2.0.0", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "import-lazy": { - "version": "2.1.0", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "upper-case": { - "version": "1.1.3", - "dev": true - }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "uri-js": { - "version": "4.4.1", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "dev": true - }, - "url": { - "version": "0.11.0", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "dev": true - } - } - }, - "url-loader": { - "version": "2.3.0", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - } - }, - "url-parse": { - "version": "1.5.10", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "dev": true - }, - "utf8-byte-length": { - "version": "1.0.4", - "dev": true - }, - "util": { - "version": "0.11.1", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2" - }, - "util.promisify": { - "version": "1.0.1", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "dev": true - }, - "uuid-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", - "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "dev": true - }, - "verror": { - "version": "1.10.0", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vfile": { - "version": "4.2.1", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "dev": true - } - } - }, - "vfile-message": { - "version": "2.0.4", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "dev": true - }, - "vue": { - "version": "3.2.31", - "requires": { - "@vue/compiler-dom": "3.2.31", - "@vue/compiler-sfc": "3.2.31", - "@vue/runtime-dom": "3.2.31", - "@vue/server-renderer": "3.2.31", - "@vue/shared": "3.2.31" - } - }, - "vue-class-component": { - "version": "8.0.0-rc.1", - "requires": {} - }, - "vue-cli-plugin-electron-builder": { - "version": "2.1.1", - "dev": true, - "requires": { - "@vue/cli-shared-utils": "^4.5.6", - "chokidar": "^3.0.2", - "electron-builder": "^22.2.0", - "execa": "^5.0.0", - "friendly-errors-webpack-plugin": "^1.7.0", - "fs-extra": "^9.0.1", - "lodash.merge": "^4.6.1", - "portfinder": "^1.0.16", - "pumpify": "^2.0.1", - "semver": "^7.3.2", - "shebang-loader": "^0.0.1", - "split2": "^3.0.0", - "terser-webpack-plugin": "^3.0.3", - "through2-filter": "^3.0.0", - "through2-map": "^3.0.0", - "unzip-crx": "^0.2.0", - "webpack": "^4.18.0", - "webpack-chain": "^6.0.0", - "webpack-merge": "^4.2.2", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cacache": { - "version": "15.2.0", - "dev": true, - "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "chownr": { - "version": "2.0.0", - "dev": true - }, - "cliui": { - "version": "6.0.0", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "duplexify": { - "version": "4.1.2", - "dev": true, - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "fs-extra": { - "version": "9.1.0", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "dev": true - }, - "jest-worker": { - "version": "26.6.2", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-map": { - "version": "4.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "pumpify": { - "version": "2.0.1", - "dev": true, - "requires": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" + "requires": { + "color-convert": "^2.0.1" } }, - "readable-stream": { - "version": "3.6.0", + "chalk": { + "version": "4.1.2", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "shebang-command": { + "ci-info": { "version": "2.0.0", + "dev": true + }, + "color-convert": { + "version": "2.0.1", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "color-name": "~1.1.4" } }, - "shebang-regex": { - "version": "3.0.0", + "color-name": { + "version": "1.1.4", "dev": true }, - "source-map": { - "version": "0.6.1", + "has-flag": { + "version": "4.0.0", "dev": true }, - "ssri": { - "version": "8.0.1", + "import-lazy": { + "version": "2.1.0", + "dev": true + }, + "is-ci": { + "version": "2.0.0", "dev": true, "requires": { - "minipass": "^3.1.1" + "ci-info": "^2.0.0" } }, "supports-color": { @@ -48974,911 +63972,637 @@ "requires": { "has-flag": "^4.0.0" } - }, - "terser-webpack-plugin": { - "version": "3.1.0", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.2.1", - "p-limit": "^3.0.2", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.8.0", - "webpack-sources": "^1.4.3" - } - }, - "which": { - "version": "2.0.2", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, - "vue-eslint-parser": { - "version": "7.6.0", - "dev": true, + "upper-case": { + "version": "1.1.3", + "dev": true + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.0.0", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.15" + "tslib": "^2.0.3" } }, - "vue-final-modal": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/vue-final-modal/-/vue-final-modal-3.4.4.tgz", - "integrity": "sha512-4nOLU+cMcUqAT0kg+64+Hi96kkQPOph2LOJa7Fl58BXlTyhfRxaMuz3M91wi2ooMIL4poWA8428P5GIAXSpuZg==" + "uri-js": { + "version": "4.4.1", + "requires": { + "punycode": "^2.1.0" + } }, - "vue-hot-reload-api": { - "version": "2.3.4", + "urix": { + "version": "0.1.0", "dev": true }, - "vue-loader": { - "version": "15.9.8", + "url": { + "version": "0.11.0", "dev": true, "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" + "punycode": "1.3.2", + "querystring": "0.2.0" }, "dependencies": { - "hash-sum": { - "version": "1.0.2", + "punycode": { + "version": "1.3.2", "dev": true } } }, - "vue-property-decorator": { - "version": "10.0.0-rc.3", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-10.0.0-rc.3.tgz", - "integrity": "sha512-EGqjf8Lq+kTausZzfLB1ynWOcyay8ZLAc5p2VlKGEX2q+BjYw84oZxr6IcdwuxGIdNmriZqPUX6AlAluBdnbEg==", + "url-loader": { + "version": "2.3.0", "dev": true, - "requires": {} - }, - "vue-router": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz", - "integrity": "sha512-XvK81bcYglKiayT7/vYAg/f36ExPC4t90R/HIpzrZ5x+17BOWptXLCrEPufGgZeuq68ww4ekSIMBZY1qdUdfjA==", "requires": { - "@vue/devtools-api": "^6.1.4" + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" } }, - "vue-style-loader": { - "version": "4.1.3", + "url-parse": { + "version": "1.5.10", "dev": true, "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "requires": { + "prepend-http": "^2.0.0" }, "dependencies": { - "hash-sum": { - "version": "1.0.2", - "dev": true + "prepend-http": { + "version": "2.0.0" } } }, - "vue-template-es2015-compiler": { - "version": "1.9.1", + "use": { + "version": "3.1.1", "dev": true }, - "vue3-click-away": { - "version": "1.2.4" + "utf8-byte-length": { + "version": "1.0.4", + "dev": true }, - "vue3-popper": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vue3-popper/-/vue3-popper-1.5.0.tgz", - "integrity": "sha512-xaEnx90YBnlSg5G2yWqm2DHWHg+DB99UVRp4VsyTF0QLXyHrqSuE1Xo5+sG0AQq/lBcrGMlk5NU5xE2MDLKViw==", + "util": { + "version": "0.11.1", + "dev": true, "requires": { - "@popperjs/core": "^2.9.2", - "debounce": "^1.2.1" + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "dev": true + } } }, - "watchpack": { - "version": "1.7.5", + "util-deprecate": { + "version": "1.0.2" + }, + "util.promisify": { + "version": "1.0.1", "dev": true, "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } }, - "watchpack-chokidar2": { - "version": "2.0.1", + "utila": { + "version": "0.4.0", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "dev": true + }, + "uuid-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", + "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", "dev": true, - "optional": true, "requires": { - "chokidar": "^2.1.8" + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" }, "dependencies": { - "anymatch": { - "version": "2.0.0", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "dev": true, - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "readdirp": { - "version": "2.2.1", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } + "source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true } } }, - "wbuf": { - "version": "1.7.3", + "validate-npm-package-license": { + "version": "3.0.4", "dev": true, "requires": { - "minimalistic-assert": "^1.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "wcwidth": { - "version": "1.0.1", + "varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "dev": true + }, + "verror": { + "version": "1.10.0", "dev": true, "requires": { - "defaults": "^1.0.3" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "webpack": { - "version": "4.46.0", + "vfile": { + "version": "4.2.1", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, "dependencies": { - "eslint-scope": { - "version": "4.0.3", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } + "is-buffer": { + "version": "2.0.5", + "dev": true } } }, - "webpack-bundle-analyzer": { - "version": "3.9.0", + "vfile-message": { + "version": "2.0.4", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.19", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "dev": true - } + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" } }, - "webpack-chain": { - "version": "6.5.1", + "vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "dev": true, "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "fsevents": "~2.3.3", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "dependencies": { - "deepmerge": { - "version": "1.5.2", + "fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "requires": {} + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true } } }, - "webpack-dev-middleware": { - "version": "3.7.3", - "dev": true, + "vm-browserify": { + "version": "1.1.2", + "dev": true + }, + "vue": { + "version": "3.2.31", "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "@vue/compiler-dom": "3.2.31", + "@vue/compiler-sfc": "3.2.31", + "@vue/runtime-dom": "3.2.31", + "@vue/server-renderer": "3.2.31", + "@vue/shared": "3.2.31" } }, - "webpack-dev-server": { - "version": "3.11.3", + "vue-class-component": { + "version": "8.0.0-rc.1", + "requires": {} + }, + "vue-cli-plugin-electron-builder": { + "version": "2.1.1", "dev": true, "requires": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" + "@vue/cli-shared-utils": "^4.5.6", + "chokidar": "^3.0.2", + "electron-builder": "^22.2.0", + "execa": "^5.0.0", + "friendly-errors-webpack-plugin": "^1.7.0", + "fs-extra": "^9.0.1", + "lodash.merge": "^4.6.1", + "portfinder": "^1.0.16", + "pumpify": "^2.0.1", + "semver": "^7.3.2", + "shebang-loader": "^0.0.1", + "split2": "^3.0.0", + "terser-webpack-plugin": "^3.0.3", + "through2-filter": "^3.0.0", + "through2-map": "^3.0.0", + "unzip-crx": "^0.2.0", + "webpack": "^4.18.0", + "webpack-chain": "^6.0.0", + "webpack-merge": "^4.2.2", + "yargs": "^15.3.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cacache": { + "version": "15.2.0", + "dev": true, + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "chownr": { + "version": "2.0.0", "dev": true }, - "anymatch": { - "version": "2.0.0", + "cliui": { + "version": "6.0.0", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "binary-extensions": { - "version": "1.13.1", + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", "dev": true }, - "chokidar": { - "version": "2.1.8", + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "duplexify": { + "version": "4.1.2", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", + "end-of-stream": "^1.4.1", "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" } }, - "glob-parent": { - "version": "3.1.0", + "execa": { + "version": "5.1.1", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, - "http-proxy-middleware": { - "version": "0.19.1", + "fs-extra": { + "version": "9.1.0", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "is-absolute-url": { - "version": "3.0.3", + "get-stream": { + "version": "6.0.1", "dev": true }, - "is-binary-path": { - "version": "1.0.1", + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" } }, - "readdirp": { - "version": "2.2.1", + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "path-key": "^3.0.0" } }, - "schema-utils": { - "version": "1.0.0", + "onetime": { + "version": "5.1.2", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "mimic-fn": "^2.1.0" } }, - "semver": { - "version": "6.3.0", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", + "p-limit": { + "version": "3.1.0", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "yocto-queue": "^0.1.0" } }, - "supports-color": { - "version": "6.1.0", + "p-map": { + "version": "4.0.0", "dev": true, "requires": { - "has-flag": "^3.0.0" + "aggregate-error": "^3.0.0" } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.2", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "1.4.3", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "dev": true - }, - "wide-align": { - "version": "1.1.5", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "widest-line": { - "version": "3.1.0", - "dev": true, - "requires": { - "string-width": "^4.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "worker-rpc": { - "version": "0.1.1", - "dev": true, - "requires": { - "microevent.ts": "~0.1.1" - } - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", + "path-key": { + "version": "3.1.1", "dev": true }, - "string-width": { - "version": "3.1.0", + "pumpify": { + "version": "2.0.1", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" } }, - "strip-ansi": { - "version": "5.2.0", + "readable-stream": { + "version": "3.6.0", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } - } - } - }, - "wrappy": { - "version": "1.0.2" - }, - "write": { - "version": "1.0.3", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "6.2.2", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "dev": true - }, - "yaku": { - "version": "0.16.7", - "dev": true - }, - "yallist": { - "version": "4.0.0" - }, - "yaml": { - "version": "1.10.2", - "dev": true - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - } - }, - "yargs": { - "version": "13.3.2", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "dev": true }, - "find-up": { - "version": "3.0.0", + "shebang-command": { + "version": "2.0.0", "dev": true, "requires": { - "locate-path": "^3.0.0" + "shebang-regex": "^3.0.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", + "shebang-regex": { + "version": "3.0.0", "dev": true }, - "locate-path": { - "version": "3.0.0", + "source-map": { + "version": "0.6.1", + "dev": true + }, + "ssri": { + "version": "8.0.1", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "minipass": "^3.1.1" } }, - "p-locate": { - "version": "3.0.0", + "supports-color": { + "version": "7.2.0", "dev": true, "requires": { - "p-limit": "^2.0.0" + "has-flag": "^4.0.0" } }, - "path-exists": { - "version": "3.0.0", - "dev": true + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } }, - "string-width": { + "terser-webpack-plugin": { "version": "3.1.0", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.2.1", + "p-limit": "^3.0.2", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.8.0", + "webpack-sources": "^1.4.3" } }, - "strip-ansi": { - "version": "5.2.0", + "which": { + "version": "2.0.2", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "isexe": "^2.0.0" } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "dev": true - } - } - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, - "yauzl": { - "version": "2.10.0", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yn": { - "version": "3.1.1", + "vue-component-type-helpers": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.2.12.tgz", + "integrity": "sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==", "dev": true }, - "yocto-queue": { - "version": "0.1.0", - "dev": true - }, - "yorkie": { - "version": "2.0.0", + "vue-eslint-parser": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz", + "integrity": "sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==", "dev": true, "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" + "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": { - "cross-spawn": { - "version": "5.1.0", + "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": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "execa": { - "version": "0.8.0", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "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 }, - "get-stream": { - "version": "3.0.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 }, - "lru-cache": { - "version": "4.1.5", + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "lru-cache": "^6.0.0" } - }, - "normalize-path": { - "version": "1.0.0", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "dev": true } } }, - "zwitch": { - "version": "1.0.5", + "vue-final-modal": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/vue-final-modal/-/vue-final-modal-3.4.4.tgz", + "integrity": "sha512-4nOLU+cMcUqAT0kg+64+Hi96kkQPOph2LOJa7Fl58BXlTyhfRxaMuz3M91wi2ooMIL4poWA8428P5GIAXSpuZg==" + }, + "vue-hot-reload-api": { + "version": "2.3.4", "dev": true - } - } -} + }, + "vue-jest": { + "version": "5.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-5.0.0-alpha.10.tgz", + "integrity": "sha512-iN62cTi4AL0UsgxEyVeJtHG6qXEv+8Ci2wX1vP3b/dAZvyBRmqy5aJHQrP6VCEuio+HgHQ1LAZ+ccM2pouBmlg==", + \ No newline at end of file diff --git a/package.json b/package.json index 4fe45bca..52ffa3c0 100644 --- a/package.json +++ b/package.json @@ -1,62 +1,81 @@ { "name": "wildlander-launcher", "version": "2.19.0", - "description": "A launcher for the Wabbajack modpacks", + "description": "A launcher for the Wildlander Wabbajack modpack", "author": "Wildlander", "scripts": { "clean": "lb-clean dist", "precompile": "npm run clean", - "compile": "lb-tsc", - "postcompile": "tsc-alias", - "prestart": "npm run compile", - "start": "vue-cli-service electron:serve", - "start:dev": "nodemon", + "compile": "tsc -b tsconfig.json", + "postcompile": "npm run alias-paths", + "alias-paths": "tsc-alias -p tsconfig.main.json && tsc-alias -p tsconfig.renderer.json", + "dev": "electron-vite dev", + "prestart:old": "npm run compile", + "start:old": "VUECLI=true vue-cli-service electron:serve", + "start:dev:old": "nodemon", + "start:renderer:old": "vue-cli-service serve src/renderer/src/index.ts", + "start:main:old": "electron dist/main.js", "prebuild": "npm run compile", "build": "vue-cli-service electron:build", - "lint": "npm run lint:typescript && npm run lint:eslint && npm run lint:styles", - "lint:fix": "npm run lint:eslint:fix", - "electron:debug:main": "electron --remote-debugging-port=9223 ./dist_electron", + "lint": "npm run lint:typescript && npm run lint:eslint && npm run lint:styles && npm run lint:prettier", + "lint:fix": "npm run lint:typescript && npm run lint:eslint:fix && npm run lint:prettier:fix", + "electron:debug:main": "electron --remote-debugging-port=9223 ./dist", "electron:debug:renderer": "npm run start -- --debug", "lint:eslint": "vue-cli-service lint", "lint:eslint:fix": "vue-cli-service lint --fix", "lint:styles": "stylelint **/*.scss", - "lint:typescript": "tsc --noEmit", + "lint:typescript": "tsc -b ./tsconfig.json", + "lint:prettier": "prettier -l 'src/**/*.{ts,tsx,js,jsx,vue,json,scss,css}'", + "lint:prettier:fix": "npm run lint:prettier -- --write", "postinstall": "electron-builder install-app-deps", "postuninstall": "electron-builder install-app-deps", - "pretest": "npm run compile", - "test": "npm run test:unit", - "test:coverage": "lb-nyc npm run test", - "test:unit": "lb-mocha \"dist/__tests__/unit\"" + "test": "npm run test:unit && npm run test:e2e", + "test:unit": "npm run test:unit:main && npm run test:unit:renderer", + "test:unit:main": "lb-nyc cross-env TS_NODE_PROJECT=./tsconfig.renderer.json lb-mocha", + "test:unit:renderer": "jest", + "pretest:e2e": "npm run compile --ignore-scripts && npm run postcompile", + "test:e2e": "playwright test --grep-invert @screenshot", + "test:e2e:screenshot": "docker compose run --rm --build e2e-tests", + "test:e2e:screenshot:update": "docker compose run --rm --build e2e-tests-update-screenshots", + "test:e2e:screenshot:ci": "docker compose run --build e2e-tests-ci", + "test:e2e:show-report": "npx playwright show-report .playwright/report", + "test:e2e:merge-reports": "playwright merge-reports", + "generate:modpack-files": "ts-node src/__tests__/e2e/util/generate-modpack-files.ts" }, "nodemonConfig": { "watch": [ "src/**" ], "ignore": [ - "src/renderer/**" + "src/renderer/**", + "**/*.test.ts", + "**/*.e2e.ts", + "src/__tests__/**" ], "exec": "npm run start", "ext": "*" }, - "main": "background.js", + "main": "./out/main/index.js", "dependencies": { - "@loopback/boot": "^5.0.2", - "@loopback/context": "^5.0.1", - "@loopback/core": "^4.0.2", + "@electron-toolkit/preload": "^3.0.2", + "@electron-toolkit/utils": "^4.0.0", + "@loopback/boot": "^5.0.10", + "@loopback/context": "^5.0.10", + "@loopback/core": "^4.0.10", "@vueform/toggle": "^2.1.1", "electron-context-menu": "^3.4.0", - "electron-log": "^4.4.8", + "electron-log": "^5.4.2", "electron-shutdown-command": "^2.0.1", "electron-store": "^8.1.0", "electron-updater": "^4.6.5", "fetch-installed-software": "^0.0.7", - "fs-extra": "^10.1.0", - "js-ini": "^1.5.1", + "fs-extra": "^11.1.1", + "js-ini": "^1.6.0", "junk": "^3.1.0", "mitt": "^3.0.0", "node-fetch": "^2.6.7", "ps-list": "^7.2.0", - "tslib": "^2.5.0", + "tslib": "^2.0.0", "vue": "^3.2.31", "vue-class-component": "^8.0.0-0", "vue-final-modal": "^3.4.4", @@ -68,55 +87,84 @@ "@babel/plugin-proposal-class-properties": "^7.16.7", "@babel/preset-typescript": "^7.16.5", "@commitlint/config-conventional": "^15.0.0", - "@loopback/build": "^9.0.2", - "@loopback/testlab": "^5.0.2", + "@istanbuljs/nyc-config-typescript": "^1.0.2", + "@loopback/build": "^9.0.10", + "@loopback/eslint-config": "^14.0.2", + "@loopback/testlab": "^5.0.10", + "@playwright/test": "^1.52.0", + "@swc/core": "^1.13.3", + "@tsconfig/node16-strictest": "^1.0.4", + "@tsconfig/strictest": "^2.0.1", "@types/electron-devtools-installer": "^2.2.0", "@types/fs-extra": "^9.0.13", "@types/ini": "^1.3.31", - "@types/mocha": "^9.1.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-lib-report": "^3.0.3", + "@types/istanbul-reports": "^3.0.4", + "@types/mocha": "^10.0.1", "@types/mock-fs": "^4.13.1", "@types/mock-require": "^2.0.1", "@types/ncp": "^2.0.5", + "@types/node": "^18.19.111", "@types/node-fetch": "^2.6.1", - "@typescript-eslint/eslint-plugin": "^2.33.0", - "@typescript-eslint/parser": "^2.33.0", + "@typescript-eslint/eslint-plugin": "^5.59.8", + "@typescript-eslint/parser": "^5.59.9", + "@vitejs/plugin-vue": "^5.2.4", "@vue/cli-plugin-babel": "~4.5.15", - "@vue/cli-plugin-eslint": "^4.5.15", + "@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-router": "~4.5.15", "@vue/cli-plugin-typescript": "^4.5.15", "@vue/cli-service": "~4.5.15", "@vue/compiler-sfc": "^3.2.26", - "@vue/eslint-config-prettier": "^6.0.0", - "@vue/eslint-config-standard": "^5.1.2", - "@vue/eslint-config-typescript": "^5.0.2", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-standard": "^8.0.1", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/test-utils": "^2.4.6", + "@vue/tsconfig": "^0.4.0", "babel-eslint": "^10.1.0", + "babel-plugin-istanbul": "^5.2.0", "commitlint": "^15.0.0", + "cross-env": "^7.0.3", "electron": "^16.0.5", "electron-devtools-installer": "^3.1.0", - "eslint": "^6.7.2", + "electron-vite": "^3.1.0", + "eslint": "^8.42.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.4.1", "eslint-plugin-promise": "^6.0.0", "eslint-plugin-standard": "^4.0.0", - "eslint-plugin-vue": "^8.2.0", + "eslint-plugin-vue": "^9.14.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.7", + "jest": "^26.6.3", "lint-staged": "^12.1.3", - "mocha": "^10.0.0", - "mock-fs": "^5.1.3", + "mocha": "^10.2.0", + "mock-fs": "^5.5.0", "mock-require": "^3.0.3", + "nock": "^13.5.4", "node-sass": "^6.0.1", "nodemon": "^2.0.15", - "prettier": "^2.5.1", + "nyc": "^15.1.0", + "playwright": "^1.52.0", + "prettier": "^2.8.7", "reflect-metadata": "^0.1.13", + "sass-embedded": "^1.90.0", "sass-loader": "^10.2.0", "stylelint": "^13.12.0", "stylelint-config-recommended-scss": "^4.3.0", "stylelint-scss": "^3.21.0", + "ts-jest": "^26.5.6", + "ts-node": "^10.9.1", "tsc-alias": "^1.6.4", "tsconfig-paths": "^4.0.0", - "typescript": "^4.5.4", + "typescript": "~4.9.5", + "vite": "^6.3.5", "vue-cli-plugin-electron-builder": "~2.1.1", - "vue-property-decorator": "^10.0.0-rc.3" + "vue-jest": "^5.0.0-alpha.10", + "vue-property-decorator": "^10.0.0-rc.3", + "xvfb-maybe": "^0.2.1" }, "commitlint": { "extends": [ diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 00000000..c8a2d6ef --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,77 @@ +import { defineConfig } from "@playwright/test"; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: "./src/__tests__/e2e", + testMatch: /.*\.e2e\..*/, + + globalSetup: "./src/__tests__/e2e/util/global-setup.ts", + + globalTeardown: "./src/__tests__/e2e/util/global-teardown.ts", + + /* Run tests in a single file in parallel, */ + fullyParallel: true, + + workers: process.env["WORKERS"] + ? parseInt(process.env["WORKERS"]) + : process.env["CI"] + ? 1 + : 3, + + /* Enable automatic project-based sharding */ + shard: process.env.SHARD ? JSON.parse(process.env.SHARD) : undefined, + + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env["CI"], + /* Retry on CI only */ + retries: 0, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: [ + [ + "html", + { + outputFolder: ".playwright/report", + open: "never", + }, + ], + ...(process.env["CI"] + ? [["github"], ["blob", { outputDir: ".playwright/blob-report" }]] + : []), + ], + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "retain-on-failure", + + screenshot: "only-on-failure", + }, + + outputDir: ".playwright/test-results", + + expect: { + toHaveScreenshot: { + // Remove the platform from screenshots so that it works across platforms + pathTemplate: "{snapshotDir}/{testFileName}-snapshots/{arg}{ext}", + }, + }, + + /* Run your local dev server before starting the tests */ + webServer: { + command: "npm run start:renderer:old", + url: "http://127.0.0.1:8080/health", + reuseExistingServer: !process.env["CI"], + stdout: "ignore", + stderr: "ignore", + }, +}); diff --git a/src/assets/tools/QRes.exe b/resources/tools/QRes.exe similarity index 100% rename from src/assets/tools/QRes.exe rename to resources/tools/QRes.exe diff --git a/src/__tests__/.eslintrc.js b/src/__tests__/.eslintrc.js new file mode 100644 index 00000000..b59b70ae --- /dev/null +++ b/src/__tests__/.eslintrc.js @@ -0,0 +1,11 @@ +module.exports = { + extends: "@loopback/eslint-config", + env: { + node: true, + mocha: true, + }, + parserOptions: { + project: "../../tsconfig.renderer.json", + tsconfigRootDir: __dirname, + }, +}; diff --git a/src/__tests__/e2e/.eslintrc.js b/src/__tests__/e2e/.eslintrc.js new file mode 100644 index 00000000..b431f23b --- /dev/null +++ b/src/__tests__/e2e/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + rules: { + "no-empty-pattern": "off", + }, +}; diff --git a/src/__tests__/e2e/.nycrc b/src/__tests__/e2e/.nycrc new file mode 100644 index 00000000..81d22685 --- /dev/null +++ b/src/__tests__/e2e/.nycrc @@ -0,0 +1,4 @@ +{ + "extends": "@istanbuljs/nyc-config-typescript", + "extension": [".js", ".ts"] +} \ No newline at end of file diff --git a/src/__tests__/e2e/community.e2e.ts b/src/__tests__/e2e/community.e2e.ts new file mode 100644 index 00000000..b728cd25 --- /dev/null +++ b/src/__tests__/e2e/community.e2e.ts @@ -0,0 +1,51 @@ +import { Page, test, expect } from "@playwright/test"; +import { + startTestApp, + setModpackAndWaitForAppLoaded, + CloseTestApp, +} from "./util/setup"; +import { PAGES, navigateAndWait } from "./util/navigation"; + +test.describe("Community", () => { + let window: Page; + let closeTestApp: CloseTestApp; + + // Define test data for better organization and maintainability + const links = [ + { + name: "YouTube", + url: "https://www.youtube.com/channel/UC-Bq60LjSeYd-_uEBzae5ww", + }, + { name: "Twitch", url: "https://www.twitch.tv/dylanbperry" }, + { name: "Discord", url: "https://discord.gg/8VkDrfq" }, + { name: "Reddit", url: "https://reddit.com/r/wildlander" }, + ]; + + test.beforeEach(async () => { + ({ window, closeTestApp } = await startTestApp(test)); + await setModpackAndWaitForAppLoaded(window); + + // Navigate to the Community page + await navigateAndWait(window, PAGES.COMMUNITY); + }); + test.afterEach(async () => { + await closeTestApp(); + }); + + // Test each link to ensure it has the correct URL + for (const { name, url } of links) { + test(`${name} link should have the correct URL`, async () => { + // Find the link by its text content + const link = window.locator(`text=${name}`).first(); + + // Wait for the link to be visible + await link.waitFor({ state: "visible" }); + + // Get the parent BaseLink element which has the href attribute + const baseLink = link.locator("xpath=ancestor::a"); + + // Verify the href attribute + await expect(baseLink).toHaveAttribute("href", url); + }); + } +}); diff --git a/src/__tests__/e2e/graphics-options.e2e.ts b/src/__tests__/e2e/graphics-options.e2e.ts new file mode 100644 index 00000000..bf47cf59 --- /dev/null +++ b/src/__tests__/e2e/graphics-options.e2e.ts @@ -0,0 +1,150 @@ +import { expect, Page, test } from "@playwright/test"; +import { + CloseTestApp, + MockFilesPaths, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import { getUserPreferences } from "./util/user-preferences"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import fs from "fs/promises"; +import { + waitForClickEventsEnabled, + waitForMessageBoxShown, +} from "./util/app-state"; +import { mockMessageBox } from "./util/mocks"; +import type { ElectronApplication } from "playwright"; +import path from "path"; +import { PAGES, navigateAndWait } from "./util/navigation"; +import { GRAPHICS_PRESETS, selectGraphics } from "./util/graphics"; + +test.describe("Graphics Options", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + + test.beforeEach(async () => { + ({ window, closeTestApp, mockFiles, electronApp } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should display the graphics dropdown", async () => { + // Verify the graphics dropdown is visible + const graphicsDropdown = window.getByTestId("graphics-dropdown"); + await expect(graphicsDropdown).toBeVisible(); + }); + + test("should update user preferences when changing graphics preset", async () => { + // Get the initial graphics preference + await getUserPreferences(mockFiles.mockFilesPath); + + await selectGraphics(window, GRAPHICS_PRESETS.MEDIUM); + + // Verify the graphics preference is updated in user preferences + const updatedPreferences = await getUserPreferences( + mockFiles.mockFilesPath + ); + const updatedGraphicsPreference = + updatedPreferences[USER_PREFERENCE_KEYS.GRAPHICS]; + + expect(updatedGraphicsPreference).toBe(GRAPHICS_PRESETS.MEDIUM.value); + }); + + test("should copy graphics files to profiles when changing graphics preset", async () => { + // Get the current profile from user preferences + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + const currentProfile = userPreferences[ + USER_PREFERENCE_KEYS.PRESET + ] as string; + + await selectGraphics(window, GRAPHICS_PRESETS.HIGH); + + // Verify the graphics files were copied to the profile directory + const graphicsDir = `${mockFiles.mockModpackPath}/launcher/Graphics Presets/${GRAPHICS_PRESETS.HIGH.value}`; + const profileDir = `${mockFiles.mockModpackPath}/profiles/${currentProfile}`; + + // Get a list of graphics files + const graphicsFiles = await fs.readdir(graphicsDir); + expect(graphicsFiles.length).toBeGreaterThan(0); + + // Verify each file was copied + for (const file of graphicsFiles) { + const sourcePath = `${graphicsDir}/${file}`; + const destPath = `${profileDir}/${file}`; + + // Verify source file exists and is readable + expect(async () => { + await fs.access(sourcePath); + }).not.toThrowError(); + + // Verify destination file exists and is readable + expect(async () => { + await fs.access(destPath); + }).not.toThrowError(); + + // Compare file contents to ensure proper copy + const sourceContent = await fs.readFile(sourcePath); + const destContent = await fs.readFile(destPath); + expect(sourceContent).toEqual(destContent); + } + }); + + test("should disable the Launch Game button during graphics changes", async () => { + const launchButton = window.getByTestId("launch-game"); + + // Verify the button is initially enabled + await expect(launchButton).not.toHaveClass(/c-button--disabled/); + + // Use the LOW graphics preset + // This will trigger the graphics change and wait for it to complete + await selectGraphics(window, GRAPHICS_PRESETS.LOW); + + // Verify the button is re-enabled after the graphics change is complete + await expect(launchButton).not.toHaveClass(/c-button--disabled/); + }); + + test("should restore graphics presets when clicking the Restore Graphics Presets button", async () => { + // Select the High Graphics preset to ensure we're starting from a known state + await selectGraphics(window, GRAPHICS_PRESETS.HIGH); + + const fileToModify = "SkyrimPrefs.ini"; + const originalFilePath = path.join( + `${mockFiles.mockModpackPath}/launcher/Graphics Presets/${GRAPHICS_PRESETS.HIGH.value}/${fileToModify}` + ); + const backupFilePath = path.join( + `${mockFiles.mockModpackPath}/launcher/_backups/graphics/${GRAPHICS_PRESETS.HIGH.value}/${fileToModify}` + ); + const originalContent = await fs.readFile(originalFilePath, "utf-8"); + const backupContent = await fs.readFile(backupFilePath, "utf-8"); + + await fs.writeFile( + originalFilePath, + originalContent + + "\n#This is a test modification for graphics restore test" + ); + + await navigateAndWait(window, PAGES.ADVANCED); + + const messageBoxHandle = await mockMessageBox(electronApp, 1); + + await window.getByTestId("restore-graphics-presets").click(); + + await waitForMessageBoxShown(messageBoxHandle); + await waitForClickEventsEnabled(window); + + const restoredContent = await fs.readFile(originalFilePath, "utf-8"); + const currentBackupContent = await fs.readFile(backupFilePath, "utf-8"); + + // Verify the content of the restored file matches the backup file + expect(restoredContent).toBe(currentBackupContent); + // Verify the backup file was not modified during the restore process + expect(currentBackupContent).toBe(backupContent); + }); +}); diff --git a/src/__tests__/e2e/header.e2e.ts b/src/__tests__/e2e/header.e2e.ts new file mode 100644 index 00000000..747a50d9 --- /dev/null +++ b/src/__tests__/e2e/header.e2e.ts @@ -0,0 +1,39 @@ +import { expect, Page, test } from "@playwright/test"; +import { + startTestApp, + setModpackAndWaitForAppLoaded, + CloseTestApp, +} from "./util/setup"; + +test.describe("Header", () => { + let window: Page; + let closeTestApp: CloseTestApp; + + // Define test data for better organization and maintainability + const links = [ + { name: "website", url: "https://www.wildlandermod.com" }, + { name: "wiki", url: "https://wiki.wildlandermod.com/" }, + { name: "roadmap", url: "https://airtable.com/shrvAxHcCeCqKfnGe" }, + { name: "patreon", url: "https://www.patreon.com/dylanbperry" }, + ]; + + test.beforeEach(async () => { + ({ window, closeTestApp } = await startTestApp(test)); + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + // Use test.each to reduce repetition + for (const { name, url } of links) { + test(`Set the correct ${name} URL`, async () => { + await window.getByTestId(`${name}-link`).waitFor({ state: "visible" }); + await expect(window.getByTestId(`${name}-link`)).toHaveAttribute( + "href", + url + ); + }); + } +}); diff --git a/src/__tests__/e2e/launch-game.e2e.ts b/src/__tests__/e2e/launch-game.e2e.ts new file mode 100644 index 00000000..78f3243f --- /dev/null +++ b/src/__tests__/e2e/launch-game.e2e.ts @@ -0,0 +1,253 @@ +import { expect, Locator, Page, test } from "@playwright/test"; +import { + CloseTestApp, + MockFilesPaths, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import type { ElectronApplication } from "playwright"; +import { waitForClickEventsEnabled } from "./util/app-state"; +import { replaceChildProcessExecWithMock } from "./util/mocks"; +import { MO2_NAMES } from "@/shared/enums/mo2"; +import { PROFILES, selectProfile } from "./util/profile"; +import { + IIniObject, + IIniObjectSection, + IniValue, + parse, + stringify, +} from "js-ini"; +import path from "path"; +import fsPromises from "fs/promises"; +import { ENB_PRESETS, selectEnb } from "./util/enb"; +import { GRAPHICS_PRESETS, selectGraphics } from "./util/graphics"; + +/** + * Gets the MO2 settings path and settings object + */ +const getMO2Settings = async ( + mockFiles: MockFilesPaths +): Promise<{ mo2SettingsPath: string; settings: IIniObject }> => { + const mo2SettingsPath = path.join( + mockFiles.mockModpackPath, + MO2_NAMES.MO2Settings + ); + const mo2SettingsContent = await fsPromises.readFile( + mo2SettingsPath, + "utf-8" + ); + const settings = parse(mo2SettingsContent); + return { mo2SettingsPath, settings }; +}; + +/** + * Reads the MO2 settings file and returns the lock_gui setting + * @param mockFiles The path to the mock files directory + * @returns The lock_gui setting from the MO2 settings file + */ +const getMO2LockGuiSetting = async ( + mockFiles: MockFilesPaths +): Promise => { + const { settings } = await getMO2Settings(mockFiles); + return (settings.Settings as IIniObjectSection)?.lock_gui as IniValue; +}; + +/** + * Sets the lock_gui setting in the MO2 settings file + * @param mockFiles The path to the mock files directory + * @param value The value to set lock_gui to + */ +const setMO2LockGuiSetting = async ( + mockFiles: MockFilesPaths, + value: boolean +): Promise => { + const { mo2SettingsPath, settings } = await getMO2Settings(mockFiles); + if (!settings.Settings) { + settings.Settings = {}; + } + (settings.Settings as IIniObjectSection).lock_gui = value.toString(); + await fsPromises.writeFile(mo2SettingsPath, stringify(settings)); +}; + +test.describe("Launch Game", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + let launchGameButton: Locator; + let execHandle: Awaited>; + + test.beforeEach(async () => { + ({ window, closeTestApp, electronApp, mockFiles } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + launchGameButton = window.getByTestId("launch-game"); + execHandle = await replaceChildProcessExecWithMock(electronApp); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should launch game with correct command when clicking the launch game button", async () => { + // Select the Performance profile so a known profile is used + const selectedProfile = await selectProfile(window, PROFILES.PERFORMANCE); + + await launchGameButton.click(); + + await execHandle.evaluate((handle) => handle.resolveExec()); + await waitForClickEventsEnabled(window); + + const command = await execHandle.evaluate((handle) => handle.getCommand()); + + // Assert that the command is correct + expect(command).toBe( + `"${path.join( + mockFiles.mockModpackPath, + "ModOrganizer.exe" + )}" -p "${selectedProfile}" "moshortcut://:SKSE"` + ); + }); + + test("should disable locking the gui when the game is running", async () => { + await setMO2LockGuiSetting(mockFiles, true); + + await launchGameButton.click(); + await execHandle.evaluate((handle) => handle.waitForExec()); + + const lockGuiAfterLaunch = await getMO2LockGuiSetting(mockFiles); + expect( + lockGuiAfterLaunch, + "MO2 lock_gui setting should be disabled when game is launched" + ).toBe(false); + + await execHandle.evaluate((handle) => handle.resolveExec()); + await waitForClickEventsEnabled(window); + + const lockGuiAfterPostLaunch = await getMO2LockGuiSetting(mockFiles); + expect( + lockGuiAfterPostLaunch, + "MO2 lock_gui setting should be restored to enabled after game exit" + ).toBe(true); + }); + + test("should copy Skyrim launch logs after game completion", async () => { + const skyrimDirectory = path.join(mockFiles.mockModpackPath, "Stock Game"); + const launchLogPath = path.join(skyrimDirectory, "d3dx9_42.log"); + + await launchGameButton.click(); + + await execHandle.evaluate((handle) => handle.waitForExec()); + + // Create a unique content for the log file + const uniqueContent = `Test log content ${Date.now()}`; + + // Ensure the directory exists + await fsPromises.mkdir(skyrimDirectory, { recursive: true }); + // Write unique content to the log file + await fsPromises.writeFile(launchLogPath, uniqueContent); + + // Resolve the exec call to simulate game exiting + await execHandle.evaluate((handle) => handle.resolveExec()); + + // Wait for click events to be enabled (indicating the process has completed) + await waitForClickEventsEnabled(window); + + // Verify the log file was copied correctly + const logDirectory = path.join(mockFiles.mockFilesPath, "logs"); + const copiedLogPath = path.join(logDirectory, "skyrim-launch-logs.log"); + + // Read the content of the copied log file + const copiedContent = await fsPromises.readFile(copiedLogPath, "utf-8"); + + // Assert that the content matches + expect( + copiedContent, + "Graphics files should be correctly synced back to preset directory after game completion" + ).toBe(uniqueContent); + }); + + test("should sync ENB files from game to presets after game completion", async () => { + const skyrimDirectory = path.join(mockFiles.mockModpackPath, "Stock Game"); + const enbFilePath = path.join(skyrimDirectory, "enblocal.ini"); + + await selectEnb(window, ENB_PRESETS.HIGH); + + await launchGameButton.click(); + + await execHandle.evaluate((handle) => handle.waitForExec()); + + // Create a unique content for the ENB file + const uniqueContent = `; Test ENB content ${Date.now()}`; + + // Ensure the directory exists + await fsPromises.mkdir(skyrimDirectory, { recursive: true }); + // Write unique content to the ENB file + await fsPromises.writeFile(enbFilePath, uniqueContent); + + // Resolve the exec call to simulate game exiting + await execHandle.evaluate((handle) => handle.resolveExec()); + + // Wait for click events to be enabled (indicating the process has completed) + await waitForClickEventsEnabled(window); + + // Verify the ENB file was copied back to the preset directory + const enbPresetDirectory = path.join( + mockFiles.mockModpackPath, + "launcher", + "ENB Presets", + ENB_PRESETS.HIGH.value + ); + const copiedEnbFilePath = path.join(enbPresetDirectory, "enblocal.ini"); + + // Read the content of the copied ENB file + const copiedContent = await fsPromises.readFile(copiedEnbFilePath, "utf-8"); + + // Assert that the content matches + expect( + copiedContent, + "Skyrim launch logs should be correctly copied after game completion" + ).toBe(uniqueContent); + }); + + test("should sync graphics files from game to profile after game completion", async () => { + const fileToEdit = "Skyrim.ini"; + const profileDir = path.normalize( + `${mockFiles.mockModpackPath}/profiles/${PROFILES.STANDARD.value}` + ); + const profileFilePath = path.normalize(`${profileDir}/${fileToEdit}`); + const graphicsPresetsDir = path.normalize( + `${mockFiles.mockModpackPath}/launcher/Graphics Presets/${GRAPHICS_PRESETS.HIGH.value}` + ); + const presetFilePath = path.normalize( + `${graphicsPresetsDir}/${fileToEdit}` + ); + + await selectProfile(window, PROFILES.STANDARD); + await selectGraphics(window, GRAPHICS_PRESETS.HIGH); + + await launchGameButton.click(); + + await execHandle.evaluate((handle) => handle.waitForExec()); + + const uniqueContent = `; Test graphics content ${Date.now()}\n[Display]\nsInterfaceMode=1\n`; + + await fsPromises.writeFile(profileFilePath, uniqueContent); + + // Resolve the exec call to simulate game exiting + await execHandle.evaluate((handle) => handle.resolveExec()); + + // Wait for click events to be enabled (indicating the process has completed) + await waitForClickEventsEnabled(window); + + // Read the content of the copied graphics file + const copiedContent = await fsPromises.readFile(presetFilePath, "utf-8"); + + // Assert that the content matches + expect( + copiedContent, + "ENB files should be correctly synced back to preset directory after game completion" + ).toBe(uniqueContent); + }); +}); diff --git a/src/__tests__/e2e/launcher-actions.e2e.ts b/src/__tests__/e2e/launcher-actions.e2e.ts new file mode 100644 index 00000000..decbfa00 --- /dev/null +++ b/src/__tests__/e2e/launcher-actions.e2e.ts @@ -0,0 +1,201 @@ +import { expect, test, Page } from "@playwright/test"; +import { + startTestApp, + setModpackAndWaitForAppLoaded, + MockFilesPaths, + CloseTestApp, +} from "./util/setup"; +import type { ElectronApplication } from "playwright"; +import { PAGES, navigateAndWait } from "./util/navigation"; +import { mockElectronShell, mockUserPreferencesStore } from "./util/mocks"; +import fs from "fs/promises"; +import path from "path"; +import { getUserPreferences, setUserPreference } from "./util/user-preferences"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; + +test.describe("Launcher actions", () => { + let electronApp: ElectronApplication; + let closeTestApp: CloseTestApp; + let window: Page; + let mockFiles: MockFilesPaths; + + test.beforeEach(async () => { + ({ electronApp, closeTestApp, window, mockFiles } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + }); + + test.describe("Advanced", () => { + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should open application logs when clicking the open button", async () => { + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + + const shellHandle = await mockElectronShell(electronApp); + + // Click the open logs button + await advancedPage + .getByText("Application logs") + // Get the container of the open button + .locator("..") + .getByText("Open") + .click(); + + const shellDetails = await shellHandle.evaluate((h) => h()); + + // Verify shell.openPath was called with the correct path + expect(path.normalize(shellDetails.pathArgument)).toEqual( + path.normalize(`${mockFiles.mockFilesPath}/logs`) + ); + }); + + test("should clear application logs when clicking the clear button", async () => { + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + const logsPath = `${mockFiles.mockFilesPath}/logs`; + + const mainLogPath = `${logsPath}/main.log`; + const rendererLogPath = `${logsPath}/renderer.log`; + + const mainContentBefore = await fs.readFile(mainLogPath, "utf8"); + const rendererContentBefore = await fs.readFile(rendererLogPath, "utf8"); + // Verify files have content + expect(mainContentBefore.trim().length).toBeGreaterThan(0); + expect(rendererContentBefore.trim().length).toBeGreaterThan(0); + + await advancedPage + .getByText("Application logs") + .locator("..") + .getByText("Clear") + .click(); + + const mainContentAfter = await fs.readFile(mainLogPath, "utf8"); + const rendererContentAfter = await fs.readFile(rendererLogPath, "utf8"); + + // Verify files are now empty + expect(mainContentAfter.trim().length).toBe(0); + expect(rendererContentAfter.trim().length).toBe(0); + if ( + mainContentAfter.trim().length > 0 || + rendererContentAfter.trim().length > 0 + ) { + console.log( + `mainContentAfter: ${mainContentAfter}\nrendererContentAfter: ${rendererContentAfter}` + ); + } + }); + + test("should open crash logs when clicking the open button", async () => { + // Create the crash logs directory so the application does not error + const crashLogsPath = path.join( + mockFiles.mockModpackPath, + "overwrite/NetScriptFramework/Crash" + ); + await fs.mkdir(crashLogsPath, { recursive: true }); + + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + + const shellHandle = await mockElectronShell(electronApp); + + await advancedPage + .getByText("Skyrim crash logs") + .locator("..") + .getByText("Open") + .click(); + + const shellDetails = await shellHandle.evaluate((p) => p()); + + // Verify shell.openPath was called with the correct path + expect(path.normalize(shellDetails.pathArgument)).toEqual( + path.normalize(crashLogsPath) + ); + }); + + test("should call openInEditor when clicking the edit config button", async () => { + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + + // Create a mock for the Store object and bind it to ConfigBinding + const storeHandle = await mockUserPreferencesStore(electronApp); + + await advancedPage + .getByText("Edit launcher config") + .locator("..") + .getByTestId("edit-config-button") + .click(); + + // Verify openInEditor was called + const storeDetails = await storeHandle.evaluate((h) => h()); + expect(storeDetails.openInEditorCalled).toBe(true); + }); + + test("should update check prerequisites preference when toggle is changed", async () => { + await setUserPreference( + mockFiles.mockFilesPath, + USER_PREFERENCE_KEYS.CHECK_PREREQUISITES, + true + ); + + const initialPreferences = await getUserPreferences( + mockFiles.mockFilesPath + ); + expect(initialPreferences[USER_PREFERENCE_KEYS.CHECK_PREREQUISITES]).toBe( + true + ); + + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + + await advancedPage.getByTestId("check-prerequisites-toggle").click(); + + // Get updated user preferences and verify CHECK_PREREQUISITES is now false + const updatedPreferences = await getUserPreferences( + mockFiles.mockFilesPath + ); + expect(updatedPreferences[USER_PREFERENCE_KEYS.CHECK_PREREQUISITES]).toBe( + false + ); + }); + }); + + test.describe("Application actions", () => { + test("Minimize the app", async () => { + const minimizeButton = window.getByTestId("minimize-button"); + await minimizeButton.waitFor({ state: "visible" }); + + // Click the minimize button + await minimizeButton.click(); + + // Verify the window is minimized using Electron API + await new Promise((resolve) => setTimeout(resolve, 500)); // Add a small delay + // eslint-disable-next-line @typescript-eslint/naming-convention + const isMinimized = await electronApp.evaluate(({ BrowserWindow }) => { + const browserWindow = BrowserWindow.getAllWindows()[0]; + if (!browserWindow) { + throw new Error("No window found"); + } + return browserWindow.isMinimized(); + }); + + expect(isMinimized).toBe(true); + + await closeTestApp(); + }); + + test("Close the app", async () => { + const closeButton = window.getByTestId("close-button"); + await closeButton.waitFor({ state: "visible" }); + + // Wait for the "close" event before clicking the close button + const closeEventPromise = electronApp.waitForEvent("close", { + timeout: 5000, + }); + + // Click the close button + await closeButton.click(); + + // Wait for the app process to emit the "close" event + await expect(closeEventPromise).resolves.not.toThrow(); // Verify the app closed successfully + }); + }); +}); diff --git a/src/__tests__/e2e/mo2-launch.e2e.ts b/src/__tests__/e2e/mo2-launch.e2e.ts new file mode 100644 index 00000000..94f98df8 --- /dev/null +++ b/src/__tests__/e2e/mo2-launch.e2e.ts @@ -0,0 +1,289 @@ +import { expect, Locator, Page, test } from "@playwright/test"; +import { + CloseTestApp, + MockFilesPaths, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import type { ElectronApplication } from "playwright"; +import { + waitForClickEventsDisabled, + waitForClickEventsEnabled, + waitForMessageBoxShown, +} from "./util/app-state"; +import { + mockMessageBox, + mockProcessKill, + replaceChildProcessExecWithMock, + replacePsListWithMock, +} from "./util/mocks"; +import { MO2_NAMES } from "@/shared/enums/mo2"; +import { PROFILES, selectProfile } from "./util/profile"; +import fsPromises from "fs/promises"; +import { IIniObjectSection, parse } from "js-ini"; +import { getDisplayTweaksIni } from "./util/modlist"; +import { selectResolution } from "./util/resolution"; +import path from "path"; +import { navigateAndWait, PAGES } from "./util/navigation"; + +/** + * Reads the MO2 settings file and returns the selected profile + * @param mockFiles The path to the mock files directory + * @returns The selected profile from the MO2 settings file + */ +const getMO2SelectedProfile = async ( + mockFiles: MockFilesPaths +): Promise => { + const mo2SettingsPath = path.join( + mockFiles.mockModpackPath, + MO2_NAMES.MO2Settings + ); + const mo2SettingsContent = await fsPromises.readFile( + mo2SettingsPath, + "utf-8" + ); + const settings = parse(mo2SettingsContent); + + // The selected profile is stored in the General section as @ByteArray(profile_name) + const selectedProfileSetting = (settings.General as IIniObjectSection) + ?.selected_profile as string; + + // Extract the profile name from @ByteArray(profile_name) + const match = selectedProfileSetting.match(/@ByteArray\((.*)\)/); + if (match?.[1]) { + return match[1]; + } + + throw new Error( + `Could not extract profile name from ${selectedProfileSetting}` + ); +}; +test.describe("MO2 Launch", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + let launchButton: Locator; + + test.beforeEach(async () => { + ({ window, closeTestApp, electronApp, mockFiles } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + launchButton = advancedPage.getByTestId("launch-mo2"); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should launch MO2 from the advanced page", async () => { + await expect(launchButton).toBeVisible(); + + const execHandle = await replaceChildProcessExecWithMock(electronApp); + + await launchButton.click(); + + await execHandle.evaluate((handle) => handle.resolveExec()); + + await waitForClickEventsEnabled(window); + + // Retrieve the file path from the mock exec function + const file = await execHandle.evaluate((handle) => handle.getCommand()); + + expect(file).toBe( + `"${path.join(mockFiles.mockModpackPath, "ModOrganizer.exe")}"` + ); + }); + + test("should show dialog when MO2 is already running", async () => { + await expect(launchButton).toBeVisible(); + + // Mock PSList to indicate MO2 is already running + await replacePsListWithMock(electronApp, [ + { + name: MO2_NAMES.MO2EXE, + pid: 12345, + ppid: 1, + cmd: "ModOrganizer.exe", + cpu: 0, + memory: 0, + }, + ]); + + // Mock message box to capture the message box shown + const messageBoxHandle = await mockMessageBox(electronApp, 0); + + // Wait for click events to be disabled when the dialog is shown + const disabledPromise = waitForClickEventsDisabled(window); + + await launchButton.click(); + + // Wait for the UI to be disabled (dialog is shown) + await disabledPromise; + + // Wait for the message box to be shown and then get the message box details + const messageBoxDetails = await waitForMessageBoxShown(messageBoxHandle); + + // Assert that the message box was shown with the correct title and message + expect(messageBoxDetails).toEqual({ + messageBoxShown: true, + messageBoxTitle: "Mod Organizer running", + messageBoxMessage: + "Mod Organizer 2 is already running. This could launch the wrong mod list. Would you like to close it first?", + }); + }); + + test("should call process.kill when user selects to kill MO2", async () => { + await expect(launchButton).toBeVisible(); + + // Mock PSList to indicate MO2 is already running with a specific PID + const mockPid = 12345; + await replacePsListWithMock(electronApp, [ + { + name: MO2_NAMES.MO2EXE, + pid: mockPid, + ppid: 1, + cmd: "ModOrganizer.exe", + cpu: 0, + memory: 0, + }, + ]); + + const execHandle = await replaceChildProcessExecWithMock(electronApp); + + // Mock process.kill to capture what it was called with + const processKillHandle = await mockProcessKill(electronApp); + + // Mock message box to return response number 1 (user selects "Close MO2 and continue") + await mockMessageBox(electronApp, 1); + + await launchButton.click(); + await execHandle.evaluate((handle) => handle.resolveExec()); + + // Wait for click events to be enabled again (dialog is closed) + await waitForClickEventsEnabled(window); + + // Get the process.kill mock state + const processKillState = await processKillHandle.evaluate((f) => f()); + + // Assert that process.kill was called + expect(processKillState.calls).toBeGreaterThan(0); + + // Assert that process.kill was called with the correct PID + expect(processKillState.lastCalledWith?.pid).toBe(mockPid); + }); + + test("should update selected profile in MO2 settings before launch", async () => { + await expect(launchButton).toBeVisible(); + + const selectedProfile = await selectProfile(window, PROFILES.STANDARD); + + const execHandle = await replaceChildProcessExecWithMock(electronApp); + + await launchButton.click(); + + await execHandle.evaluate((handle) => handle.resolveExec()); + + // Wait for click events to be enabled again (launch complete) + await waitForClickEventsEnabled(window); + + const mo2SelectedProfile = await getMO2SelectedProfile(mockFiles); + + // Assert that the selected profile in the MO2 settings file matches the profile we selected + expect(mo2SelectedProfile).toBe(selectedProfile); + }); + + test("should update resolution in graphics settings before launch", async () => { + await expect(launchButton).toBeVisible(); + + const selectedResolution = await selectResolution(window, { + width: 1920, + height: 1080, + }); + + const execHandle = await replaceChildProcessExecWithMock(electronApp); + + await launchButton.click(); + + await execHandle.evaluate((handle) => handle.resolveExec()); + + // Wait for click events to be enabled again (launch complete) + await waitForClickEventsEnabled(window); + + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + const resolution = displayTweaksIni.Render.Resolution; + + expect(resolution).toBe( + `${selectedResolution.width}x${selectedResolution.height}` + ); + }); + + test("should kill all MO2 processes when clicking the kill button", async () => { + await expect(launchButton).toBeVisible(); + + const mockRunningProcesses = [ + { + name: MO2_NAMES.MO2EXE, + pid: 12345, + ppid: 1, + cmd: "ModOrganizer.exe", + cpu: 0, + memory: 0, + }, + { + name: MO2_NAMES.MO2EXE, + pid: 67890, + ppid: 1, + cmd: "ModOrganizer.exe", + cpu: 0, + memory: 0, + }, + { + name: MO2_NAMES.MO2EXE, + pid: 54321, + ppid: 1, + cmd: "ModOrganizer.exe", + cpu: 0, + memory: 0, + }, + // Add a non-MO2 process to ensure it's not killed + { + name: "SomeOtherProcess.exe", + pid: 99999, + ppid: 1, + cmd: "SomeOtherProcess.exe", + cpu: 0, + memory: 0, + }, + ]; + + const processKillHandle = await mockProcessKill(electronApp); + + // Use the mock to simulate a long-running exec + const execHandle = await replaceChildProcessExecWithMock(electronApp); + + await launchButton.click(); + + // Now mock the PSList to indicate MO2 is running + // This simulates MO2 starting to run after the launch button is clicked + await replacePsListWithMock(electronApp, mockRunningProcesses); + + // Wait for the MO2 running modal to appear and the kill button to be visible + const killButton = window.getByTestId("kill-mo2-processes"); + await killButton.waitFor({ state: "visible" }); + await killButton.click(); + + // Manually resolve the exec promise to simulate MO2 being closed by the kill button + await execHandle.evaluate((handle) => handle.resolveExec()); + + const processKillState = await processKillHandle.evaluate((f) => f()); + + expect(processKillState.calls).toBe(3); + // Assert that process.kill was called with the correct PIDs for all MO2 processes + const killedPids = processKillState.allCalledWith.map((call) => call.pid); + expect(killedPids).toEqual([12345, 67890, 54321]); + }); +}); diff --git a/src/__tests__/e2e/mod-selection.e2e.ts b/src/__tests__/e2e/mod-selection.e2e.ts new file mode 100644 index 00000000..157da05d --- /dev/null +++ b/src/__tests__/e2e/mod-selection.e2e.ts @@ -0,0 +1,402 @@ +import { expect, Page, test } from "@playwright/test"; +import { + CloseTestApp, + createMockFiles, + MockFilesPaths, + selectFirstModpack, + setModpackAndWaitForAppLoaded, + startTestApp, + waitForModDirectorySelect, +} from "./util/setup"; +import type { ElectronApplication } from "playwright"; +import { getUserPreferences } from "./util/user-preferences"; +import { mockErrorDialog, mockScreenResolution } from "./util/mocks"; +import { waitForDialogShown } from "./util/app-state"; +import fs from "fs"; +import fsPromises from "fs/promises"; +import { + createDirectoryStructure, + createWabbajackInstallSettings, +} from "./util/generate-modpack-files"; +import { navigateAndWait, PAGES } from "./util/navigation"; +import { filesExist } from "./util/file-utils"; +import path from "path"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { ENB_PRESETS } from "./util/enb"; +import { PROFILES } from "./util/profile"; +import { GRAPHICS_PRESETS } from "./util/graphics"; +import type { Resolution } from "../../shared/types/Resolution"; +import { + isModEnabled, + isPluginEnabled, + getDisplayTweaksIni, +} from "./util/modlist"; + +test.describe("Mod Selection", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + + test.describe("Initial Mod Selection", () => { + test.beforeEach(async () => { + ({ window, closeTestApp, electronApp, mockFiles } = await startTestApp( + test + )); + + await waitForModDirectorySelect(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should show the initial mod selection screen", async () => { + const modDirectory = window.getByTestId("mod-directory"); + + await expect(modDirectory).toBeVisible(); + + // Verify the welcome text is shown + const welcomeText = await modDirectory + .getByTestId("input-label") + .textContent(); + expect(welcomeText).toBe( + "To get started, select your Wildlander installation directory:" + ); + }); + + test("should select a mod directory from the initial selection", async () => { + const modDirectoryPath = await selectFirstModpack(window); + + // Get the user preferences + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + + // Verify the mod directory is set correctly + expect(userPreferences.MOD_DIRECTORY).toBe(modDirectoryPath); + }); + + test("should show an error when selecting an invalid mod directory", async () => { + // Attempt to select an invalid mod directory + const modDirectorySelectTestId = "mod-directory-select"; + + // Ensure the dropdown is visible + await window.getByTestId(modDirectorySelectTestId).waitFor({ + state: "visible", + }); + + // Open the dropdown + await window.getByTestId(modDirectorySelectTestId).click(); + + // Select the option with the text `/invalid/path` + const invalidOption = window.getByText("/invalid/path"); + + const errorDialogHandle = await mockErrorDialog(electronApp); + + await invalidOption.click(); + + const { title, content } = await waitForDialogShown(errorDialogHandle); + + expect({ title, content }).toEqual({ + title: "Invalid modpack directory selected", + content: + 'Please ensure this is a valid modpack installation directory. Remember, this is NOT the Skyrim directory, it is the mod\'s installation directory. Missing files/directories: "ModOrganizer.exe","profiles","launcher"', + }); + + // Assert the mod directory selection is still visible + await expect(window.getByTestId(modDirectorySelectTestId)).toBeVisible(); + + // Verify the user preferences file is still an empty object + const userPreferencesPath = `${mockFiles.mockFilesPath}/config/userPreferences.json`; + const fileContents = fs.readFileSync(userPreferencesPath, "utf-8"); + expect(JSON.parse(fileContents)).toEqual({}); + }); + + test("should automatically create graphics profiles when a modpack is selected", async () => { + const modDirectoryPath = await selectFirstModpack(window); + const profilesDirectory = path.join(modDirectoryPath, "profiles"); + const standardProfilePath = path.join( + profilesDirectory, + "0_Wildlander-STANDARD" + ); + const performanceProfilePath = path.join( + profilesDirectory, + "0_Wildlander-PERFORMANCE" + ); + const potatoProfilePath = path.join( + profilesDirectory, + "1_Wildlander-POTATO" + ); + const highProfilePath = path.join(profilesDirectory, "1_Wildlander-HIGH"); + + // Verify the new profile directories have been created + expect(async () => { + await fsPromises.access(standardProfilePath); + }).not.toThrow(); + expect(async () => { + await fsPromises.access(performanceProfilePath); + }).not.toThrow(); + + // Verify the performance profile content matches the potato profile + const performanceProfileMatches = await filesExist( + potatoProfilePath, + performanceProfilePath + ); + expect( + performanceProfileMatches, + "Performance profile content should match potato profile content" + ).toBe(true); + + // Verify the standard profile content matches the high profile + const standardProfileMatches = await filesExist( + highProfilePath, + standardProfilePath + ); + expect( + standardProfileMatches, + "Standard profile content should match high profile content" + ).toBe(true); + }); + + test("should set default user preferences when a modpack is selected", async () => { + await mockScreenResolution(electronApp, { width: 1920, height: 1080 }); + + const modDirectoryPath = await selectFirstModpack(window); + + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + + // Verify the mod directory is set correctly + expect(userPreferences[USER_PREFERENCE_KEYS.MOD_DIRECTORY]).toBe( + modDirectoryPath + ); + + // Verify the ENB profile is set to the default value + expect(userPreferences[USER_PREFERENCE_KEYS.ENB_PROFILE]).toBe( + ENB_PRESETS.ULTRA.value + ); + + // Verify the profile is set to the default value + expect(userPreferences[USER_PREFERENCE_KEYS.PRESET]).toBe( + PROFILES.STANDARD.value + ); + + // Verify the resolution is set to the mocked screen resolution + const resolution = userPreferences[ + USER_PREFERENCE_KEYS.RESOLUTION + ] as Resolution; + expect(resolution).toEqual({ + width: 1920, + height: 1080, + }); + + // Verify the graphics preset is set to the default value + expect(userPreferences[USER_PREFERENCE_KEYS.GRAPHICS]).toBe( + GRAPHICS_PRESETS.ULTRA.value + ); + }); + + test("should backup assets when a modpack is first selected", async () => { + const modDirectoryPath = await selectFirstModpack(window); + + // Define source and backup directories + const launcherDir = path.join(modDirectoryPath, "launcher"); + const backupsDir = path.join(launcherDir, "_backups"); + + // ENB presets + const enbPresetsDir = path.join(launcherDir, "ENB Presets"); + const enbBackupDir = path.join(backupsDir, "ENB Presets"); + + // Graphics presets + const graphicsPresetsDir = path.join(launcherDir, "Graphics Presets"); + const graphicsBackupDir = path.join(backupsDir, "graphics"); + + // Profiles + const profilesDir = path.join(modDirectoryPath, "profiles"); + const profilesBackupDir = path.join(backupsDir, "profiles"); + + // Verify content matches between source and backup directories + const enbContentMatches = await filesExist(enbPresetsDir, enbBackupDir); + expect( + enbContentMatches, + "ENB presets content should be correctly backed up" + ).toBe(true); + + const graphicsContentMatches = await filesExist( + graphicsPresetsDir, + graphicsBackupDir + ); + expect( + graphicsContentMatches, + "Graphics presets content should be correctly backed up" + ).toBe(true); + + const profilesContentMatches = await filesExist( + profilesDir, + profilesBackupDir, + ["Skyrim.ini", "SkyrimCustom.ini", "SkyrimPrefs.ini"] + ); + expect( + profilesContentMatches, + "Profile configuration files should be correctly backed up" + ).toBe(true); + }); + + test("should copy default ENB preset files to game directory when a modpack is first selected", async () => { + const modDirectoryPath = await selectFirstModpack(window); + + const defaultEnbPreset = ENB_PRESETS.ULTRA.value; + const launcherDir = path.join(modDirectoryPath, "launcher"); + const enbSourceDir = path.join( + launcherDir, + "ENB Presets", + defaultEnbPreset + ); + const gameDir = path.join(modDirectoryPath, "Stock Game"); + + // Verify that all files from the default ENB preset source directory have been copied to the game directory + const enbFilesExist = await filesExist(enbSourceDir, gameDir); + expect( + enbFilesExist, + "ENB preset files should be copied to the game directory" + ).toBe(true); + }); + + test("should apply correct resolution-specific configurations when a modpack is first selected", async () => { + await mockScreenResolution(electronApp, { width: 1920, height: 1080 }); + + await selectFirstModpack(window); + + // Verify SSEDisplayTweaks.ini has been updated with the correct resolution + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + + // Check that the resolution matches the mocked screen resolution + expect(displayTweaksIni.Render.Resolution).toBe("1920x1080"); + + // Check that BorderlessUpscale is set to true (since a 16:9 resolution is selected on a mocked 16:9 screen) + expect( + displayTweaksIni.Render.BorderlessUpscale, + "BorderlessUpscale should be enabled for 16:9 resolution" + ).toBe(true); + + // Verify widescreen mods and plugin state for 16:9 resolution + // Check that the 21:9 resolution support mod is disabled + const is219ModEnabled = await isModEnabled( + "Wildlander 21-9 Resolution Support", + mockFiles + ); + expect( + is219ModEnabled, + "21:9 resolution support mod should be disabled for 16:9 resolution" + ).toBe(false); + + // Check that the 32:9 resolution support mod is disabled + const is329ModEnabled = await isModEnabled( + "Wildlander 32-9 Resolution Support", + mockFiles + ); + expect( + is329ModEnabled, + "32:9 resolution support mod should be disabled for 16:9 resolution" + ).toBe(false); + + // Check that the widescreen plugin is disabled + const isWidescreenPluginEnabled = await isPluginEnabled( + "widescreen_skyui_fix.esp", + mockFiles + ); + expect( + isWidescreenPluginEnabled, + "Widescreen SkyUI fix plugin should be disabled for 16:9 resolution" + ).toBe(false); + }); + + test("should apply correct graphics configurations when a modpack is first selected", async () => { + const modDirectoryPath = await selectFirstModpack(window); + + const graphicsDir = path.join( + modDirectoryPath, + "launcher", + "Graphics Presets", + GRAPHICS_PRESETS.ULTRA.value + ); + const profileDir = path.join( + modDirectoryPath, + "profiles", + PROFILES.STANDARD.value + ); + + // Verify all graphics files were copied correctly + const graphicsFilesExist = await filesExist(graphicsDir, profileDir); + expect( + graphicsFilesExist, + "Graphics preset files should be correctly copied to the profile directory" + ).toBe(true); + }); + }); + + test.describe("Advanced Page Mod Selection", () => { + let newMockFiles: MockFilesPaths; + + test.beforeEach(async () => { + // Create a new set of mock files to swap to + newMockFiles = await createMockFiles(test); + + ({ window, closeTestApp, electronApp, mockFiles } = await startTestApp( + test + )); + + // Add the new modpack to the Wabbajack settings + createDirectoryStructure( + { + Wabbajack: { + // eslint-disable-next-line @typescript-eslint/naming-convention + saved_settings: { + ["install-settings-9876543210.json"]: JSON.stringify( + createWabbajackInstallSettings(newMockFiles.mockModpackPath) + ), + }, + }, + }, + mockFiles.mockAppDataLocalPath + ); + + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should select a different modpack from the advanced page", async () => { + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + + const modDirectorySelectTestId = "mod-directory-select"; + await advancedPage.getByTestId(modDirectorySelectTestId).click(); + + const { mockModpackPath } = newMockFiles; + + const pageLoadedPromise = new Promise((resolve) => + window.on("load", () => resolve()) + ); + + // Select the option with the new modpack path + const optionsContainer = window + .getByTestId(modDirectorySelectTestId) + .getByTestId("dropdown-options"); + await optionsContainer.getByText(mockModpackPath).click(); + + // Wait for the page to have been reloaded. This happens after the modpack has been selected. + await pageLoadedPromise; + + // Verify the mod directory dropdown shows the new selection + const currentSelection = await window + .getByTestId(modDirectorySelectTestId) + .getByTestId("dropdown-head") + .textContent(); + expect(currentSelection).toContain(mockModpackPath); + + // Get the user preferences and verify the mod directory is set correctly + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + expect(userPreferences.MOD_DIRECTORY).toBe(mockModpackPath); + }); + }); +}); diff --git a/src/__tests__/e2e/navigation.e2e.ts b/src/__tests__/e2e/navigation.e2e.ts new file mode 100644 index 00000000..c4557fcb --- /dev/null +++ b/src/__tests__/e2e/navigation.e2e.ts @@ -0,0 +1,98 @@ +import { Page, test, expect } from "@playwright/test"; +import { + startTestApp, + setModpackAndWaitForAppLoaded, + MockFilesPaths, +} from "./util/setup"; +import path from "path"; +import fs from "fs/promises"; + +test.describe("Navigation", () => { + let window: Page; + let closeTestApp: Awaited>["closeTestApp"]; + let mockFiles: MockFilesPaths; + + test.beforeEach(async () => { + ({ window, closeTestApp, mockFiles } = await startTestApp(test)); + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("Should display the correct modpack version", async () => { + // Get the expected modpack version from the mock files + const wabbajackSettingsPath = path.join( + mockFiles.mockFilesPath, + "local", + "Wabbajack", + "saved_settings", + "install-settings-1234567890123456.json" + ); + + const wabbajackSettings = JSON.parse( + await fs.readFile(wabbajackSettingsPath, "utf-8") + ); + + const expectedModpackVersion = wabbajackSettings.Metadata.version; + + // Wait for the navigation to be visible + await window.getByTestId("launcher-info").waitFor({ state: "visible" }); + + // Get the modpack version from the navigation + const modpackVersionText = await window + .getByTestId("modpack-version") + .textContent(); + + // Verify that it starts with "Modpack version: " + expect(modpackVersionText).toContain("Modpack version:"); + + // Verify that it has the correct version number + const versionPart = modpackVersionText + ?.replace("Modpack version:", "") + .trim(); + expect(versionPart).toBe(expectedModpackVersion); + }); + + test("Should display the correct launcher version", async () => { + // In the test environment, the launcher version is coming from Electron's app.getVersion() + // which returns the Electron version (16.0.5) rather than the application version + const expectedLauncherVersion = "16.0.5"; + + // Wait for the navigation to be visible + await window.getByTestId("launcher-info").waitFor({ state: "visible" }); + + // Get the launcher version from the navigation + const launcherVersionText = await window + .getByTestId("launcher-version") + .textContent(); + + // Verify that it starts with "Launcher Version: " + expect(launcherVersionText).toContain("Launcher Version:"); + + // Verify that it has the correct version number + const versionPart = launcherVersionText + ?.replace("Launcher Version:", "") + .trim(); + expect(versionPart).toBe(expectedLauncherVersion); + }); + + test("Should have the correct contribute link", async () => { + // Wait for the navigation to be visible + await window.getByTestId("launcher-info").waitFor({ state: "visible" }); + + // Get the contribute link from the navigation + const contributeLink = window.getByTestId("contribute-link"); + + // Verify that it has the correct href + await expect(contributeLink).toHaveAttribute( + "href", + "https://github.com/Wildlander-mod/Launcher" + ); + + // Verify that it has the correct text + const contributeLinkText = await contributeLink.textContent(); + expect(contributeLinkText?.trim()).toBe("Help contribute"); + }); +}); diff --git a/src/__tests__/e2e/news.e2e.ts b/src/__tests__/e2e/news.e2e.ts new file mode 100644 index 00000000..1493c261 --- /dev/null +++ b/src/__tests__/e2e/news.e2e.ts @@ -0,0 +1,287 @@ +import { Page, test, expect } from "@playwright/test"; +import { startTestApp, setModpackAndWaitForAppLoaded } from "./util/setup"; +import { + mockPosts, + mockPatreonEndpoint, + mockLastUpdated, + mockPatreonError, + mockLastUpdatedError, +} from "./util/patreon"; + +test.describe("News", () => { + let window: Page; + let closeTestApp: Awaited>["closeTestApp"]; + + test.beforeEach(async () => { + ({ window, closeTestApp } = await startTestApp(test)); + await setModpackAndWaitForAppLoaded(window); + + // Mock the API responses + await mockPatreonEndpoint(window, { posts: mockPosts }); + await mockLastUpdated(window); + + // Clear localStorage before each test to ensure a clean state + await window.evaluate(() => { + localStorage.clear(); + }); + }); + + test.afterEach(async () => { + // Reset all mocked routes + await window.unroute("**"); + + // Close the app + await closeTestApp(); + }); + + test("should fetch and display posts on first load with no cache", async () => { + // Reload the page (with cleared localStorage from beforeEach) + await window.reload(); + + // Wait for the news container to be visible + await window.getByTestId("news-container").waitFor({ state: "visible" }); + + // Check that the mock posts are displayed + await expect(window.getByTestId("news-item-Test Post 1")).toBeVisible(); + await expect(window.getByTestId("news-item-Test Post 2")).toBeVisible(); + + // Verify that the cache was created + const cache = await window.evaluate(() => { + return localStorage.getItem("patreon.posts"); + }); + + expect(cache).not.toBeNull(); + const parsedCache = JSON.parse(cache as string); + expect(parsedCache).toEqual({ + age: expect.any(Number), + content: mockPosts, + }); + }); + + test("should display cached data first and update with new results when cache is outdated", async () => { + // Set up a mock for last-updated that indicates the cache is outdated + await mockLastUpdated(window, -1800); // 30 minutes in the past + + // First load to populate the cache with a timestamp from 1 hour ago + await window.evaluate(() => { + localStorage.setItem( + "patreon.posts", + JSON.stringify({ + age: Date.now() - 3600000, + content: [ + { + title: "Old Post", + content: "This is an old post", + published: "2023-01-01T00:00:00Z", + url: "/old-post", + tags: ["test", "old"], + }, + ], + }) + ); + }); + + // Set up the updated posts that should be added on top + const updatedMockPosts = [ + { + title: "Fresh Post", + content: "This is a fresh post", + published: "2023-01-03T00:00:00Z", + url: "/fresh-post", + tags: ["test", "fresh"], + }, + ]; + + // Mock the API to return the updated posts + await mockPatreonEndpoint(window, { posts: updatedMockPosts }); + + // Reload the page + await window.reload(); + + // Check that both cached and fresh data are visible + await expect(window.getByTestId("news-item-Fresh Post")).toBeVisible(); + await expect(window.getByTestId("news-item-Old Post")).toBeVisible(); + }); + + test("should only use cached data when it is not outdated and not call the patreon endpoint", async () => { + // Set up a mock for last-updated that indicates the cache is still valid + const oneHourAgo = -3600; // 1 hour ago in seconds + await mockLastUpdated(window, oneHourAgo); + + // Populate the cache with a later timestamp + await window.evaluate(() => { + localStorage.setItem( + "patreon.posts", + JSON.stringify({ + age: Date.now(), + content: [ + { + title: "Cached Post", + content: "This is a cached post", + published: "2023-01-01T00:00:00Z", + url: "/cached-post", + tags: ["test", "cache"], + }, + ], + }) + ); + // If there is no patrons in the cache, the patreon API will be called making it difficult to assert if the test worked + localStorage.setItem( + "patreon.patrons", + JSON.stringify({ + age: Date.now(), + content: [{ name: "test", tier: "test" }], + }) + ); + }); + + // Mock the patreon endpoint to track if it is called + let patreonCalled = false; + await window.route("**/api/patreon", () => { + patreonCalled = true; // Track any call + }); + + // Reload the page + await window.reload(); + + // It should only show the cached data + await window.getByTestId("news-container").waitFor({ state: "visible" }); + await expect(window.getByTestId("news-item-Cached Post")).toBeVisible(); + + // Assert the patreon endpoint was not called + expect(patreonCalled).toBe(false); + }); + + test("should show error message when patreon API fails", async () => { + // Mock the patreon API to return an error + await mockPatreonError(window); + + // Reload the page + await window.reload(); + + // Check that the error message is displayed + await window.getByTestId("news-error").waitFor({ state: "visible" }); + await expect(window.getByTestId("news-error")).toHaveText( + "Unable to load latest news." + ); + }); + + test("should fetch posts directly when last-updated API fails and there's no cache", async () => { + // Mock the last-updated API to return an error + await mockLastUpdatedError(window); + + // Reload the page + await window.reload(); + + // The component should still try to fetch posts directly + // Wait for the news container to be visible + await window.getByTestId("news-container").waitFor({ state: "visible" }); + + // Check that the mock posts are displayed + await expect(window.getByTestId("news-item-Test Post 1")).toBeVisible(); + await expect(window.getByTestId("news-item-Test Post 2")).toBeVisible(); + }); + + test("should handle empty news list gracefully", async () => { + // Mock the patreon API to return an empty list + await mockPatreonEndpoint(window, { posts: [] }); + + // Reload the page + await window.reload(); + + // The news container should not be visible since there are no posts + await expect(window.getByTestId("news-container")).not.toBeVisible(); + + // Error message should not be visible either since it's not an error + await expect(window.getByTestId("news-error")).not.toBeVisible(); + }); + + test("should show an error if the last-updated API fails", async () => { + // Populate the cache + await window.evaluate(() => { + const currentTime = Date.now(); // Current time in ms + localStorage.setItem( + "patreon.posts", + JSON.stringify({ + age: currentTime, + content: [ + { + title: "Cached Post For Error", + content: "This is a cached post for error testing", + published: "2023-01-01T00:00:00Z", + url: "/cached-post-error", + tags: ["test", "cache", "error"], + }, + ], + }) + ); + }); + + // Mock the last-updated API to return an error + await mockLastUpdatedError(window); + + // Reload the page + await window.reload(); + + // It should show an error message + await window.getByTestId("news-error").waitFor({ state: "visible" }); + await expect(window.getByTestId("news-error")).toHaveText( + "Unable to load latest news." + ); + }); + + test("should handle cache invalidation correctly", async () => { + // Set up a very old cache + await window.evaluate(() => { + const oldTime = Date.now() - 86400000; // 24 hours ago in ms + localStorage.setItem( + "patreon.posts", + JSON.stringify({ + age: oldTime, + content: [ + { + title: "Very Old Post", + content: "This is a very old post", + published: "2023-01-01T00:00:00Z", + url: "/very-old-post", + tags: ["test", "old"], + }, + ], + }) + ); + }); + + // Set up a mock for last-updated that indicates the cache is outdated + await mockLastUpdated(window); // Current time, definitely newer than cache + + // Set up new posts to be fetched + const newMockPosts = [ + { + title: "Brand New Post", + content: "This is a brand new post", + published: "2023-01-05T00:00:00Z", + url: "/brand-new-post", + tags: ["test", "new"], + }, + ]; + + // Mock the patreon API to return the new posts + await mockPatreonEndpoint(window, { posts: newMockPosts }); + + // Reload the page + await window.reload(); + + // After the API call, it should show both the old and new posts + await expect(window.getByTestId("news-item-Brand New Post")).toBeVisible(); + await expect(window.getByTestId("news-item-Very Old Post")).toBeVisible(); + + // Verify that the cache was updated + const cache = await window.evaluate(() => { + return localStorage.getItem("patreon.posts"); + }); + + expect(cache).not.toBeNull(); + const parsedCache = JSON.parse(cache as string); + expect(parsedCache.content).toEqual(newMockPosts); + }); +}); diff --git a/src/__tests__/e2e/patrons.e2e.ts b/src/__tests__/e2e/patrons.e2e.ts new file mode 100644 index 00000000..1855e427 --- /dev/null +++ b/src/__tests__/e2e/patrons.e2e.ts @@ -0,0 +1,228 @@ +import { Page, test, expect } from "@playwright/test"; +import { + startTestApp, + setModpackAndWaitForAppLoaded, + CloseTestApp, +} from "./util/setup"; +import { + mockPatrons, + mockPatreonEndpoint, + mockPatreonError, + addPatronsToLocalStorage, +} from "./util/patreon"; +import type { Patron } from "../../renderer/src/services/patreon.service"; + +test.describe("Patrons", () => { + let window: Page; + let closeTestApp: CloseTestApp; + + test.beforeEach(async () => { + ({ window, closeTestApp } = await startTestApp(test)); + await setModpackAndWaitForAppLoaded(window); + + // Mock the API responses + await mockPatreonEndpoint(window, { patrons: mockPatrons }); + + // Clear localStorage before each test to ensure a clean state + await window.evaluate(() => { + localStorage.clear(); + }); + }); + + test.afterEach(async () => { + // Reset all mocked routes + await window.unroute("**"); + + // Close the app + await closeTestApp(); + }); + + test("should fetch and display patrons on first load with no cache", async () => { + // Reload the page (with cleared localStorage from beforeEach) + await window.reload(); + + // Wait for the patrons container to be visible + await window.getByTestId("patrons-container").waitFor({ state: "visible" }); + + // Check that the super patrons list is displayed + await expect(window.getByTestId("super-patrons-list")).toBeVisible(); + + // Check that the patrons list is displayed + await expect(window.getByTestId("patrons-list")).toBeVisible(); + + // Verify that the cache was created + const cache = await window.evaluate(() => { + return localStorage.getItem("patreon.patrons"); + }); + + expect(cache).not.toBeNull(); + const parsedCache = JSON.parse(cache as string); + + // Sort the expected patrons and cached patrons lists + const sortedExpectedPatrons = [...mockPatrons].sort((a, b) => + a.name.localeCompare(b.name) + ); + const sortedCachedPatrons = [...parsedCache.content].sort((a, b) => + a.name.localeCompare(b.name) + ); + + // Check that the cache age is a valid number + expect(parsedCache.age).toEqual(expect.any(Number)); + // Check that the sorted lists are identical + expect(sortedCachedPatrons).toEqual(sortedExpectedPatrons); + }); + + test("should use cached data when available", async () => { + // First load to populate the cache with a recent timestamp + const cachedPatrons: Patron[] = [ + { + name: "Cached Super Patron", + tier: "Super Patron", + }, + { + name: "Cached Patron", + tier: "Patron", + }, + ]; + + await addPatronsToLocalStorage(window, cachedPatrons); + + // Mock the patreon endpoint to return an error + await mockPatreonError(window); + + // Reload the page + await window.reload(); + + // Wait for the patrons container to be visible + await window.getByTestId("patrons-container").waitFor({ state: "visible" }); + + // Check that the cached patrons are displayed + // We can't check for specific patron names since they're just rendered as list items + await expect(window.getByTestId("super-patrons-list")).toBeVisible(); + await expect(window.getByTestId("patrons-list")).toBeVisible(); + + // Error message should not be visible since we're using cached data + await expect(window.getByTestId("patrons-error")).not.toBeVisible(); + }); + + test("should show error message when patreon API fails", async () => { + // Mock the patreon API to return an error + await mockPatreonError(window); + + // Reload the page + await window.reload(); + + // Check that the error message is displayed + await window.getByTestId("patrons-error").waitFor({ state: "visible" }); + await expect(window.getByTestId("patrons-error")).toHaveText( + "Unable to retrieve Patron list." + ); + }); + + test("should use cached data when API fails", async () => { + // First load to populate the cache + const cachedPatrons = [ + { + name: "Cached Super Patron For Error", + tier: "Super Patron", + }, + { + name: "Cached Patron For Error", + tier: "Patron", + }, + ]; + + await window.evaluate((patrons) => { + localStorage.setItem( + "patreon.patrons", + JSON.stringify({ + age: Date.now(), + content: patrons, + }) + ); + }, cachedPatrons); + + // Mock the patreon API to return an error + await mockPatreonError(window); + + // Reload the page + await window.reload(); + + // The patrons container and lists should be visible since we're using cached data + await window.getByTestId("patrons-container").waitFor({ state: "visible" }); + await expect(window.getByTestId("super-patrons-list")).toBeVisible(); + await expect(window.getByTestId("patrons-list")).toBeVisible(); + + // Error message should not be visible since we're using cached data + await expect(window.getByTestId("patrons-error")).not.toBeVisible(); + }); + + test("should handle cache invalidation correctly", async () => { + // Set up a very old cache + const oldPatrons = [ + { + name: "Old Super Patron", + tier: "Super Patron", + }, + { + name: "Old Patron", + tier: "Patron", + }, + ]; + + await window.evaluate((patrons) => { + const oldTime = Date.now() - 86400000; // 24 hours ago in ms + localStorage.setItem( + "patreon.patrons", + JSON.stringify({ + age: oldTime, + content: patrons, + }) + ); + }, oldPatrons); + + // Set up new patrons to be fetched + const newPatrons: Patron[] = [ + { + name: "New Super Patron", + tier: "Super Patron", + }, + { + name: "New Patron", + tier: "Patron", + }, + ]; + + // Mock the patreon API to return the new patrons + await mockPatreonEndpoint(window, { patrons: newPatrons }); + + // Reload the page + await window.reload(); + + // The patrons container and lists should be visible + await window.getByTestId("patrons-container").waitFor({ state: "visible" }); + await expect(window.getByTestId("super-patrons-list")).toBeVisible(); + await expect(window.getByTestId("patrons-list")).toBeVisible(); + + // Verify that the cache was updated + const cache = await window.evaluate(() => { + return localStorage.getItem("patreon.patrons"); + }); + + expect(cache).not.toBeNull(); + const parsedCache = JSON.parse(cache as string); + + // The PatreonService shuffles the patrons, so sort the cache and the expected patrons + const sortedNewPatrons = [...newPatrons].sort((a, b) => + a.name.localeCompare(b.name) + ); + const sortedCachedContent = [...parsedCache.content].sort((a, b) => + a.name.localeCompare(b.name) + ); + + // Check that the cache age is a valid number + expect(parsedCache.age).toEqual(expect.any(Number)); + // Check that the sorted cache matches the sorted new patrons exactly + expect(sortedCachedContent).toEqual(sortedNewPatrons); + }); +}); diff --git a/src/__tests__/e2e/profile-selection.e2e.ts b/src/__tests__/e2e/profile-selection.e2e.ts new file mode 100644 index 00000000..d8bc66cc --- /dev/null +++ b/src/__tests__/e2e/profile-selection.e2e.ts @@ -0,0 +1,196 @@ +import { expect, Page, test } from "@playwright/test"; +import { + CloseTestApp, + MockFilesPaths, + reloadWindow, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import { getUserPreferences, setUserPreference } from "./util/user-preferences"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { PROFILES, selectProfile } from "./util/profile"; +import { mockMessageBox } from "./util/mocks"; +import type { ElectronApplication } from "playwright"; +import fs from "fs/promises"; +import path from "path"; +import { + waitForClickEventsEnabled, + waitForMessageBoxShown, +} from "./util/app-state"; +import { PAGES, navigateAndWait } from "./util/navigation"; + +test.describe("Profiles", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + + test.beforeEach(async () => { + ({ window, closeTestApp, mockFiles, electronApp } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should display the profile selection dropdown", async () => { + const profileDropdown = window.getByTestId("profile-dropdown"); + await expect(profileDropdown).toBeVisible(); + }); + + test.describe("Profile selection", () => { + const profiles = [ + { profile: PROFILES.STANDARD, label: PROFILES.STANDARD.text }, + { profile: PROFILES.PERFORMANCE, label: PROFILES.PERFORMANCE.text }, + ]; + + for (const { profile, label } of profiles) { + test(`should update user preferences when selecting ${label} profile`, async () => { + const selectedProfileValue = await selectProfile(window, profile); + + const userPreferences = await getUserPreferences( + mockFiles.mockFilesPath + ); + const profilePreference = userPreferences[USER_PREFERENCE_KEYS.PRESET]; + + expect(profilePreference).toBe(selectedProfileValue); + }); + } + }); + + test.describe("Hidden profiles", () => { + const hiddenProfiles = Object.values(PROFILES).filter( + (profile) => profile.hidden + ); + + test("should not display hidden profiles by default", async () => { + const profileDropdown = window.getByTestId("profile-dropdown"); + await profileDropdown.getByTestId("dropdown-head").click(); + + const optionsContainer = profileDropdown.getByTestId("dropdown-options"); + + // Check that hidden profiles are not visible + for (const profile of hiddenProfiles) { + await expect( + optionsContainer.getByText(profile.text, { exact: true }) + ).not.toBeVisible(); + } + }); + + test("should display hidden profiles when user preference is set", async () => { + // Set the user preference to show hidden profiles + await setUserPreference( + mockFiles.mockFilesPath, + USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE, + true + ); + + // Reload the page to apply the preference + await reloadWindow(window); + + const profileDropdown = window.getByTestId("profile-dropdown"); + await profileDropdown.getByTestId("dropdown-head").click(); + + await profileDropdown.click(); + + const optionsContainer = profileDropdown.getByTestId("dropdown-options"); + + // Check that hidden profiles are now visible + for (const profile of hiddenProfiles) { + await expect( + optionsContainer.getByText(profile.text, { exact: true }) + ).toBeVisible(); + } + }); + + test("should update user preferences when selecting a hidden profile", async () => { + // Set the user preference to show hidden profiles + await setUserPreference( + mockFiles.mockFilesPath, + USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE, + true + ); + + // Reload the page to apply the preference + await reloadWindow(window); + + const selectedProfileValue = await selectProfile(window, PROFILES.ULTRA); + + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + const profilePreference = userPreferences[USER_PREFERENCE_KEYS.PRESET]; + + expect(profilePreference).toBe(selectedProfileValue); + }); + + test("should show hidden profiles when toggling the switch on Advanced page", async () => { + const advancedPage = await navigateAndWait(window, PAGES.ADVANCED); + + await advancedPage.getByTestId("show-hidden-profiles-toggle").click(); + + // Verify that the user preference has been updated + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + expect(userPreferences[USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE]).toBe( + true + ); + + const profileDropdown = window.getByTestId("profile-dropdown"); + await profileDropdown.getByTestId("dropdown-head").click(); + + const optionsContainer = profileDropdown.getByTestId("dropdown-options"); + + // Check that hidden profiles are now visible + for (const profile of hiddenProfiles) { + await expect( + optionsContainer.getByText(profile.text, { exact: true }) + ).toBeVisible(); + } + }); + }); + + test.describe("Restore profiles ", () => { + test("should restore MO2 profiles when clicking the Restore MO2 Profiles button", async () => { + const profileToTest = PROFILES.PERFORMANCE; + const fileToModify = "plugins.txt"; + const primaryFilePath = path.join( + `${mockFiles.mockModpackPath}/profiles/${profileToTest.value}/${fileToModify}` + ); + const backupFilePath = path.join( + `${mockFiles.mockModpackPath}/launcher/_backups/profiles/${profileToTest.value}/${fileToModify}` + ); + + await navigateAndWait(window, PAGES.ADVANCED); + + await selectProfile(window, PROFILES.PERFORMANCE); + + const originalPrimaryContent = await fs.readFile( + primaryFilePath, + "utf-8" + ); + const backupContent = await fs.readFile(backupFilePath, "utf-8"); + + await fs.writeFile( + primaryFilePath, + originalPrimaryContent + + "\n# This is a test modification for MO2 profile restore test" + ); + + const messageBoxHandle = await mockMessageBox(electronApp, 1); + + await window.getByTestId("restore-mo2-profiles").click(); + + await waitForMessageBoxShown(messageBoxHandle); + await waitForClickEventsEnabled(window); + + const restoredContent = await fs.readFile(primaryFilePath, "utf-8"); + const currentBackupContent = await fs.readFile(backupFilePath, "utf-8"); + + // Verify the content of the restored file matches the backup file + expect(restoredContent).toBe(currentBackupContent); + // Verify the backup file was not modified during the restore process + expect(currentBackupContent).toBe(backupContent); + }); + }); +}); diff --git a/src/__tests__/e2e/resolution.e2e.ts b/src/__tests__/e2e/resolution.e2e.ts new file mode 100644 index 00000000..6320469d --- /dev/null +++ b/src/__tests__/e2e/resolution.e2e.ts @@ -0,0 +1,238 @@ +import { expect, Page, test } from "@playwright/test"; +import { + CloseTestApp, + MockFilesPaths, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import { getUserPreferences } from "./util/user-preferences"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import type { Resolution } from "../../shared/types/Resolution"; +import type { ElectronApplication } from "playwright"; +import { + isModEnabled, + isPluginEnabled, + getDisplayTweaksIni, +} from "./util/modlist"; +import { selectResolution } from "./util/resolution"; +import { mockScreenResolution } from "./util/mocks"; + +test.describe("Resolution", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + + test.beforeEach(async () => { + ({ window, closeTestApp, mockFiles, electronApp } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should display the resolution dropdown", async () => { + // Verify the resolution dropdown is visible + const resolutionDropdown = window.getByTestId("resolution-dropdown"); + await expect(resolutionDropdown).toBeVisible(); + }); + + test("should update user preferences when changing resolution", async () => { + const targetResolution = await selectResolution(window, { + width: 7680, + height: 4320, + }); + + // Verify the resolution is updated in user preferences + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + const resolution = userPreferences[ + USER_PREFERENCE_KEYS.RESOLUTION + ] as Resolution; + expect(resolution).toEqual(targetResolution); + }); + + test("should update SSEDisplayTweaks when changing resolution", async () => { + const targetResolution = await selectResolution(window, { + width: 3840, + height: 1080, + }); + + // Verify the resolution is updated in the SSEDisplayTweaks.ini file + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + expect(displayTweaksIni.Render.Resolution).toBe( + `${targetResolution.width}x${targetResolution.height}` + ); + }); + + test("should enable BorderlessUpscale when non-ultrawide monitor selects non-ultrawide resolution", async () => { + // Mock a non-ultrawide screen resolution + await mockScreenResolution(electronApp, { width: 1920, height: 1080 }); + + // Select a non-ultrawide resolution + await selectResolution(window, { width: 7680, height: 4320 }); + + // Read the borderless upscale from the ini file + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + const borderlessUpscale = displayTweaksIni["Render"].BorderlessUpscale; + + // Check borderless upscale has been enabled + expect(borderlessUpscale).toBe(true); + }); + + test("should disable BorderlessUpscale when non-ultrawide monitor selects ultrawide resolution", async () => { + // Mock a non-ultrawide screen resolution + await mockScreenResolution(electronApp, { width: 1920, height: 1080 }); + + // Select an ultrawide resolution + await selectResolution(window, { width: 3840, height: 1080 }); + + // Read the borderless upscale from the ini file + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + const borderlessUpscale = displayTweaksIni.Render.BorderlessUpscale; + + // Check borderless upscale has been disabled + expect(borderlessUpscale).toBe(false); + }); + + test("should disable BorderlessUpscale when ultrawide monitor selects non-ultrawide resolution", async () => { + // Mock an ultrawide screen resolution + await mockScreenResolution(electronApp, { width: 3440, height: 1440 }); + + // Select a non-ultrawide resolution + await selectResolution(window, { width: 7680, height: 4320 }); + + // Read the borderless upscale from the ini file + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + const borderlessUpscale = displayTweaksIni.Render.BorderlessUpscale; + + // Check borderless upscale has been disabled + expect(borderlessUpscale).toBe(false); + }); + + test("should enable BorderlessUpscale when ultrawide monitor selects ultrawide resolution", async () => { + // Mock an ultrawide screen resolution + await mockScreenResolution(electronApp, { width: 3440, height: 1440 }); + + // Select an ultrawide resolution + await selectResolution(window, { width: 3840, height: 1080 }); + + // Read the borderless upscale from the ini file + const displayTweaksIni = await getDisplayTweaksIni(mockFiles); + const borderlessUpscale = displayTweaksIni.Render.BorderlessUpscale; + + // Check borderless upscale has been enabled + expect(borderlessUpscale).toBe(true); + }); + + test("should enable 21:9 resolution support mod when selecting 21:9 ratio", async () => { + // Select a 21:9 resolution (3440x1440 is a common 21:9 resolution) + await selectResolution(window, { width: 3440, height: 1440 }); + + // Check if the 21:9 resolution support mod is enabled + const is219ModEnabled = await isModEnabled( + "Wildlander 21-9 Resolution Support", + mockFiles + ); + expect(is219ModEnabled).toBe(true); + + // Check if the widescreen plugin is enabled + const isWidescreenPluginEnabled = await isPluginEnabled( + "widescreen_skyui_fix.esp", + mockFiles + ); + expect(isWidescreenPluginEnabled).toBe(true); + }); + + test("should disable 21:9 resolution support mod when selecting non-21:9 ratio", async () => { + // First select a 21:9 resolution to ensure the mod is enabled + await selectResolution(window, { width: 3440, height: 1440 }); + + // Then select a 16:9 resolution (1920x1080 is a common 16:9 resolution) + await selectResolution(window, { width: 1920, height: 1080 }); + + // Check if the 21:9 resolution support mod is disabled + const is219ModEnabled = await isModEnabled( + "Wildlander 21-9 Resolution Support", + mockFiles + ); + expect(is219ModEnabled).toBe(false); + }); + + test("should enable 32:9 resolution support mod when selecting 32:9 ratio", async () => { + // Select a 32:9 resolution (3840x1080 is a common 32:9 resolution from mock resolutions) + await selectResolution(window, { width: 3840, height: 1080 }); + + // Check if the 32:9 resolution support mod is enabled + const is329ModEnabled = await isModEnabled( + "Wildlander 32-9 Resolution Support", + mockFiles + ); + expect(is329ModEnabled).toBe(true); + + // Check if the widescreen plugin is enabled + const isWidescreenPluginEnabled = await isPluginEnabled( + "widescreen_skyui_fix.esp", + mockFiles + ); + expect(isWidescreenPluginEnabled).toBe(true); + }); + + test("should disable 32:9 resolution support mod when selecting non-32:9 ratio", async () => { + // First select a 32:9 resolution to ensure the mod is enabled + await selectResolution(window, { width: 3840, height: 1080 }); + + // Then select a 16:9 resolution (1920x1080 is a common 16:9 resolution) + await selectResolution(window, { width: 1920, height: 1080 }); + + // Check if the 32:9 resolution support mod is disabled + const is329ModEnabled = await isModEnabled( + "Wildlander 32-9 Resolution Support", + mockFiles + ); + expect(is329ModEnabled).toBe(false); + }); + + test("should disable both widescreen mods and plugin when selecting 16:9 ratio", async () => { + // First select a 21:9 resolution to ensure the mods are enabled + await selectResolution(window, { width: 3440, height: 1440 }); + + // Then select a 16:9 resolution (1920x1080 is a common 16:9 resolution) + await selectResolution(window, { width: 1920, height: 1080 }); + + // Check if both widescreen mods are disabled + const is219ModEnabled = await isModEnabled( + "Wildlander 21-9 Resolution Support", + mockFiles + ); + const is329ModEnabled = await isModEnabled( + "Wildlander 32-9 Resolution Support", + mockFiles + ); + expect(is219ModEnabled).toBe(false); + expect(is329ModEnabled).toBe(false); + + // Check if the widescreen plugin is disabled + const isWidescreenPluginEnabled = await isPluginEnabled( + "widescreen_skyui_fix.esp", + mockFiles + ); + expect(isWidescreenPluginEnabled).toBe(false); + }); + + test("should disable the Launch Game button during resolution changes", async () => { + const launchButton = window.getByTestId("launch-game"); + + // Verify the button is initially enabled + await expect(launchButton).not.toHaveClass(/c-button--disabled/); + + // Select a resolution using the helper function + // This will trigger the resolution change and wait for it to complete + await selectResolution(window, { width: 1920, height: 1080 }); + + // Verify the button is re-enabled after the resolution change is complete + await expect(launchButton).not.toHaveClass(/c-button--disabled/); + }); +}); diff --git a/src/__tests__/e2e/screenshot.e2e.ts b/src/__tests__/e2e/screenshot.e2e.ts new file mode 100644 index 00000000..1fc13f55 --- /dev/null +++ b/src/__tests__/e2e/screenshot.e2e.ts @@ -0,0 +1,65 @@ +import { expect, Page, test } from "@playwright/test"; +import { + CloseTestApp, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import { navigateAndWait, PAGES } from "./util/navigation"; +import { + addPatronsToLocalStorage, + mockPatreonEndpoint, + mockPatrons, +} from "./util/patreon"; + +/** + * Note: for these tests to run consistently, they must be run within the same environment. + * There are Dockerfile and docker-compose.yaml files provided to run these in a consistent environment. + */ +test.describe("UI Visual Regression", { tag: "@screenshot" }, () => { + let window: Page; + let closeTestApp: CloseTestApp; + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should match the visual snapshot after modpack selection", async () => { + ({ window, closeTestApp } = await startTestApp(test, "modpack-path-home")); + await setModpackAndWaitForAppLoaded(window); + + await mockPatreonEndpoint(window); + + // Add patrons to localStorage so that the Patrons aren't shuffled + await addPatronsToLocalStorage(window, mockPatrons); + + // Reload the page to ensure the mocked values are used + await window.reload(); + + await window.getByTestId("patrons-container").waitFor({ state: "visible" }); + await window.getByTestId("news-container").waitFor({ state: "visible" }); + + await expect(window).toHaveScreenshot("initial-modpack-loaded-page.png"); + }); + + test("should match the visual snapshot of the Community page", async () => { + ({ window, closeTestApp } = await startTestApp( + test, + "modpack-path-community" + )); + await setModpackAndWaitForAppLoaded(window); + + await navigateAndWait(window, PAGES.COMMUNITY); + await expect(window).toHaveScreenshot("community-page.png"); + }); + + test("should match the visual snapshot of the Advanced page", async () => { + ({ window, closeTestApp } = await startTestApp( + test, + "modpack-path-advanced" + )); + await setModpackAndWaitForAppLoaded(window); + + await navigateAndWait(window, PAGES.ADVANCED); + await expect(window).toHaveScreenshot("advanced-page.png"); + }); +}); diff --git a/src/__tests__/e2e/screenshot.e2e.ts-snapshots/advanced-page.png b/src/__tests__/e2e/screenshot.e2e.ts-snapshots/advanced-page.png new file mode 100644 index 00000000..70ca281e Binary files /dev/null and b/src/__tests__/e2e/screenshot.e2e.ts-snapshots/advanced-page.png differ diff --git a/src/__tests__/e2e/screenshot.e2e.ts-snapshots/community-page.png b/src/__tests__/e2e/screenshot.e2e.ts-snapshots/community-page.png new file mode 100644 index 00000000..9b95c7a0 Binary files /dev/null and b/src/__tests__/e2e/screenshot.e2e.ts-snapshots/community-page.png differ diff --git a/src/__tests__/e2e/screenshot.e2e.ts-snapshots/initial-modpack-loaded-page.png b/src/__tests__/e2e/screenshot.e2e.ts-snapshots/initial-modpack-loaded-page.png new file mode 100644 index 00000000..eeb0daf5 Binary files /dev/null and b/src/__tests__/e2e/screenshot.e2e.ts-snapshots/initial-modpack-loaded-page.png differ diff --git a/src/__tests__/e2e/shader-options.e2e.ts b/src/__tests__/e2e/shader-options.e2e.ts new file mode 100644 index 00000000..9ceda9ec --- /dev/null +++ b/src/__tests__/e2e/shader-options.e2e.ts @@ -0,0 +1,220 @@ +import { expect, Page, test } from "@playwright/test"; +import { + CloseTestApp, + MockFilesPaths, + setModpackAndWaitForAppLoaded, + startTestApp, +} from "./util/setup"; +import { mockMessageBox, replaceChildProcessExecWithMock } from "./util/mocks"; +import type { ElectronApplication } from "playwright"; +import { getUserPreferences } from "./util/user-preferences"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { fileContains, filesDoNotExist, filesExist } from "./util/file-utils"; +import fs from "fs/promises"; +import path from "path"; +import { + gameExited, + gameLaunched, + waitForClickEventsEnabled, + waitForMessageBoxShown, +} from "./util/app-state"; +import { isPluginEnabled } from "./util/modlist"; +import { navigateAndWait, PAGES } from "./util/navigation"; +import { ENB_PRESETS, selectEnb } from "./util/enb"; + +test.describe("Shader Options", () => { + let window: Page; + let closeTestApp: CloseTestApp; + let mockFiles: MockFilesPaths; + let electronApp: ElectronApplication; + + test.beforeEach(async () => { + ({ window, closeTestApp, mockFiles, electronApp } = await startTestApp( + test + )); + await setModpackAndWaitForAppLoaded(window); + }); + + test.afterEach(async () => { + await closeTestApp(); + }); + + test("should display the ENB dropdown", async () => { + const enbDropdown = window.getByTestId("enb-dropdown"); + await expect(enbDropdown).toBeVisible(); + }); + + test("should update user preferences when changing ENB preset", async () => { + const selectedEnbValue = await selectEnb(window, ENB_PRESETS.NO_SHADERS); + + const updatedPreferences = await getUserPreferences( + mockFiles.mockFilesPath + ); + const updatedEnbPreference = + updatedPreferences[USER_PREFERENCE_KEYS.ENB_PROFILE]; + + expect(updatedEnbPreference).toBe(selectedEnbValue); + }); + + test("should disable the Launch Game button during ENB changes", async () => { + const launchButton = window.getByTestId("launch-game"); + + // Verify the button is initially enabled + await expect(launchButton).not.toHaveClass(/c-button--disabled/); + + // This will trigger the ENB change and wait for it to complete + await selectEnb(window, ENB_PRESETS.LOW); + + // Verify the button is re-enabled after the ENB change is complete + await expect(launchButton).not.toHaveClass(/c-button--disabled/); + }); + + test("should copy ENB files to Skyrim directory when changing ENB preset", async () => { + await selectEnb(window, ENB_PRESETS.HIGH); + + // Verify the ENB files were copied to the Skyrim directory + const enbDir = `${mockFiles.mockModpackPath}/launcher/ENB Presets/${ENB_PRESETS.HIGH.value}`; + const skyrimDir = `${mockFiles.mockModpackPath}/Stock Game`; + + // Verify all files from the ENB directory exist in the Skyrim directory + const allFilesExist = await filesExist(enbDir, skyrimDir); + expect(allFilesExist).toBe(true); + }); + + test("should remove ENB files from Skyrim directory when selecting No Shaders", async () => { + await selectEnb(window, ENB_PRESETS.HIGH); + + // Verify the ENB files were copied to the Skyrim directory + const enbDir = `${mockFiles.mockModpackPath}/launcher/ENB Presets/${ENB_PRESETS.HIGH.value}`; + const skyrimDir = `${mockFiles.mockModpackPath}/Stock Game`; + + const filesExistBefore = await filesExist(enbDir, skyrimDir); + expect(filesExistBefore).toBe(true); + + await selectEnb(window, ENB_PRESETS.NO_SHADERS); + + // Verify ALL ENB files were removed from the Skyrim directory + // This ensures that every single file from the preset has been removed + const allFilesRemoved = await filesDoNotExist(enbDir, skyrimDir); + expect(allFilesRemoved).toBe(true); + }); + + test("should sync modified ENB files back to preset directory when changing ENB preset", async () => { + await selectEnb(window, ENB_PRESETS.HIGH); + + const highEnbDir = `${mockFiles.mockModpackPath}/launcher/ENB Presets/${ENB_PRESETS.HIGH.value}`; + const skyrimDir = `${mockFiles.mockModpackPath}/Stock Game`; + + const fileToModify = "enblocal.ini"; + const originalFilePath = path.join(highEnbDir, fileToModify); + const copiedFilePath = path.join(skyrimDir, fileToModify); + + const modificationText = "#This is a test modification"; + const originalEnbLocal = await fs.readFile(copiedFilePath, "utf-8"); + await fs.writeFile( + copiedFilePath, + originalEnbLocal + "\n" + modificationText + ); + + // Mock the exec method to prevent actual game launch + const execHandle = await replaceChildProcessExecWithMock(electronApp); + + const launchButton = window.getByTestId("launch-game"); + + const gameLaunchedPromise = gameLaunched(window); + + await launchButton.click(); + + // Confirm the game is launched before continuing + await gameLaunchedPromise; + + await execHandle.evaluate((handle) => handle.resolveExec()); + + await gameExited(window); + + await selectEnb(window, ENB_PRESETS.LOW); + + // Verify the modified enblocal.ini file was synced back to the original ENB preset directory + expect(await fileContains(originalFilePath, modificationText)).toBe(true); + }); + + test("should create ENB backups on app start", async () => { + // The backup should already be created during app initialization + const originalEnbDir = `${mockFiles.mockModpackPath}/launcher/ENB Presets`; + const backupEnbDir = `${mockFiles.mockModpackPath}/launcher/_backups/ENB Presets`; + + // Verify the backup directory exists + expect(async () => fs.access(backupEnbDir)).not.toThrow(); + + // Verify all files from the original ENB directory exist in the backup directory with the same structure + // This recursively checks that all files and subdirectories match + const allFilesExistRecursively = await filesExist( + originalEnbDir, + backupEnbDir + ); + expect(allFilesExistRecursively).toBe(true); + }); + + test("should disable NightEyeENBFix_PredatorVision.esp plugin when selecting No Shaders and re-enable when selecting High preset", async () => { + // First, select a shader preset to ensure we're starting from a known state + await selectEnb(window, ENB_PRESETS.HIGH); + + await selectEnb(window, ENB_PRESETS.NO_SHADERS); + + // Verify the NightEyeENBFix_PredatorVision.esp plugin is disabled + const isPluginDisabled = !(await isPluginEnabled( + "NightEyeENBFix_PredatorVision.esp", + mockFiles + )); + + expect(isPluginDisabled).toBe(true); + + await selectEnb(window, ENB_PRESETS.HIGH); + + // Verify the plugin is enabled again + const isPluginEnabledAgain = await isPluginEnabled( + "NightEyeENBFix_PredatorVision.esp", + mockFiles + ); + + expect(isPluginEnabledAgain).toBe(true); + }); + + test("should restore ENB presets when clicking the Restore ENB Presets button", async () => { + const fileToModify = "enbseries.ini"; + const originalFilePath = path.join( + `${mockFiles.mockModpackPath}/launcher/ENB Presets/${ENB_PRESETS.LOW.value}/${fileToModify}` + ); + const backupFilePath = path.join( + `${mockFiles.mockModpackPath}/launcher/_backups/ENB Presets/${ENB_PRESETS.LOW.value}/${fileToModify}` + ); + + await navigateAndWait(window, PAGES.ADVANCED); + + // Select a shader preset to ensure we're starting from a known state + await selectEnb(window, ENB_PRESETS.LOW); + + const originalContent = await fs.readFile(originalFilePath, "utf-8"); + const backupContent = await fs.readFile(backupFilePath, "utf-8"); + + await fs.writeFile( + originalFilePath, + originalContent + "\n#This is a test modification for restore test" + ); + + const messageBoxHandle = await mockMessageBox(electronApp, 1); + + await window.getByTestId("restore-enb-presets").click(); + + await waitForMessageBoxShown(messageBoxHandle); + await waitForClickEventsEnabled(window); + + const restoredContent = await fs.readFile(originalFilePath, "utf-8"); + const currentBackupContent = await fs.readFile(backupFilePath, "utf-8"); + + // Verify the content of the restored file matches the backup file + expect(restoredContent).toBe(currentBackupContent); + // Verify the backup file was not modified during the restore process + expect(currentBackupContent).toBe(backupContent); + }); +}); diff --git a/src/__tests__/e2e/util/app-state.ts b/src/__tests__/e2e/util/app-state.ts new file mode 100644 index 00000000..c97f43bf --- /dev/null +++ b/src/__tests__/e2e/util/app-state.ts @@ -0,0 +1,126 @@ +import type { Page } from "@playwright/test"; +import { waitForClass } from "./element"; +import type { JSHandle } from "playwright"; + +interface DialogDetails { + title: string; + content: string; + dialogShown: boolean; +} + +interface MessageBoxDetails { + messageBoxShown: boolean; + messageBoxTitle: string; + messageBoxMessage: string; +} + +/** + * Waits for the game running modal to appear. + * @param window The Playwright Page object + * @returns Promise that resolves when the game running modal appears + */ +export const gameLaunched = async (window: Page) => { + return window + .getByTestId("game-running-modal") + .waitFor({ state: "attached" }); +}; + +/** + * Waits for the game running modal to disappear. + * @param window The Playwright Page object + * @returns Promise that resolves when the game running modal disappears + */ +export const gameExited = async (window: Page) => { + return window.getByTestId("game-running-modal").waitFor({ state: "hidden" }); +}; + +/** + * Helper function to wait for the launch button to be disabled. + * @param window The Playwright Page object + * @returns Promise that resolves when the launch button is disabled + */ + +export const waitForLaunchButtonDisabled = async (window: Page) => { + return waitForClass(window, { + testId: "launch-game", + className: "c-button--disabled", + shouldExist: true, + }); +}; + +/** + * Helper function to wait for the launch button to be enabled. + * @param window The Playwright Page object + * @returns Promise that resolves when the launch button is enabled + */ +export const waitForLaunchButtonEnabled = async (window: Page) => { + return waitForClass(window, { + testId: "launch-game", + className: "c-button--disabled", + shouldExist: false, + }); +}; + +/** + * Waits for click events to be disabled (u-disable-click-events class added) + * Useful to know if application-wide click events are disabled + * @param window The Playwright Page object + * @returns Promise that resolves when click events are disabled + */ +export const waitForClickEventsDisabled = async ( + window: Page +): Promise => { + await waitForClass(window, { + testId: "app-page", + className: "u-disable-click-events", + shouldExist: true, + }); +}; + +/** + * Waits for click events to be enabled (u-disable-click-events class removed) + * Useful to know if application-wide click events are enabled + * @param window The Playwright Page object + * @returns Promise that resolves when click events are enabled + */ +export const waitForClickEventsEnabled = async ( + window: Page +): Promise => { + await waitForClass(window, { + testId: "app-page", + className: "u-disable-click-events", + shouldExist: false, + }); +}; + +/** + * Waits for a dialog to be shown and returns its details + * @param handle - The JSHandle returned by the mockErrorDialog function + * @returns A promise that resolves with the dialog details when the dialog is shown + */ +export const waitForDialogShown = async ( + handle: JSHandle<() => DialogDetails> +): Promise => { + return handle.evaluate(async (fn) => { + while (!fn().dialogShown) { + await new Promise((resolve) => setTimeout(resolve, 100)); + } + return fn(); + }); +}; + +/** + * Waits for a message box to be shown and returns its details + * @param handle - The JSHandle returned by the mockMessageBox function + * @returns A promise that resolves with the message box details when the message box is shown + */ +export const waitForMessageBoxShown = async ( + handle: JSHandle<() => MessageBoxDetails> +): Promise => { + return handle.evaluate(async (fn) => { + while (!fn().messageBoxShown) { + await new Promise((resolve) => setTimeout(resolve, 100)); + } + return fn(); + }); +}; diff --git a/src/__tests__/e2e/util/config.ts b/src/__tests__/e2e/util/config.ts new file mode 100644 index 00000000..1aa5d865 --- /dev/null +++ b/src/__tests__/e2e/util/config.ts @@ -0,0 +1,15 @@ +import path from "path"; + +const root = path.resolve(`${__dirname}/../../../..`); +const playwrightDir = `${root}/.playwright`; + +export const config = () => ({ + paths: { + root, + playwright: playwrightDir, + coverage: `${playwrightDir}/coverage`, + screenshots: `${playwrightDir}/screenshots/`, + mockFiles: `${playwrightDir}/mock-files`, + instrumented: `${playwrightDir}/dist-instrumented`, + }, +}); diff --git a/src/__tests__/e2e/util/element.ts b/src/__tests__/e2e/util/element.ts new file mode 100644 index 00000000..57008225 --- /dev/null +++ b/src/__tests__/e2e/util/element.ts @@ -0,0 +1,94 @@ +import type { Page } from "@playwright/test"; + +type ClassOptions = { + /** The testid of the element to check */ + testId: string; + /** The class name to check for */ + className: string; + /** Whether to check if the class exists (true) or not exists (false) */ + shouldExist: boolean; +}; + +/** + * Helper function to check if an element has or doesn't have a specific class. + * @param window The Playwright Page object + * @param options The options for checking class existence + * @returns Promise that resolves to true if the condition is met, false otherwise + */ +export const classExists = async ( + window: Page, + { testId, className, shouldExist }: ClassOptions +): Promise => { + const element = window.getByTestId(testId); + const classes = (await element.getAttribute("class"))?.split(" ") ?? []; + return classes.includes(className) === shouldExist; +}; + +/** + * Helper function to wait for an element to have or not have a specific class. + * Uses MutationObserver to watch for class changes, which is more reliable than polling. + * @param window The Playwright Page object + * @param options The options for waiting on class changes + * @returns Promise that resolves when the condition is met + */ +export const waitForClass = async (window: Page, options: ClassOptions) => { + const { testId, className, shouldExist } = options; + + if (await classExists(window, options)) { + return; + } + + // If the class does not exist, wait for it to be added or removed + return window.evaluate( + ({ testId: i, className: c, shouldExist: exists }) => { + return new Promise((resolve, reject) => { + const element = document.querySelector(`[data-testid="${i}"]`); + + if (!element) { + reject(new Error(`Element with testId "${i}" not found`)); + return; + } + + const observer = new MutationObserver(() => { + // Check if the expected condition is met + if (!element) { + observer.disconnect(); + reject( + new Error(`Element with testId "${i}" was removed from DOM`) + ); + return; + } + if (!!element.classList.contains(c) === exists) { + observer.disconnect(); + resolve(true); + } + }); + + // Start observing the element for class changes + observer.observe(element, { + attributes: true, + attributeFilter: ["class"], + }); + + // Set a timeout to avoid hanging indefinitely if the mutation never occurs + setTimeout(() => { + observer.disconnect(); + if (!element) { + reject( + new Error(`Element with testId "${i}" was removed from DOM`) + ); + return; + } + const currentClasses = Array.from(element.classList).join(", "); + const action = exists ? "be added to" : "be removed from"; + reject( + new Error( + `Timed out waiting for class "${c}" to ${action} element with testId "${i}". Current classes: ${currentClasses}` + ) + ); + }, 5000); + }); + }, + { testId, className, shouldExist } + ); +}; diff --git a/src/__tests__/e2e/util/enb.ts b/src/__tests__/e2e/util/enb.ts new file mode 100644 index 00000000..440317b0 --- /dev/null +++ b/src/__tests__/e2e/util/enb.ts @@ -0,0 +1,59 @@ +import type { Page } from "@playwright/test"; +import { + waitForLaunchButtonDisabled, + waitForLaunchButtonEnabled, +} from "./app-state"; + +/** + * Hardcoded ENB presets configuration based on the mock namesENB.json file + * - value: The actual preset name used in the system + * - text: The display text shown to the user + */ +export const ENB_PRESETS = { + ULTRA: { + value: "1_Shaders_ULTRA", + text: "Ultra Shaders", + }, + HIGH: { + value: "1_Shaders_HIGH", + text: "High Shaders", + }, + LOW: { + value: "1_Shaders_LOW", + text: "Low Shaders", + }, + NO_SHADERS: { + value: "noEnb", + text: "No Shaders", + }, +}; + +/** + * Helper function to select an ENB preset from the dropdown + * @param window The Playwright Page object + * @param preset The ENB preset object to select + * @returns The selected ENB preset value (used for verification in tests) + */ +export const selectEnb = async ( + window: Page, + preset: (typeof ENB_PRESETS)[keyof typeof ENB_PRESETS] +) => { + const enbDropdown = window.getByTestId("enb-dropdown"); + await enbDropdown.getByTestId("dropdown-head").click(); + + // Get the promise for waiting for the button to be disabled before clicking + // This ensures we capture the disabled state even if it happens very quickly + const disabledPromise = waitForLaunchButtonDisabled(window); + + // Select the ENB preset + const optionsContainer = enbDropdown.getByTestId("dropdown-options"); + await optionsContainer.getByText(preset.text).click(); + + // Now await the promise to ensure the button was disabled at least once after the click + await disabledPromise; + + // Wait for the ENB change to complete (button enabled again) + await waitForLaunchButtonEnabled(window); + + return preset.value; +}; diff --git a/src/__tests__/e2e/util/file-utils.ts b/src/__tests__/e2e/util/file-utils.ts new file mode 100644 index 00000000..f2471ba9 --- /dev/null +++ b/src/__tests__/e2e/util/file-utils.ts @@ -0,0 +1,138 @@ +import fs from "fs/promises"; +import path from "path"; + +/** + * Checks if a file contains specific content. + * This is useful for verifying that changes to a file were synced correctly. + * + * @param filePath The path to the file to check + * @param expectedContent The content to check for + * @returns A promise that resolves to true if the file contains the expected content, false otherwise + */ +export const fileContains = async ( + filePath: string, + expectedContent: string +): Promise => { + try { + const content = await fs.readFile(filePath, "utf-8"); + return content.includes(expectedContent); + } catch (error) { + console.error(`Error checking file ${filePath}:`, error); + return false; + } +}; + +/** + * Recursively checks if all files from a source directory exist in a destination directory + * with the same relative paths and identical content. + * + * @param sourceDir The source directory path + * @param destDir The destination directory path + * @param ignoreFiles Optional array of filenames to ignore in the comparison + * @returns A promise that resolves to true if all files exist and match, false otherwise + */ +export const filesExist = async ( + sourceDir: string, + destDir: string, + ignoreFiles: string[] = [] +): Promise => { + try { + const files = await getFilesRecursively(sourceDir); + + const checks = await Promise.all( + files.map(async (file) => { + const relativePath = path.relative(sourceDir, file); + if (ignoreFiles.includes(path.basename(file))) { + return true; + } + const destPath = path.join(destDir, relativePath); + + try { + await fs.access(destPath); + const [sourceContent, destContent] = await Promise.all([ + fs.readFile(file), + fs.readFile(destPath), + ]); + return sourceContent.equals(destContent); + } catch (error) { + console.error(`Error checking files ${file} and ${destPath}:`, error); + return false; + } + }) + ); + + return checks.every(Boolean); + } catch (error) { + console.error("Error checking files existence:", { + sourceDir, + destDir, + error: error instanceof Error ? error.message : error, + }); + return false; + } +}; +/** + * Recursively checks if all files from a source directory do NOT exist in a destination directory. + * This is useful for verifying that files have been completely removed. + * + * @param sourceDir The source directory path + * @param destDir The destination directory path + * @returns A promise that resolves to true if all files do NOT exist, false if any file exists + */ +export const filesDoNotExist = async ( + sourceDir: string, + destDir: string +): Promise => { + try { + const files = await getFilesRecursively(sourceDir); + + const checks = await Promise.all( + files.map(async (file) => { + const relativePath = path.relative(sourceDir, file); + const destPath = path.join(destDir, relativePath); + + try { + await fs.access(destPath); + // File exists + return false; + } catch { + // File doesn't exist + return true; + } + }) + ); + + // Return true only if ALL files do NOT exist + return checks.every(Boolean); + } catch (error) { + console.error("Error checking files non-existence:", { + sourceDir, + destDir, + error: error instanceof Error ? error.message : error, + }); + return false; + } +}; +/** + * Recursively gets all file paths in a directory + * + * @param dir The directory path + * @returns A promise that resolves to an array of file paths + */ +const getFilesRecursively = async (dir: string): Promise => { + const entries = await fs.readdir(dir, { withFileTypes: true }); + + const files = await Promise.all( + entries.map(async (entry) => { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + return getFilesRecursively(fullPath); + } + + return fullPath; + }) + ); + + return files.flat(); +}; diff --git a/src/__tests__/e2e/util/files/ModOrganizer.ini.ts b/src/__tests__/e2e/util/files/ModOrganizer.ini.ts new file mode 100644 index 00000000..a8e803e3 --- /dev/null +++ b/src/__tests__/e2e/util/files/ModOrganizer.ini.ts @@ -0,0 +1,16 @@ +import { stringify } from "ini"; + +export const ModOrganizerIni = stringify({ + customExecutables: { + size: 1, + "1\\binary": "mock/first/custom/executable.exe", + "1\\title": "SKSE", + }, + General: { + gameName: "Skyrim Special Edition", + selected_profile: "@ByteArray(0_Wildlander-STANDARD)", + }, + Settings: { + lock_gui: false, + }, +}); diff --git a/src/__tests__/e2e/util/files/SSEDisplayTweaks.ini.ts b/src/__tests__/e2e/util/files/SSEDisplayTweaks.ini.ts new file mode 100644 index 00000000..06597457 --- /dev/null +++ b/src/__tests__/e2e/util/files/SSEDisplayTweaks.ini.ts @@ -0,0 +1,10 @@ +import { stringify } from "ini"; + +export const SSEDisplayTweaks = stringify({ + Render: { + Fullscreen: false, + Borderless: true, + BorderlessUpscale: true, + Resolution: "3840x2160", + }, +}); diff --git a/src/__tests__/e2e/util/files/namesENB.json b/src/__tests__/e2e/util/files/namesENB.json new file mode 100644 index 00000000..1411d5e1 --- /dev/null +++ b/src/__tests__/e2e/util/files/namesENB.json @@ -0,0 +1,14 @@ +[ + { + "real": "1_Shaders_ULTRA", + "friendly": "Ultra Shaders" + }, + { + "real": "1_Shaders_HIGH", + "friendly": "High Shaders" + }, + { + "real": "1_Shaders_LOW", + "friendly": "Low Shaders" + } +] diff --git a/src/__tests__/e2e/util/files/namesMO2.json b/src/__tests__/e2e/util/files/namesMO2.json new file mode 100644 index 00000000..4c5878d1 --- /dev/null +++ b/src/__tests__/e2e/util/files/namesMO2.json @@ -0,0 +1,22 @@ +[ + { + "real": "1_Wildlander-ULTRA", + "friendly": "Ultra Graphics" + }, + { + "real": "1_Wildlander-HIGH", + "friendly": "High Graphics" + }, + { + "real": "1_Wildlander-MEDIUM", + "friendly": "Medium Graphics" + }, + { + "real": "1_Wildlander-LOW", + "friendly": "Low Graphics" + }, + { + "real": "1_Wildlander-POTATO", + "friendly": "Potato Graphics" + } +] diff --git a/src/__tests__/e2e/util/files/profiles/Skyrim.ini.ts b/src/__tests__/e2e/util/files/profiles/Skyrim.ini.ts new file mode 100644 index 00000000..7a3ff879 --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/Skyrim.ini.ts @@ -0,0 +1,154 @@ +export const skyrim = () => ` +[Actor] +bUseNavMeshForMovement=0 + +[Animation] +fMaxFrameCounterDifferenceToConsiderVisible=0.06666667 + +[Archive] +bLoadArchiveInMemory=1 +sArchiveToLoadInMemoryList=Skyrim - Animations.bsa +sResourceArchiveList=Skyrim - Misc.bsa, Skyrim - Shaders.bsa, Skyrim - Interface.bsa, Skyrim - Animations.bsa, Skyrim - Meshes0.bsa, Skyrim - Meshes1.bsa, Skyrim - Sounds.bsa +sResourceArchiveList2=Skyrim - Voices_en0.bsa, Skyrim - Textures0.bsa, Skyrim - Textures1.bsa, Skyrim - Textures2.bsa, Skyrim - Textures3.bsa, Skyrim - Textures4.bsa, Skyrim - Textures5.bsa, Skyrim - Textures6.bsa, Skyrim - Textures7.bsa, Skyrim - Textures8.bsa, Skyrim - Patch.bsa + +[Audio] +fMenuModeFadeInTime=1.0 +fMenuModeFadeOutTime=3.0 +fMusicDuckingSeconds=6.0 +fMusicUnDuckingSeconds=8.0 + +[Camera] +fMouseWheelZoomSpeed=10.00 + +[Combat] +bForceNPCsUseAmmo=1 +f1PArrowTiltUpAngle=0.7 +f1PBoltTiltUpAngle=0.7 +f3PArrowTiltUpAngle=0.7 +fMagnetismLookingMult=0.0 +fMagnetismStrafeHeadingMult=0.0 + +[Controls] +bGamepadLookApplySnapToAxis=0 +fGamepadHeadingXScale=1 +fGamepadHeadingYScale=.80 +fGamepadLookAccelPitchMult=1.4 +fGamepadLookAccelSec=.1 +fGamepadLookAccelYawMult=1.4 +fLThumbDeadzone=0.2 +fLThumbDeadzoneMax=.97 +fMaxLookRampUpDelta=1.00 +fMouseHeadingSensitivityMax=0.0731 +fMouseHeadingXScale=0.0200 +fMouseHeadingYScale=0.8500 +fRThumbDeadzone=0.1 +fRThumbDeadzoneMax=.97 + +[Decals] +uMaxSkinDecalPerActor=40 + +[Display] +bDeactivateAOOnSnow=1 +bEnableSnowRimLighting=0 +bLockFrameRate=0 +bVolumetricLightingDisableInterior=1 +fDDOFFocusCenterweightExt=2 +fDecalLifetime=300 +fDefaultWorldFOV=105 +fDOFMaxDepthParticipation=10000 +fDynamicDOFFarBlur=0.4 +fFirstSliceDistance=2800 +fGlobalBrightnessBoost=0.0000 +fGlobalContrastBoost=0.0000 +fGlobalSaturationBoost=0.0000 +fLightLODRange=33750 +fLightLODStartFade=3500.0 +fMaxHeightShadowCastingTrees=30000.0000 +fShadowDirectionalBiasScale=0.15 +fSparklesIntensity=0.3 +fSunShadowUpdateTime=1 +fSunUpdateThreshold=0.5 +fTreesMidLODSwitchDist=9999999.0000 + +[General] +bBackgroundLoadVMData=1 +bBorderRegionsEnabled=1 +fFlickeringLightDistance=8192 +sIntroSequence= +sLanguage=ENGLISH +sTestFile1=Dawnguard.esm +sTestFile2=HearthFires.esm +sTestFile3=Dragonborn.esm +uExterior Cell Buffer=36 +uGridsToLoad=5 + +[GeneralWarnings] +SGeneralMasterMismatchWarning=One or more plugins could not find the correct versions of the master files they depend on. Errors may occur during load or game play. Check the "Warnings.txt" file for more information. + +[Grass] +bAllowCreateGrass=1 +bAllowLoadGrass=0 +bDrawShaderGrass=1 +fGrassFadeRange=9375 +fGrassMaxStartFadeDistance=7000.0000 +fGrassMinStartFadeDistance=0.0000 +fGrassWindMagnitudeMax=125 +fGrassWindMagnitudeMin=5 +iGrassCellRadius=2 +iMaxGrassTypesPerTexure=3 +iMinGrassSize=40 + +[HAVOK] +fMaxTime=0.01666667 +fMaxTimeComplex=0.03333333 + +[Imagespace] +iRadialBlurLevel=2 + +[Interface] +bShowTutorials=0 + +[Launcher] +bEnableFileSelection=1 + +[LightingShader] +fDecalLODFadeEnd=0.6 +fDecalLODFadeStart=0.5 +fEnvmapLODFadeEnd=0.7 +fEnvmapLODFadeStart=0.6 + +[LOD] +fDistanceMultiplier=1.00 + +[MapMenu] +fMapWorldMaxPitch=90 +fMapWorldMinPitch=0 +fMapWorldYawRange=400 + +[Menu] +iConsoleSizeScreenPercent=40 +iConsoleTextSize=20 + +[Papyrus] +bEnableLogging=0 +bEnableProfiling=0 +bEnableTrace=0 +bLoadDebugInformation=0 +fPostLoadUpdateTimeMS=500 +iMaxMemoryPageSize=512 +iMinMemoryPageSize=128 + +[SaveGame] +iAutoSaveCount=3 + +[Trees] +bEnableTreeAnimations=1 +bEnableTrees=1 +fUpdateBudget=1.5 + +[Water] +bReflectLODLand=1 +bReflectLODObjects=1 +bReflectLODTrees=1 +bReflectSky=0 +`; diff --git a/src/__tests__/e2e/util/files/profiles/SkyrimCustom.ini.ts b/src/__tests__/e2e/util/files/profiles/SkyrimCustom.ini.ts new file mode 100644 index 00000000..d69326dc --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/SkyrimCustom.ini.ts @@ -0,0 +1,154 @@ +export const skyrimCustom = () => ` +[Actor] +bUseNavMeshForMovement=0 + +[Animation] +fMaxFrameCounterDifferenceToConsiderVisible=0.06666667 + +[Archive] +bLoadArchiveInMemory=1 +sArchiveToLoadInMemoryList=Skyrim - Animations.bsa +sResourceArchiveList=Skyrim - Misc.bsa, Skyrim - Shaders.bsa, Skyrim - Interface.bsa, Skyrim - Animations.bsa, Skyrim - Meshes0.bsa, Skyrim - Meshes1.bsa, Skyrim - Sounds.bsa +sResourceArchiveList2=Skyrim - Voices_en0.bsa, Skyrim - Textures0.bsa, Skyrim - Textures1.bsa, Skyrim - Textures2.bsa, Skyrim - Textures3.bsa, Skyrim - Textures4.bsa, Skyrim - Textures5.bsa, Skyrim - Textures6.bsa, Skyrim - Textures7.bsa, Skyrim - Textures8.bsa, Skyrim - Patch.bsa + +[Audio] +fMenuModeFadeInTime=1.0 +fMenuModeFadeOutTime=3.0 +fMusicDuckingSeconds=6.0 +fMusicUnDuckingSeconds=8.0 + +[Camera] +fMouseWheelZoomSpeed=10.00 + +[Combat] +bForceNPCsUseAmmo=1 +f1PArrowTiltUpAngle=0.7 +f1PBoltTiltUpAngle=0.7 +f3PArrowTiltUpAngle=0.7 +fMagnetismLookingMult=0.0 +fMagnetismStrafeHeadingMult=0.0 + +[Controls] +bGamepadLookApplySnapToAxis=0 +fGamepadHeadingXScale=1 +fGamepadHeadingYScale=.80 +fGamepadLookAccelPitchMult=1.4 +fGamepadLookAccelSec=.1 +fGamepadLookAccelYawMult=1.4 +fLThumbDeadzone=0.2 +fLThumbDeadzoneMax=.97 +fMaxLookRampUpDelta=1.00 +fMouseHeadingSensitivityMax=0.0731 +fMouseHeadingXScale=0.0200 +fMouseHeadingYScale=0.8500 +fRThumbDeadzone=0.1 +fRThumbDeadzoneMax=.97 + +[Decals] +uMaxSkinDecalPerActor=40 + +[Display] +bDeactivateAOOnSnow=1 +bEnableSnowRimLighting=0 +bLockFrameRate=0 +bVolumetricLightingDisableInterior=1 +fDDOFFocusCenterweightExt=2 +fDecalLifetime=300 +fDefaultWorldFOV=105 +fDOFMaxDepthParticipation=10000 +fDynamicDOFFarBlur=0.4 +fFirstSliceDistance=2800 +fGlobalBrightnessBoost=0.0000 +fGlobalContrastBoost=0.0000 +fGlobalSaturationBoost=0.0000 +fLightLODRange=33750 +fLightLODStartFade=3500.0 +fMaxHeightShadowCastingTrees=30000.0000 +fShadowDirectionalBiasScale=0.15 +fSparklesIntensity=0.3 +fSunShadowUpdateTime=1 +fSunUpdateThreshold=0.5 +fTreesMidLODSwitchDist=9999999.0000 + +[General] +bBackgroundLoadVMData=1 +bBorderRegionsEnabled=1 +fFlickeringLightDistance=8192 +sIntroSequence= +sLanguage=ENGLISH +sTestFile1=Dawnguard.esm +sTestFile2=HearthFires.esm +sTestFile3=Dragonborn.esm +uExterior Cell Buffer=36 +uGridsToLoad=5 + +[GeneralWarnings] +SGeneralMasterMismatchWarning=One or more plugins could not find the correct versions of the master files they depend on. Errors may occur during load or game play. Check the "Warnings.txt" file for more information. + +[Grass] +bAllowCreateGrass=1 +bAllowLoadGrass=0 +bDrawShaderGrass=1 +fGrassFadeRange=9375 +fGrassMaxStartFadeDistance=7000.0000 +fGrassMinStartFadeDistance=0.0000 +fGrassWindMagnitudeMax=125 +fGrassWindMagnitudeMin=5 +iGrassCellRadius=2 +iMaxGrassTypesPerTexure=3 +iMinGrassSize=40 + +[HAVOK] +fMaxTime=0.01666667 +fMaxTimeComplex=0.03333333 + +[Imagespace] +iRadialBlurLevel=2 + +[Interface] +bShowTutorials=0 + +[Launcher] +bEnableFileSelection=1 + +[LightingShader] +fDecalLODFadeEnd=0.6 +fDecalLODFadeStart=0.5 +fEnvmapLODFadeEnd=0.7 +fEnvmapLODFadeStart=0.6 + +[LOD] +fDistanceMultiplier=1.00 + +[MapMenu] +fMapWorldMaxPitch=90 +fMapWorldMinPitch=0 +fMapWorldYawRange=400 + +[Menu] +iConsoleSizeScreenPercent=40 +iConsoleTextSize=20 + +[Papyrus] +bEnableLogging=0 +bEnableProfiling=0 +bEnableTrace=0 +bLoadDebugInformation=0 +fPostLoadUpdateTimeMS=500 +iMaxMemoryPageSize=512 +iMinMemoryPageSize=128 + +[SaveGame] +iAutoSaveCount=3 + +[Trees] +bEnableTreeAnimations=1 +bEnableTrees=1 +fUpdateBudget=1.5 + +[Water] +bReflectLODLand=1 +bReflectLODObjects=1 +bReflectLODTrees=1 +bReflectSky=0 +`; diff --git a/src/__tests__/e2e/util/files/profiles/SkyrimPrefs.ini.ts b/src/__tests__/e2e/util/files/profiles/SkyrimPrefs.ini.ts new file mode 100644 index 00000000..dcf6f97b --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/SkyrimPrefs.ini.ts @@ -0,0 +1,188 @@ +export const skyrimPrefs = () => ` +[AudioMenu] +fAudioMasterVolume = 1.0000 +fVal0 = 0.7500 +fVal1 = 0.4500 +fVal2 = 0.7000 +fVal3 = 0.4000 +fVal4 = 1.0000 +fVal5 = 0.6500 +fVal6 = 0.7500 +fVal7 = 0.3000 +uID0 = 94881 +uID1 = 1007612 +uID2 = 554685 +uID3 = 466532 +uID4 = 522251 +uID5 = 410705 +uID6 = 106685 +uID7 = 2768284270 + +[Bethesda.net] +uPersistentUuidData0 = 650138001 +uPersistentUuidData1 = 2111390998 +uPersistentUuidData2 = 2710625362 +uPersistentUuidData3 = 3873081501 + +[BlurShader] + +[Clouds] +fCloudLevel0Distance = 16384.0000 +fCloudLevel1Distance = 32768.0000 +fCloudLevel2Distance = 262144.0000 +fCloudNearFadeDistance = 9000.0000 + +[Controls] +bAlwaysRunByDefault = 1 +bGamePadRumble = 1 +bInvertYValues = 0 +bUseKinect = 0 +fGamepadHeadingSensitivity = 0.9445 +fMouseHeadingSensitivity = 0.0231 + +[Decals] +bDecals = 1 +bSkinnedDecals = 1 +uMaxDecals = 200 +uMaxSkinDecals = 50 + +[Display] +bBorderless = 1 +bDrawLandShadows = 1 +bEnableImprovedSnow = 0 +bEnableProjecteUVDiffuseNormals = 1 +bForceCreateTarget = 0 +bFull Screen = 1 +bFXAAEnabled = 0 +bIBLFEnable = 1 +bIndEnable = 0 +bSAO_CS_Enable = 0 +bSAOEnable = 0 +bScreenSpaceReflectionEnabled = 1 +bToggleSparkles = 1 +bTreesReceiveShadows = 1 +bUse64bitsHDRRenderTarget = 0 +bUsePrecipitationOcclusion = 1 +bUseTAA = 1 +bVolumetricLightingEnable = 1 +fDynamicDOFBlurMultiplier = 0.8000 +ffocusShadowMapDoubleEveryXUnit = 450.0000 +fGamma = 1.1200 +fInteriorShadowDistance = 3000.0000 +fLeafAnimDampenDistEnd = 4600.0000 +fLeafAnimDampenDistStart = 3600.0000 +fLightLODStartFade = 3750.0000 +fMeshLODFadeBoundDefault = 256.0000 +fMeshLODFadePercentDefault = 1.2000 +fMeshLODLevel1FadeDist = 10240.0000 +fMeshLODLevel1FadeTreeDistance = 8960.0000 +fMeshLODLevel2FadeDist = 7680.0000 +fMeshLODLevel2FadeTreeDistance = 5376.0000 +fProjectedUVDiffuseNormalTilingScale = 0.2000 +fProjectedUVNormalDetailTilingScale = 0.8000 +fShadowDistance = 8000.0000 +fTreesMidLODSwitchDist = 8960.0000 +iMaxDecalsPerFrame = 800 +iMaxSkinDecalsPerFrame = 250 +iNumFocusShadow = 4 +iNumSplits = 2 +iReflectionResolutionDivider = 2 +iSaveGameScreenShotHeight = 192 +iSaveGameScreenShotHeighWSt = 192 +iSaveGameScreenShotWidth = 256 +iSaveGameScreenShotWidthWS = 320 +iScreenShotIndex = 274 +iShadowMapResolution = 2048 +iShadowMaskQuarter = 4 +iSize H = 2160 +iSize W = 3840 +iVolumetricLightingQuality = 2 +iVSyncPresentInterval = 1 +uBookRatio = 2 + +[GamePlay] +bShowFloatingQuestMarkers = 1 +bShowQuestMarkers = 1 +iDifficulty = 2 + +[General] +bEnableStoryManagerLogging = 0 +fLightingOutputColourClampPostEnv = 1.0000 +fLightingOutputColourClampPostLit = 1.0000 +fLightingOutputColourClampPostSpec = 1.0000 +iStoryManagerLoggingEvent = -1 +uLargeRefLODGridSize = 9 + +[Grass] +fGrassMaxStartFadeDistance = 7125.0000 +fGrassMinStartFadeDistance = 0.0000 +fGrassStartFadeDistance = 3125.0000 + +[Imagespace] +bDoDepthOfField = 1 +bLensFlare = 1 + +[Interface] +bDialogueSubtitles = 1 +bGeneralSubtitles = 1 +bShowCompass = 1 +fMouseCursorSpeed = 1.0000 + +[Launcher] +sD3DDevice = "NVIDIA GeForce RTX 3080" + +[LOD] +fLODFadeOutMultActors = 15.0000 +fLODFadeOutMultItems = 4.5000 +fLODFadeOutMultObjects = 17.5000 +fLODFadeOutMultSkyCell = 1.0000 + +[MAIN] +bCrosshairEnabled = 0 +bGamepadEnable = 1 +bSaveOnPause = 1 +bSaveOnRest = 1 +bSaveOnTravel = 0 +bSaveOnWait = 1 +fHUDOpacity = 1.0000 +fSkyCellRefFadeDistance = 600000.0000 + +[NavMesh] +fCoverSideHighAlpha = 0.8000 +fCoverSideLowAlpha = 0.6500 +fEdgeDistFromVert = 10.0000 +fEdgeFullAlpha = 1.0000 +fEdgeHighAlpha = 0.7500 +fEdgeLowAlpha = 0.5000 +fEdgeThickness = 10.0000 +fLedgeBoxHalfHeight = 25.0000 +fObstacleAlpha = 0.5000 +fPointSize = 2.5000 +fTriangleFullAlpha = 0.7000 +fTriangleHighAlpha = 0.3500 +fTriangleLowAlpha = 0.2000 + +[Particles] +iMaxDesired = 2000 + +[SaveGame] +fAutosaveEveryXMins = 15.0000 + +[TerrainManager] +bShowLODInEditor = 1 +fBlockLevel0Distance = 46443.0000 +fBlockLevel1Distance = 69665.0000 +fBlockMaximumDistance = 100000.0000 +fSplitDistanceMult = 1.0890 +fTreeLoadDistance = 46443.0000 + +[Trees] +bRenderSkinnedTrees = 1 +uiMaxSkinnedTreesToRender = 120 + +[Water] +bUseWaterDepth = 1 +bUseWaterDisplacements = 1 +bUseWaterReflections = 1 +bUseWaterRefractions = 1 +`; diff --git a/src/__tests__/e2e/util/files/profiles/archives.txt.ts b/src/__tests__/e2e/util/files/profiles/archives.txt.ts new file mode 100644 index 00000000..7b9c50f9 --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/archives.txt.ts @@ -0,0 +1,57 @@ +export const archives = () => ` +Skyrim - Misc.bsa +Skyrim - Shaders.bsa +Skyrim - Interface.bsa +Skyrim - Animations.bsa +Skyrim - Meshes0.bsa +Skyrim - Meshes1.bsa +Skyrim - Sounds.bsa +Skyrim - Voices_en0.bsa +Unofficial Skyrim Special Edition Patch.bsa +Unofficial Skyrim Special Edition Patch - Textures.bsa +UnlimitedBookshelves.bsa +TavernAIFix.bsa +Motion Sensitive Fix SE.bsa +chfshVariousActions.bsa +SimplyKnock.bsa +Immersive Horses - Textures.bsa +PumpingIron.bsa +SleepTight.bsa +reflection-levelupmessages.bsa +Relationship Dialogue Overhaul.bsa +Holidays - Textures.bsa +Holidays.bsa +Wildcat - Combat of Skyrim - Textures.bsa +Wildcat - Combat of Skyrim.bsa +Trade & Barter.bsa +BA_Bibliophile's_Arcanaeum.bsa +CYA_ChooseYourOwnArchMage.bsa +Finding_VelehkSain.bsa +proudspiremanortnf.bsa +HoldBorderBanners.bsa +SkyrimSewers - Textures.bsa +SkyrimSewers.bsa +Common Clothes and Armors.bsa +imp_helm_legend.bsa +ICNs_ImmersiveCollegeNPCs.bsa +GFoRR.bsa +Skyrim - Textures0.bsa +Skyrim - Textures1.bsa +Skyrim - Textures2.bsa +Skyrim - Textures3.bsa +Skyrim - Textures4.bsa +Skyrim - Textures5.bsa +Skyrim - Textures6.bsa +Skyrim - Textures7.bsa +Skyrim - Textures8.bsa +UHDAP - en0.bsa +UHDAP - en1.bsa +UHDAP - en2.bsa +UHDAP - en3.bsa +UHDAP - en4.bsa +UHDAP - MusicHQ.bsa +RealisticHuskySoundsSSE.bsa +dD - Enhanced Blood Main.bsa +Beards of Power.bsa +HD Lods SSE.bsa +`; diff --git a/src/__tests__/e2e/util/files/profiles/loadorder.txt.ts b/src/__tests__/e2e/util/files/profiles/loadorder.txt.ts new file mode 100644 index 00000000..b1a35a99 --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/loadorder.txt.ts @@ -0,0 +1,359 @@ +export const loadorder = () => ` +# This file was automatically generated by Mod Organizer. +Skyrim.esm +Update.esm +Dawnguard.esm +HearthFires.esm +Dragonborn.esm +Unofficial Skyrim Special Edition Patch.esp +ApachiiHair.esm +Campfire.esm +ETaC - RESOURCES.esm +ApachiiHairMales.esm +ApachiiHairFemales.esm +Skyrim Project Optimization - No Homes - Full ESL Version.esm +UHDAP - en0.esp +UHDAP - en1.esp +UHDAP - en2.esp +UHDAP - en3.esp +UHDAP - en4.esp +UHDAP - MusicHQ.esp +FISS.esp +SAS.esl +MajesticMountains_Landscape.esm +MajesticMountains_Moss.esp +Expressive Facegen Morphs.esl +Beards of Power.esp +Landscape and Water Fixes.esp +Lightened Skyrim - merged.esp +SimpleChildren.esp +Treescale.esm +TreescaleSnow.esm +Water for ENB.esm +DynDOLOD.esm +ccBGSSSE001-Fish.esm +High Poly Head.esm +SmoothCam.esl +High Poly Head Vampire Fix.esp +Skyrim Landscape and Water Fixes - Light Sources.esp +Landscape Fixes For Grass Mods.esp +Landscape For Grass Mods - Military Camps.esp +No Riverbededge Grass -Rift -Coast.esp +NotificationLog.esp +Undiscover Skyrim - No Discovery Sounds.esp +UltimateImmersionToggle.esp +No Sun Damage in Soul Cairn.esp +SkyUI_SE.esp +Quest Journal Limit Bug Fixer.esp +AHZmoreHUD.esp +MCMHelper.esp +Realistic-Voice.esp +No NPC Greetings.esp +UnlimitedBookshelves.esp +OnlyOnce.esp +UIExtensions.esp +Autorun.esp +Dynamic Things Alternative.esp +NPC_Overhaul_V_3_.esp +Serana.esp +JaxonzEnhGrab.esp +AMatterOfTime.esp +Customizable Camera.esp +Motion Sensitive Fix SE.esp +chfshVariousActions.esp +TrueDirectionalMovement.esp +Dual Block.esp +reflection-levelupmessages.esp +RealNames - SSE Edition.esp +Immersive Movement Speed.esp +Rische_NoUglyCombatIdlesForVanilla.esp +Wildcat - Combat of Skyrim.esp +ViewableFactionRanks.esp +sandboxcylinderheight.esp +TavernAIFix.esp +dD-No Spinning Death Animation Merged.esp +HonedMetal.esp +HonedMetal-MoreCraftingMaterials.esp +Honed Metal Voiced.esp +TakeNotes.esp +PumpingIron.esp +SkaldsMail.esp +TradeRoutes.esp +Trade & Barter.esp +More Radiant Quests for the Companions.esp +TradeRoutes-Patch-TradeAndBarter.esp +Immersive Speechcraft.esp +TrainAndStudy.esp +Immersive Horses.esp +GIST soul trap.esp +Realistic AI Detection 2 SE - Medium Interior, Medium Exterior.esp +suspiciouscityguards.esp +Hunters Not Bandits.esp +RSBJ.esp +Simply Rest Anywhere.esp +RSF.esp +Keep It Clean.esp +YOT - Keep it Clean.esp +Dirt and Blood - Dynamic Visuals.esp +Dirt and Blood - Keep It Clean Patch.esp +Predator Vision.esp +Hunterborn.esp +Hunterborn - Campfire Patch.esp +Hunterborn - Leather Tanning.esp +Hunterborn - Predator Vision Compatibilty Patch.esp +Underwater_Treasure.esp +RaceMenu.esp +RaceMenuPlugin.esp +SimplyKnock.esp +SpellResearch.esp +SpellResearchRequiem402Patch.esp +Spell Research - Even More Patches.esp +NightEyeENBFix_PredatorVision.esp +Frostfall.esp +Frostfall_Seasonal_Temps_patch.esp +ColdRegionBehavior.esp +Holidays.esp +SleepTight.esp +KN_CuttingTrees.esp +RTSSDNDSS.esp +Chesko_LoreBasedLoadingScreens.esp +SolitudeTempleFrescoes.esp +RentMyHouse.esp +Sanctuary Reborn.esp +Hidden Hideouts of Skyrim - Merged - Deep Immersion.esp +Cidhna Mine Expanded.esp +Weathered Road Signs.esp +BetterQuestObjectives.esp +PaarthurnaxQuestExpansion.esp +TheChoiceIsYours.esp +Guard Dialogue Overhaul.esp +Relationship Dialogue Overhaul.esp +RDO - USSEP Patch.esp +Thieves Guild Requirements.esp +AllThievesGuildJobsConcurrently.esp +PropertiesWithoutPesteringSE.esp +SunHelmSurvival.esp +SunHelmDiseases.esp +SunHelmCampfireSkill.esp +SunHelmForceDisableCold.esp +OCW_Obscure's_CollegeofWinterhold.esp +OCW_CellSettings.esp +ICNs_ImmersiveCollegeNPCs.esp +OCW_MusicPatch_VanillaPlus.esp +OCW_SR_FEPatch.esp +MCWT_ACollegeCoup.esp +MCWT_ACollegeCoup_ICNs_OE.esp +MCWT_ACollegeCoup_OCW.esp +MCWT_ArnielsAppeals.esp +MCWT_DeadDunmerDelivery.esp +MCWT_EarlyElementalist_OCW.esp +ocw door fix.esp +MCWT_ExpiditeTheExpirate.esp +MCWT_GovernableGatekeeper.esp +MCWT_InescapableInsights_EBQO.esp +MCWT_UnflappableFaculty.esp +BA_Bibliophile's_Arcanaeum.esp +SunHelmOCWPatch.esp +SunHelmBAPatch.esp +CoW Entry Requirements.esp +CollegeEntry.esp +CYA_ChooseYourOwnArchMage.esp +Finding_VelehkSain.esp +DeceiveDegaine.esp +LFox Better Thieves Guild Practice Locks.esp +Skyrim Unbound.esp +Skyrim Unbound - Restore Helgen Corridor.esp +Skyrim Unbound - Patch - GDO.esp +Skyrim Unbound - Patch - RDO.esp +Skyrim Unbound - Patch - The Choice Is Yours.esp +Skyrim Unbound - Patch - Trade and Barter.esp +CFTO.esp +CFTO_fix.esp +CFTO-CoveredCarriages.esp +CFTO-Lanterns.esp +hearthfireextended.esp +HFE-CFTO-Patch.esp +SMIM-SE-Merged-All.esp +HoldBorderBanners.esp +CoveredCarriagesSMIM.esp +The Forts of Skyrim-Rebuilt.esp +BetterDocks-MP-DLC-Compatible.esp +BHTNFxyz.esp +HSTNF.esp +VHTNFSSE.esp +hjerimtnf.esp +proudspiremanortnf.esp +Severin Manor.esp +HighHrothgarKitchenSE.esp +OutlawsRefuges.esp +SkyrimSewers.esp +Missives.esp +Missives - Solstheim.esp +Missives - Carriage and Ferry Travel Overhaul Patch.esp +ETaC - Complete.esp +JKs Skyrim.esp +Dawn of Skyrim.esp +JKs Skyrim_Dawn of Skyrim_Patch.esp +JKS_DoS_ETaC_Holidays_Patch.esp +JKS_DoS_OutlawsRefuge_SkyrimSewers_Patch.esp +ETaC - Complete_JKs Skyrim_CFTO Patch.esp +Prometheus_No_snow_Under_the_roof.esp +ETaC - Complete_JKs Skyrim_NSUTR_Patch.esp +SkyHavenTempleGarden.esp +More idle markers.esp +A Lot More Idle Marker.esp +KS Hairdo's.esp +BeastHHBB.esp +HallgarthAdditionalHair.esp +CuyiAntlers.esp +GFoRR.esp +Immersive Patrols II.esp +Immersive Patrols II Simplified.esp +TradeRoutes-Patch-ImmersivePatrols.esp +Inconsequential NPCs.esp +Populated Skyrim Prisons Cells.esp +Faction Crossbows.esp +imp_helm_legend.esp +Book Covers Skyrim.esp +Book Covers Skyrim - Lost Library.esp +BetterQuestObjectives - BCS Patch.esp +OCW_BCS_FEPatch.esp +OCW_BCS-LL_FEPatch.esp +BA_LostLibrary.esp +BA_Sorting_BCS.esp +BA_Sorting_LL.esp +AI Overhaul.esp +Craftable Horse Barding.esp +More_Saddles.esp +alesCampBedrollsSupplies.esp +1nivWICCloaks.esp +Common Clothes and Armors.esp +Weapons Armor Clothing & Clutter Fixes.esp +WACCF_Armor and Clothing Extension.esp +Skyrim Unbound - Patch - WACCF.esp +Complete Crafting Overhaul_Remastered.esp +aMidianBorn_ContentAddon.esp +FranklyHDImperialArmorsAndWeapons.esp +ClothingCraft.esp +OCW_WACCF_FEPatch.esp +OCW_ACE_FEPatch.esp +HFE-Sunhelm Patch.esp +dD - Realistic Ragdoll Force - Realistic.esp +CuyiPriestHoods.esp +XPMSE.esp +Mortal Enemies.esp +QuickLight.esp +Double Wide Quick Light.esp +Fish Anywhere.esp +LokiHorses.esp +CoWDoorBell.esp +Requiem.esp +Requiem - Minor Arcana - Civil War.esp +Requiem - Minor Arcana - Roleplaying.esp +Requiem - Minor Arcana - Vigilants of Stendarr.esp +Fozars_Dragonborn_-_Requiem_Patch.esp +Requiem - Skyrim Sewers.esp +Requiem - WACCF.esp +Requiem - WACCF - ACE.esp +Requiem - CCOR.esp +Requiem - Common Clothes and Armors.esp +Requiem - less double-vision.esp +TradeRoutes-Patch-Requiem.esp +TrainAndStudy - Requiem.esp +Trad_AE_FishingStandalone_Requiem_Patch.esp +hz_NonExploitableCrossbowReload.esp +hz_NECR_ReqPatch_SSE.esp +Requiem - GIST Patch.esp +Remove Interior Fog.esp +SoundsofSkyrimComplete.esp +VioLens SE.esp +DeadlySpellImpacts.esp +DepthsOfSkyrim.esp +Cathedral Weathers.esp +Cathedral Weather Snow Patch.esp +Obsidian Mountain Fogs.esp +RelightingSkyrim_SSE.esp +Landscape and Water Fixes - Patch - Relighting Skyrim.esp +ELE_SSE.esp +SoS_ELE_Patch.esp +Shadows Of Sunlight - In Small Exterior World Spaces.esp +ChillwindDephts.esp +OCW_SoS_FEPatch.esp +OutlawsRefugesProgressionPatch.esp +RASS - Visual Effects.esp +Audio Overhaul Skyrim.esp +Immersive Sounds - Compendium.esp +Skyrim Unbound - Patch - AOS.esp +Audio Overhaul Skyrim - Immersive Sounds Patch.esp +OCW_AO_FEPatch.esp +Improved Combat Sounds v2.2.esp +Immersive Dragon Sounds.esp +No Skeleton Idle Sound.esp +Bird_sound_removed.esp +IHSS.esp +RealisticHuskySoundsSSE.esp +RealisticDogSoundsSSE esl.esp +Torches Ignite Oil - Shock Edition.esp +Laundry.esp +iEquip.esp +dD - Enhanced Blood Main.esp +dD-Reduced Splatter Size.esp +dD-Short Script Range.esp +No More Ugly Effects SE.esp +FacegenForKids.esp +Diverse Character Creation.esp +FollowerLivePackage.esp +HD Lods SSE.esp +aMidianBorn_Buildings Landscapes.esp +Fluffy Snow - BlendedRoads Patch.esp +MajesticMountains.esp +Praedy's Soulcairn.esp +S3DTrees NextGenerationForests.esp +HappyLittleTrees.esp +Folkvangr - Grass and Landscape Overhaul.esp +Origins Of Forest - 3D Forest Grass.esp +Simplicity of Snow.esp +Shaders of Solstheim.esp +WindyGrass.esp +Water for ENB (Shades of Skyrim).esp +Frost Meshes Patch.esp +Embers XD.esp +Embers XD - Patch - JKs Skyrim.esp +Embers XD - Patch - Vanilla Flames.esp +Skyrim Remastered - Soul Gems.esp +Rudy Nordic Pottery SSE.esp +HPP - FirewoodSnow Campfire.esp +HPP - Vaermina's Torpor.esp +GQJ_DG_vampireamuletfix.esp +GDOS - Glorious Solitude Door - Rotation Fix.esp +GDOS - Splendid Mechanized Dwemer Door.esp +Skyland Imperial Forts and Dungeons.esp +VanillaArgoniansRedux.esp +VWA_VanillaWarpaintsAbsolution.esp +Beards for High Poly Head.esp +Brows.esp +Maevan2EyeBrows.esp +SGEyebrows.esp +NB-Scars.esp +TheEyesOfBeauty.esp +The Eyes Of Beauty - Elves Edition.esp +Kala_Eyes.esp +KALA EYES ELVES.esp +Kala_Orsimer Eyes.esp +KALA_BEAST RACE EYES.esp +ENB Light.esp +Rallys Shaggycows of Skyrim.esp +Bears of the North.esp +PraedysSkeletons.esp +Water for ENB - Patch - Expanded Towns and Cities.esp +Water for ENB - Patch - Darker LOD Water.esp +Wildlander.esp +Wildlander_FULL.esp +FNIS.esp +Requiem for the Indifferent.esp +DynDOLOD.esp +Occlusion.esp +DynDOLOD-load-remover.esp +icepenguinworldmapclassic.esp +widescreen_skyui_fix.esp +`; diff --git a/src/__tests__/e2e/util/files/profiles/modlist.txt.ts b/src/__tests__/e2e/util/files/profiles/modlist.txt.ts new file mode 100644 index 00000000..c6892b38 --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/modlist.txt.ts @@ -0,0 +1,601 @@ +export const modlist = () => ` +-Working_separator ++outputfull_dyndolod ++outputfull_texgen ++OutputFull_LODGen ++Wildlander - Full Output_separator ++OutputCore_Reqtificator ++OutputCore_FNIS +-Wildlander - Core Output_separator +-Wildlander 32-9 Resolution Support +-Wildlander 21-9 Resolution Support ++Wildlander Full Graphics Patch +-Wildlander - Optionals_separator ++Wildlander +-Wildlander_separator +-SSE Terrain Tamriel Extend +-NPC Lookup +-Landscape Identification by Terrain Texture +-AddItemMenu - Ultimate Mod Explorer +-Dev Resources - Useful Tools_separator +-Source - Old UltSky Dummy Plugins +-Source - MCM Helper SDK +-Source - SkyUI SDK +-Source - VioLens +-Source - Dual Wield Block +-Source - Wildcat +-Source - Requiem +-Source - Loot and Degradation +-Source - Immersive Speechcraft +-Source - QuickLight +-Source - Hunting in Skyrim +-Source - Frostfall and Campfire +-Source - DISDD +-Source - ConsoleUtil +-Source - Interesting NPC's +-Source - FNIS +-Dev Resources - Script Sources_separator ++The Soul Cairn ++The Halls of the Greybeards - a High Hrothgar Retexuring ++CC's Fort Dawnguard Reborn 2K ++Arri's Snow Elf Ruins Retexture Special Edition ++Skyland Skyhaven Temple ++Rudy HQ - More Lights for ENB SE - Bthardamz +-Full Version - Locations_separator ++Remiros' Statues HD - All ++HD Charcoal for Smelter - 2K and 1K texture replacer ++JS Shrines of the Divines SE ++HD Hay SE ++NORDIC TENT 2K RETEXTURE ++Nordic Tent upgrade by Pfuscher ++RUSTIC MONUMENTS AND TOMBSTONES ++Project Clarity - Statue Textures Redone ++ENB Particle Lights - Dwemer Lanterns ++2K Skeleton Key ++Arctic - Frost Effects Redux ++Embers XD ++Glorious Doors of Skyrim (GDOS) SE - 1.04 Update ++Glorious Doors of Skyrim (GDOS) SE ++Business Ledger HD Retexture ++Campfire's Axe and Torch by Mathy79 - addon ++ElSopa - Campfire HD SE ++HD High Poly Keys II ++HD Saw dust ++Metallurgy - Ingots and Ore HD 2k ++Ancient Pottery ++Medieval Spirits ++Skyrim 3D Misc - Woven Fence ++Skyrim 3D Misc - Winterhold Gate ++Skyrim 3D Misc - Traps ++Skyrim 3D Misc - Markarth Cage ++Skyrim 3D Misc - Mammoth Cheese ++Skyrim 3D Misc - Giant Mortar and Pestle ++Skyrim 3D Misc - Dining Set ++Skyrim 3D Misc - Chopping Block and Axe ++Skyrim 3D Misc - Butterchurn ++Skyrim 3D Misc - Buckets ++Skyrim 3D Cooking ++Skyrim 3D Furniture ++Skyrim 3D Blacksmith ++Medieval Candlehorns and Sconces ++Rudy HQ Miscellaneous SE ++Gemling Queen Jewelry SE ++Barenziah's Glory SE ++Frankly HD Masque of Clavicus Vile 4K ++Frankly HD Dawnguard Armor and Weapons (2K) ++Frankly HD Miraak [SSE] - Hotfix ++Frankly HD Miraak [SSE] ++JS Dragon Claws SE 2k ++Pretty Gemstones SSE ++Rally's All The Things ++Ennead Banners - 2K Detailed Rugs Patch ++Ennead Banners ++Skyrim Remastered - Soul Gems ENB Light Patch ++Skyrim Remastered - Soul Gems ++RUSTIC CLOTHING - Special Edition ++Frankly HD Nightingale Armor and Weapons [SSE] ++Detailed Rugs ++Bronze Septim ++High Poly Project ++Project Clarity - Vanilla Weapon Textures Redone ++Glorious Dwarven Metal ++Ruins Clutter Improved ++MD's Farmhouses 2K ++Skyrim Special Edition Upscaled Textures (SSEUT) - Armor +-Full Version - Objects_separator ++Rudy ENB Cathedral Weathers ADDONS and REQUiRED Files ++Dynamic Volumetric Lighting and Sun Shadows ++Windy Grass ++Rudy HQ - More Lights for ENB SE - Deathbells and Nirnroots ++Rudy HQ - More Lights for ENB SE - Chaurus Eggs and Sacs ++Rudy SSE - No Glow effect for Nirnroots ++Obsidian Mountain Fogs ++Water for ENB ++Water Effects Brightness and Reflection Fix ++Rally's Lava 2K ++Shaders of Solstheim - Ash and Moss ++Simplicity of Snow ++Nordic Snow - Blended Roads fix ++Nordic Snow (aka HQ Snow Texture) ++Blended Roads Redone SE - Bridges 2k ++Blended Roads Redone SE ++Happy Little Trees 3D LOD - Quality ++Happy Little Trees ++Skyrim 3D Trees and Plants ++Pine Shrubs Redone ++Deathbell HD - All-New Textures (1K) ++Origins Of Forest - 3D Forest Grass ++Folkvangr - Grass and Landscape Overhaul ++HD Stone Quarry and Clay Deposit for Hearthfire ++Skyland AIO (old) ++aMidianBorn Buildings and Landscapes SE ++HD LODs Textures SE ++Skyrim Special Edition Upscaled Textures (SSEUT) - Plants ++ENB Light +-Full Version - Environment_separator ++Skeleton Replacer HD ++Labrador Replacer ++Bears of the North ++Rudy HQ - More Lights for ENB SE - Moths ++HD Bees and Honeycombs ++Horker by Pfuscher ++High poly HD Rabbit by Pfuscher ++HD Pondfish ++HD Skeever ++Rally's Shaggycows of Skyrim ++HD Reworked Horses ++Heart of the Beast - Alpha Werewolf Texture ++Heart of the Beast - Alpha Werewolf Model +-Full Version - Creatures_separator ++The Eyes Of Beauty Dawnguard Update ++The Eyes Of Beauty SSE - Elves ++The Eyes Of Beauty SSE ++Kala's Eyes - Beast Races (Standalone Variants) ESL ++Kala's Eyes - Beast Races (Standalone Variants) ++Kala's Eyes - Beast Races (Vanilla Replacer) ++Kala's Eyes - Orsimer (Standalone Variants) ESL ++Kala's Eyes - Orsimer (Standalone Variants) ++Kala's Eyes - Orsimer (Vanilla Replacer) ++Kala's Eyes - Elves (Standalone Variants) 1.1 Update and ESL ++Kala's Eyes - Elves (Standalone Variants) ++Kala's Eyes - Elves (Vanilla Replacer) ++Kala's Eyes AIO Update 1.2 ESL ++Kala's Eyes AIO Update 1.2 ++Kala's Eyes AIO ++Northborn Scars ++Vanilla Warpaints Absolution ++Argonians Enhanced Textures Update - HD Scars (Vanilla) ++Argonians Enhanced Textures Update - HD Nostril Tint Mask ++Argonians Enhanced Textures Update - Argonian Mouth Remastered ++Argonians Enhanced Textures Update - No More Plastic Coating ++Flawn's Vanilla Argonians Redux Main for UNP ++Argonian Improvements SSE - Horns (1024) ++Masculine Khajiit Textures (Vanilla 2k) +-Full Version - Humanoids_separator ++[Skin] - FAL Skin Shaved Version SE ++Cyb's Remix Skin SE ++UNP Female Body Mesh ++SkySight Skins HD - Optimized Meshes ++SkySight Skins - Shoe Fixes (Less Shine) ++SkySight Skins - Ultra HD Male Textures and Real Feet Meshes (4K2K HIGH) ++High Poly Head SE ++High Poly Vanilla Hair ++Beards for High Poly Head ++Beards of Power - Polymorph Version ++Eyebrow Specularity Fix ++SG Eyebrows - High Poly Head Patch ++SG Eyebrows ++Hvergelmir Brows - High Poly Head Patch ++Hvergelmir Brows ++Maevan2 Brows - High Poly Head Patch ++Maevan2 Brows ++Superior Lore-Friendly Hair - HD textures rough ++Cuyi's Bosmeri Antlers - SSE ++Hallgarth's Additional (Vanilla) Hair SE ++KS Hairdos SSE ++ApachiiSkyHair SSE - Females ++ApachiiSkyHair SSE - Males ++ApachiiSkyHair SSE - Main ++Expressive Facegen Morphs SE ++Expressive Facial Animation -Female Edition- ++Expressive Facial Animation -Male Edition- ++UNP Underwear Replacement ++Seranaholic SSE 1.8 ++Inhabitants of Skyrim - NPC Overhaul ++BeastHHBB - Khajiit and Argonian content - player character and NPC replacer ++Simple Children - Updated Textures ++Simple Children ++TK Children +-Core NPC Enhancements_separator ++Landscape Fixes For Grass Mods - Riverbed Edge Fix ++Landscape Fixes For Grass Mods - Vanilla Military Camps ++Landscape Fixes For Grass Mods ++Depths of Skyrim - An Underwater Overhaul SSE ++Immersive Laundry Improvement ILIM by Pfuscher ++Immersive Laundry - Replacer ESP for JK and DoS ++Immersive Laundry ++Snazzy Weapon Racks (Noble Texture Version) ++Enhanced Blood Textures - ENB Alpha Fix ++Enhanced Blood Textures OLD ++Wet and Cold Breath Texture for ENB (and R.A.S.S) ++R.A.S.S. - Rain Ash And Snow Shaders 3.2.2 ++No More Swirl Effects From Absorb ++Remove Distracting Things - Dungeon Floating Dust ++Remove Distracting Things - Camera Attached Fog ++No More Ugly Effects SE ++ENB Brow Fix ++Enhanced Lighting for ENB (ELE) - Special Edition ++Relighting Skyrim - SSE ++Cathedral Weathers Snow Patch ++Cathedral Weathers and Seasons ++Voltage 4-2K ++Deadly Spell Impacts ++Interior Floating Fog Remover ++No Floating Dust Particles ++Remove Interior Fog ++No snow under the roof ++Weathered Road Signs Fixed ++aMidianBorn Book of Silence SE ++Believable weapons ++Majestic Mountains - DynDOLOD 3.0 LOD Pack ++Majestic Mountains - Mesh Tangent Space Fixes ++Majestic Mountains ++Skyrim Landscape and Water Fixes ++Unofficial Material Fix ++Solitude and Temple Frescoes SSE ++Static Mesh Improvement Mod ++Frankly HD Imperial Armor and Weapons 2k ++Heart of the Beast - Alpha Werewolf Sounds (Reduced Volume) ++Annoying cicada and insect sound replace ++No Skeleton Idle Sound ++Tree Bird Sound Removed ++Immersive Dragon Sounds SSE Port - USSEP Hotfix ++Immersive Dragon Sounds SSE Port ++IHSS - Improved Horse Step Sounds ++Realistic Wolf Howls (Less Barking) ++Realistic Dog Sounds SE ++Realistic Husky Sounds SSE ++Better Horse Pain Sounds ++Sound Hammering Sounds ++Improved Combat Sounds SE ++Bard Instrumentals Only - Sing Upon Request ++Alternative Bards Drum Songs ++Alternative Bards Lute Songs ++Audio Overhaul and Immersive Sounds Patch Redux ++Immersive Sounds - Compendium ++Unofficial High Definition Audio Project - Music ++Unofficial High Definition Audio Project - Voices Part 2 ++Unofficial High Definition Audio Project - Voices Part 1 ++Audio Overhaul for Skyrim SE ++Sounds of Skyrim - City Crowd Reduced Volume ++Sounds of Skyrim Complete SE - Fox Hotfix ++Sounds of Skyrim Complete SE ++Spider Webs and Particles for ENB ++Loading Screen Smoke Removed ++Cleaned Skyrim SE Textures ++DynDOLOD Resources SE 3 +-Core Audiovisual Enhancements_separator ++Good-folks of Raven Rock ++Inconsequential NPCs ++Immersive College NPCs ++Populated Skyrim Reborn LE - Prisons Cells ++Immersive Patrols SE Simplified (Full) ++Immersive Patrols SE (Full) +-NPC Additions_separator ++Dovah Sonaak Dragon Priest Masks ++Simple Bedrolls and Supplies - for Campfire ++Book Covers Skyrim - Lost Library ++Book Covers Skyrim ++Improved closefaced helmets ++ClothingCraft - Darker Flax ++ClothingCraft Redux (Non-Immersive Armors Version) ++aMidianBorn Content Addon SE ++DX Faction Crossbows SE ++Common Clothes and Armors ++More Saddles SSE ++Craftable Horse Barding (2K) ++Winter Is Coming Cloaks SSE (Full Version) +-Item Additions_separator ++JK's Skyrim + DoS + Outlaw Refuges + Sewers Patch ++JK's Skyrim + DoS + ETaC + Holidays Patch ++JK's Skyrim - ETaC - NSUTR Patch ++JK's Skyrim - ETaC - CFTO Patch ++JK's Skyrim and Dawn of Skyrim DC Patch ++Dawn of Skyrim (Director's Cut) SE ++JK's Skyrim - ETaC Compatible Replacer ++JK's Skyrim ++Expanded Towns and Cities SE Version ++Outlaws Refuges - Dynamic Progression Patch ++Outlaws Refuges ++Skyrim Sewers 4 ++Hold Border Banners ++Better Docks ++Imperial Stone-The Forts of Skyrim Redone ++Hidden Hideouts of Skyrim SE ++High Hrothgar Kitchen ++Severin Manor (No Portals or General Stores) ++Proudspire Manor TNF SE ++Hjerim TNF - SSE Port ++Breezehome TNF - Trapdoors of Whiterun SE ++Vlindrel Hall TNF SSE Port ++Honeyside TNF - By Goatk ++Dark Brotherhood Reborn - Dawnstar Sanctuary SSE ++Sky Haven Temple Gardens - JK's Skyrim Patch ++Sky Haven Temple Gardens +-Location Expansions_separator ++Thieves Guild Requirements SE ++All Thieves Guild Jobs Concurrently ++Deceive Degaine ++The Choice is Yours ++Paarthurnax - Quest Expansion ++College of Winterhold Entry Requirements ++Finding Velehk Sain ++Choose Your Own Arch-Mage ++Bibliophile's Arcanaeum ++Misc. College of Winterhold Tweaks ++Improved College Entry - Questline Tweaks ++Obscure's College of Winterhold NPC Stuck in Staircase Fix ++Obscure's College of Winterhold ++More Radiant Quests for the Companions ++Blood and Silver - Cidhna Mine Expanded +-Quests_separator ++Trainer Gold Exploit Fix ++Fish Anywhere With Water ++CC Fishing ++Better Thieves Guild Practice Locks SSE ++NPCs use Potions ++Double Wide Quick Light ++Quick Light SE ++Realistic Conversations - No greetings compatible - longer pause between sentences ++Slayable Offspring SKSE ++KN Cutting Trees (Non-Physics Version) ++Simply Rest (or Sleep) Anywhere ++Diverse Character Creation ++Item Durability ++Immersive Speechcraft SE ++Trade and Barter ++Trade Routes SE ++Dynamic Things Alternative - Base Object Swapper ++Wildcat - Combat of Skyrim ++Mortal Enemies SE ++Better Stealing ++Honed Metal Revoiced ++Honed Metal Additional Materials ++Honed Metal ++Holidays ++Hunterborn SE MCM ++Hunterborn ++Underwater Treasure SSE (Sea, Rivers, and Lakes Version) ++Guard Dialogue Overhaul SE ++Relationship Dialogue Overhaul SE - CRF and USSEP Patches ++Relationship Dialogue Overhaul SE ++Skald's Mail - A Courier Alternative ++Really Simple Blackjack ++Really Simple Faro ++Reflection - Level Up Messages ++Hunters Not Bandits ++Complete Crafting Overhaul Remastered - PRUFEI CTD Hotfix ++Complete Crafting Overhaul Remastered ++Armor and Clothing Extension ++Weapons Armor Clothing and Clutter Fixes ++AI Overhaul SSE ++Sleep Tight SE ++Rent My House - A Landlord Mod ++More Tavern Idles - SSE Port ++Dirt and Blood - Keep It Clean Patch ++Dirt and Blood ++Keep It Clean - Autostart Disabler ++Keep It Clean - A Bathing mod ++Train and Study - Requiem Patch ++Spell Research Patch Compendium Redux 357 patches ++Spell Research - Requiem 5 patch ++Spell Research ++Train and Study ++Sunhelm Survival Patch for Hearthfire Extended ++SunHelm Survival ++Properties Without Pestering ++Missives - Carriage and Ferry Travel Overhaul Patch ++Missives - Notes Retexture (Solstheim) ++Missives - Notes Retexture ++Missives - Worldspace Additions (Solstheim) ++Missives ++Pumping Iron - Dynamic Muscle Growth ++Realistic Trading Stocks of Skyrim (with DnD Spellcasting Service) ++Immersive Movement Speed ++Suspicious City Guards ++Realistic AI Detection SE (Medium) ++Hearthfire Extended - CFTO Patch ++Hearthfire Extended ++Torches Ignite Oil AOS Patch ++Torches Ignite Oil - Shock Edition ++Carriage and Ferry Travel Overhaul - Fixes and Winterhold ++CFTO - Covered Carriages add-on ++Carriage and Ferry Travel Overhaul - Companions Radiant Quest FIx ++Carriage and Ferry Travel Overhaul ++Covered Carriage SE (SMIM Version) ++Requiem - GIST Patch ++GIST - Genuinely Intelligent Soul Trap SE ++Immersive Horses Script Fixes ++Immersive Horses 2K Horse Textures ++Immersive Horses ++Predator Vision - Night Eye and Thermal Vision Overhaul ++CRB Patch for Frostfall Conditions ++Cold Region Behavior ++Simply Knock SKSE64 DLL ++Simply Knock SE ++Frostfall - Seasons ++Campfire and Frostfall - Unofficial SSE Update 1.3 ++Frostfall - Hypothermia Camping Survival ++Campfire - Complete Camping System (Supports Skyrim VR) ++Requiem - Less Double-Vision (R-LDV) ++Trad Requiem Patch - CC Fishing and CC Rare Curios ++Requiem - Common Clothes and Armors ++Requiem - CCOR Patch ++Requiem - WACCF and ACE Patch ++Requiem - WACCF Patch ++Requiem - Skyrim Sewers ++Requiem - Dragonborn Patch ++Requiem - Minor Arcana SSE Convert ++Requiem +-Gameplay & Mechanics_separator ++Follower Live Package - ReTranslation ++Follower Live Package ++Follower Trap Safety ++Disable Follower Collision +-Follower Management_separator ++Turn Animation Fix ++Lowered Hands ++Horses Simply Turn Better ++3rd Person Walk Fix ++Simple Dual Sheath ++Immersive Equipment Displays ++Dual Wield Block ++D13 Faster GET UP STAND UP animation vanilla friendly SSE ++No More Ugly Combat Idles for Followers ++Dirty Skyrim Animation Turn Fix ++Faster Horse Dismount SSE (50 Percent Faster) ++XPMSSE - Nemesis - Papyrus Stack Fix ++XP32 MSE - Fixed Scripts ++XP32 MSE ++Immersive Animations ++Realistic Ragdolls and Force ++Dynamic Animation Replacer ++No Spinning Death Animation ++Various Player Actions (Emote) ++Nemesis +-Animations & Skeleton_separator ++VioLens - A Killmove Mod SE - Legacy Settings Loader ++VioLens - A Killmove Mod SE ++Improved Camera ++True Directional Movement ++SmoothCam ++zxlice hitStop SSE - Script Free ++Alternate Conversation Camera ++Customizable Camera ++Motion Sensitive Fix SE +-Camera_separator ++Contextual Crosshair ++Improvement Names Customized SSE ++Disable Fast Travel SKSE - No Janky Map UI ++Controller-mapping Unbound (Up Favorite) ++ENB Input Disabler ++Favorite Misc Items ++Smaller Vanilla Cursors ++Convenient Dialogue UI - SE ++Undiscover Skyrim SE ++ReCleaned Menu ++Epic Animated Main Menu ++SkyHUD Fixed ++SkyHUD ++Font Overhaul - Natural Typefaces for Skyrim -- FONTS ++SkyUI AIO Survival (SAS) ++moreHUD Inventory Edition ++moreHUD SE (ESL Version) ++A Quality World Map - Classic with All Roads ++Even Better Quest Objectives SE ++iEquip 1.6.3 ++Fuz Ro D-oh - Alternate Silent Voice Files ++Fuz Ro D-oh - Silent Voice ++RaceMenu 0.4.16 Memory Leak Hotfix (SE) ++RaceMenu ++Copy and Paste in Console ++Console Commands Extender ++More Informative Console ++Lore-Based Loading Screens ++Better MessageBox Controls ++UIExtensions ++A Matter of Time - A HUD clock widget ++Take Notes - Journal of the Dragonborn SSE ++Notification Log SSE ++Inventory Functions SE ++Stay At The System Page - Updated ++Viewable Faction Ranks (ESL) ++Configurable Real Names for SSE ++Favorite Things - Extended Favorites Menu (Opt 1) ++Wider MCM Menu for SkyUI ++Ultimate Immersion Toggle - UI Toggle - Hide Your HUD - Rebuild ++MCM Helper ++SkyUI - Ghost Item Bug Fix ++SkyUI SE - Flashing Savegames Fix ++SkyUI ++vanilla-interface-textures +-UI_separator ++Payload Interpreter ++Hawk Patch - Base Object Swapper Remake ++Animated Static Reload Fix - SSE ++College of Winterhold Doorbell ++Base Object Swapper ++Equip Enchantment Fix ++Chillwind Depths CTD Fix ++WIDeadBodyCleanupScript Crash Fix ++Mage Armor Script Fix ++No Vampire Sun Damage in Soul Cairn - Apocrypha - etc ++Quest Journal Limit Bug Fixer - Recover Disappeared Quests ++Skyrim Unbound Reborn ++Better Combat Escape ++Lightened Skyrim ++Face Discoloration Fix ++SSE Display Tweaks - High Performance Config ++SSE Display Tweaks ++SSE Parallax Shader Fix (BETA) ++Auto Input Switch ++Autorun ++Better Jumping SE ++No Grass In Objects ++Wiseman303's Critter Fixes ++Civil War intro scenes run only once ++Classic Sprinting Redone (SKSE64) ++Make Non-Exploitable Crossbow Slow Again For Requiem SSE ++Non-Exploitable Crossbow Reloading SE ++Unnecessarily Fixed Fixed Dragon Stalking Fix ++Skyrim Project Optimization SE (ESL No Homes) ++Tavern AI Fix ++Spell Perk Item Distributor ++Shadows Of Sunlight - In Small Exterior World Spaces ++ENB Helper SE Shader Bundle ++ENB Helper SE ++A Lot More Idle Marker ++No NPC Greetings (Special Edition) ++To Your Face SE and VR ++Multiple Floors Sandboxing ++Unlimited Bookshelves ++Player Rotation in ShowRaceMenu ++Actor Limit Fix ++I'm Walkin' Here ++Jaxonz Positioner Converted - Updated Script ++Jaxonz Positioner Converted ++Unofficial Skyrim Special Edition Patch ++powerofthree's Tweaks INI File ++powerofthree's Tweaks ++powerofthree's Papyrus Extender for SSE ++PapyrusUtil SE - Modders Scripting Utility Functions ++JContainers SE ++Address Library for SKSE Plugins ++.NET Script Framework ++ConsoleUtilSSE ++PrivateProfileRedirector SE - Faster game start (INI file cacher) ++FileAccess Interface for Skyrim SE Scripts - FISSES ++Scrambled Bugs ++Bug Fixes SSE ++SSE Engine Fixes (Part 1) ++skse64_2_00_20 +-System & Bugfixing_separator +-High Poly Project - Dummy +-High Poly Head - Dummy +-Complete Widescreen Fix - Dummy +-Marvelous Mage Followers SSE - Dummy +-Elegant Elven Followers SSE - Dummy +-Northbourne NPCs of Winterhold - Dummy +-Northbourne NPCs of the Rift - Dummy +-Northbourne NPCs of Haafingar - Dummy +-Northbourne NPCs of Whiterun Hold - Dummy +-Northbourne NPCs of Falkreath Hold - Dummy +-Beards of Power Sons of Skyrim - Dummy +-Stormcloak Rebellion Refine - Dummy +-Markarth Side Refine - Dummy +-Whiterun Hold Refine - Dummy +-Followers Hirelings and Housecarls SSE - Dummy +-Obscure's Faces of Winterhold - Dummy +-Dev Resource - Dummies_separator +-Dev Resource - NPC Facegen_separator +`; diff --git a/src/__tests__/e2e/util/files/profiles/plugins.txt.ts b/src/__tests__/e2e/util/files/profiles/plugins.txt.ts new file mode 100644 index 00000000..2b1afd85 --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/plugins.txt.ts @@ -0,0 +1,354 @@ +export const plugins = () => ` +# This file was automatically generated by Mod Organizer. +*Unofficial Skyrim Special Edition Patch.esp +*ApachiiHair.esm +*Campfire.esm +*ETaC - RESOURCES.esm +*ApachiiHairMales.esm +*ApachiiHairFemales.esm +*Skyrim Project Optimization - No Homes - Full ESL Version.esm +*UHDAP - en0.esp +*UHDAP - en1.esp +*UHDAP - en2.esp +*UHDAP - en3.esp +*UHDAP - en4.esp +*UHDAP - MusicHQ.esp +*FISS.esp +*SAS.esl +*MajesticMountains_Landscape.esm +*MajesticMountains_Moss.esp +*Expressive Facegen Morphs.esl +*Beards of Power.esp +*Landscape and Water Fixes.esp +*Lightened Skyrim - merged.esp +*SimpleChildren.esp +*Treescale.esm +*TreescaleSnow.esm +*Water for ENB.esm +*DynDOLOD.esm +*ccBGSSSE001-Fish.esm +*High Poly Head.esm +*SmoothCam.esl +*High Poly Head Vampire Fix.esp +*Skyrim Landscape and Water Fixes - Light Sources.esp +*Landscape Fixes For Grass Mods.esp +*Landscape For Grass Mods - Military Camps.esp +*No Riverbededge Grass -Rift -Coast.esp +*NotificationLog.esp +*Undiscover Skyrim - No Discovery Sounds.esp +*UltimateImmersionToggle.esp +*No Sun Damage in Soul Cairn.esp +*SkyUI_SE.esp +*Quest Journal Limit Bug Fixer.esp +*AHZmoreHUD.esp +*MCMHelper.esp +*Realistic-Voice.esp +*No NPC Greetings.esp +*UnlimitedBookshelves.esp +*OnlyOnce.esp +*UIExtensions.esp +*Autorun.esp +*Dynamic Things Alternative.esp +*NPC_Overhaul_V_3_.esp +*Serana.esp +*JaxonzEnhGrab.esp +*AMatterOfTime.esp +*Customizable Camera.esp +*Motion Sensitive Fix SE.esp +*chfshVariousActions.esp +*TrueDirectionalMovement.esp +*Dual Block.esp +*reflection-levelupmessages.esp +*RealNames - SSE Edition.esp +*Immersive Movement Speed.esp +*Rische_NoUglyCombatIdlesForVanilla.esp +*Wildcat - Combat of Skyrim.esp +*ViewableFactionRanks.esp +*sandboxcylinderheight.esp +*TavernAIFix.esp +*dD-No Spinning Death Animation Merged.esp +*HonedMetal.esp +*HonedMetal-MoreCraftingMaterials.esp +*Honed Metal Voiced.esp +*TakeNotes.esp +*PumpingIron.esp +*SkaldsMail.esp +*TradeRoutes.esp +*Trade & Barter.esp +*More Radiant Quests for the Companions.esp +*TradeRoutes-Patch-TradeAndBarter.esp +*Immersive Speechcraft.esp +*TrainAndStudy.esp +*Immersive Horses.esp +*GIST soul trap.esp +*Realistic AI Detection 2 SE - Medium Interior, Medium Exterior.esp +*suspiciouscityguards.esp +*Hunters Not Bandits.esp +*RSBJ.esp +*Simply Rest Anywhere.esp +*RSF.esp +*Keep It Clean.esp +*YOT - Keep it Clean.esp +*Dirt and Blood - Dynamic Visuals.esp +*Dirt and Blood - Keep It Clean Patch.esp +*Predator Vision.esp +*Hunterborn.esp +*Hunterborn - Campfire Patch.esp +*Hunterborn - Leather Tanning.esp +*Hunterborn - Predator Vision Compatibilty Patch.esp +*Underwater_Treasure.esp +*RaceMenu.esp +*RaceMenuPlugin.esp +*SimplyKnock.esp +*SpellResearch.esp +*SpellResearchRequiem402Patch.esp +*Spell Research - Even More Patches.esp +*NightEyeENBFix_PredatorVision.esp +*Frostfall.esp +*Frostfall_Seasonal_Temps_patch.esp +*ColdRegionBehavior.esp +*Holidays.esp +*SleepTight.esp +*KN_CuttingTrees.esp +*RTSSDNDSS.esp +*Chesko_LoreBasedLoadingScreens.esp +*SolitudeTempleFrescoes.esp +*RentMyHouse.esp +*Sanctuary Reborn.esp +*Hidden Hideouts of Skyrim - Merged - Deep Immersion.esp +*Cidhna Mine Expanded.esp +*Weathered Road Signs.esp +*BetterQuestObjectives.esp +*PaarthurnaxQuestExpansion.esp +*TheChoiceIsYours.esp +*Guard Dialogue Overhaul.esp +*Relationship Dialogue Overhaul.esp +*RDO - USSEP Patch.esp +*Thieves Guild Requirements.esp +*AllThievesGuildJobsConcurrently.esp +*PropertiesWithoutPesteringSE.esp +*SunHelmSurvival.esp +*SunHelmDiseases.esp +*SunHelmCampfireSkill.esp +*SunHelmForceDisableCold.esp +*OCW_Obscure's_CollegeofWinterhold.esp +*OCW_CellSettings.esp +*ICNs_ImmersiveCollegeNPCs.esp +*OCW_MusicPatch_VanillaPlus.esp +*OCW_SR_FEPatch.esp +*MCWT_ACollegeCoup.esp +*MCWT_ACollegeCoup_ICNs_OE.esp +*MCWT_ACollegeCoup_OCW.esp +*MCWT_ArnielsAppeals.esp +*MCWT_DeadDunmerDelivery.esp +*MCWT_EarlyElementalist_OCW.esp +*ocw door fix.esp +*MCWT_ExpiditeTheExpirate.esp +*MCWT_GovernableGatekeeper.esp +*MCWT_InescapableInsights_EBQO.esp +*MCWT_UnflappableFaculty.esp +*BA_Bibliophile's_Arcanaeum.esp +*SunHelmOCWPatch.esp +*SunHelmBAPatch.esp +*CoW Entry Requirements.esp +*CollegeEntry.esp +*CYA_ChooseYourOwnArchMage.esp +*Finding_VelehkSain.esp +*DeceiveDegaine.esp +*LFox Better Thieves Guild Practice Locks.esp +*Skyrim Unbound.esp +*Skyrim Unbound - Restore Helgen Corridor.esp +*Skyrim Unbound - Patch - GDO.esp +*Skyrim Unbound - Patch - RDO.esp +*Skyrim Unbound - Patch - The Choice Is Yours.esp +*Skyrim Unbound - Patch - Trade and Barter.esp +*CFTO.esp +*CFTO_fix.esp +*CFTO-CoveredCarriages.esp +*CFTO-Lanterns.esp +*hearthfireextended.esp +*HFE-CFTO-Patch.esp +*SMIM-SE-Merged-All.esp +*HoldBorderBanners.esp +*CoveredCarriagesSMIM.esp +*The Forts of Skyrim-Rebuilt.esp +*BetterDocks-MP-DLC-Compatible.esp +*BHTNFxyz.esp +*HSTNF.esp +*VHTNFSSE.esp +*hjerimtnf.esp +*proudspiremanortnf.esp +*Severin Manor.esp +*HighHrothgarKitchenSE.esp +*OutlawsRefuges.esp +*SkyrimSewers.esp +*Missives.esp +*Missives - Solstheim.esp +*Missives - Carriage and Ferry Travel Overhaul Patch.esp +*ETaC - Complete.esp +*JKs Skyrim.esp +*Dawn of Skyrim.esp +*JKs Skyrim_Dawn of Skyrim_Patch.esp +*JKS_DoS_ETaC_Holidays_Patch.esp +*JKS_DoS_OutlawsRefuge_SkyrimSewers_Patch.esp +*ETaC - Complete_JKs Skyrim_CFTO Patch.esp +*Prometheus_No_snow_Under_the_roof.esp +*ETaC - Complete_JKs Skyrim_NSUTR_Patch.esp +*SkyHavenTempleGarden.esp +*More idle markers.esp +*A Lot More Idle Marker.esp +*KS Hairdo's.esp +*BeastHHBB.esp +*HallgarthAdditionalHair.esp +*CuyiAntlers.esp +*GFoRR.esp +*Immersive Patrols II.esp +*Immersive Patrols II Simplified.esp +*TradeRoutes-Patch-ImmersivePatrols.esp +*Inconsequential NPCs.esp +*Populated Skyrim Prisons Cells.esp +*Faction Crossbows.esp +*imp_helm_legend.esp +*Book Covers Skyrim.esp +*Book Covers Skyrim - Lost Library.esp +*BetterQuestObjectives - BCS Patch.esp +*OCW_BCS_FEPatch.esp +*OCW_BCS-LL_FEPatch.esp +*BA_LostLibrary.esp +*BA_Sorting_BCS.esp +*BA_Sorting_LL.esp +*AI Overhaul.esp +*Craftable Horse Barding.esp +*More_Saddles.esp +*alesCampBedrollsSupplies.esp +*1nivWICCloaks.esp +*Common Clothes and Armors.esp +*Weapons Armor Clothing & Clutter Fixes.esp +*WACCF_Armor and Clothing Extension.esp +*Skyrim Unbound - Patch - WACCF.esp +*Complete Crafting Overhaul_Remastered.esp +*aMidianBorn_ContentAddon.esp +*FranklyHDImperialArmorsAndWeapons.esp +*ClothingCraft.esp +*OCW_WACCF_FEPatch.esp +*OCW_ACE_FEPatch.esp +*HFE-Sunhelm Patch.esp +*dD - Realistic Ragdoll Force - Realistic.esp +*CuyiPriestHoods.esp +*XPMSE.esp +*Mortal Enemies.esp +*QuickLight.esp +*Double Wide Quick Light.esp +*Fish Anywhere.esp +*LokiHorses.esp +*CoWDoorBell.esp +*Requiem.esp +*Requiem - Minor Arcana - Civil War.esp +*Requiem - Minor Arcana - Roleplaying.esp +*Requiem - Minor Arcana - Vigilants of Stendarr.esp +*Fozars_Dragonborn_-_Requiem_Patch.esp +*Requiem - Skyrim Sewers.esp +*Requiem - WACCF.esp +*Requiem - WACCF - ACE.esp +*Requiem - CCOR.esp +*Requiem - Common Clothes and Armors.esp +*Requiem - less double-vision.esp +*TradeRoutes-Patch-Requiem.esp +*TrainAndStudy - Requiem.esp +*Trad_AE_FishingStandalone_Requiem_Patch.esp +*hz_NonExploitableCrossbowReload.esp +*hz_NECR_ReqPatch_SSE.esp +*Requiem - GIST Patch.esp +*Remove Interior Fog.esp +*SoundsofSkyrimComplete.esp +*VioLens SE.esp +*DeadlySpellImpacts.esp +*DepthsOfSkyrim.esp +*Cathedral Weathers.esp +*Cathedral Weather Snow Patch.esp +*Obsidian Mountain Fogs.esp +*RelightingSkyrim_SSE.esp +*Landscape and Water Fixes - Patch - Relighting Skyrim.esp +*ELE_SSE.esp +*SoS_ELE_Patch.esp +*Shadows Of Sunlight - In Small Exterior World Spaces.esp +*ChillwindDephts.esp +*OCW_SoS_FEPatch.esp +*OutlawsRefugesProgressionPatch.esp +*RASS - Visual Effects.esp +*Audio Overhaul Skyrim.esp +*Immersive Sounds - Compendium.esp +*Skyrim Unbound - Patch - AOS.esp +*Audio Overhaul Skyrim - Immersive Sounds Patch.esp +*OCW_AO_FEPatch.esp +*Improved Combat Sounds v2.2.esp +*Immersive Dragon Sounds.esp +*No Skeleton Idle Sound.esp +*Bird_sound_removed.esp +*IHSS.esp +*RealisticHuskySoundsSSE.esp +*RealisticDogSoundsSSE esl.esp +*Torches Ignite Oil - Shock Edition.esp +*Laundry.esp +*iEquip.esp +*dD - Enhanced Blood Main.esp +*dD-Reduced Splatter Size.esp +*dD-Short Script Range.esp +*No More Ugly Effects SE.esp +*FacegenForKids.esp +*Diverse Character Creation.esp +*FollowerLivePackage.esp +*HD Lods SSE.esp +*aMidianBorn_Buildings Landscapes.esp +*Fluffy Snow - BlendedRoads Patch.esp +*MajesticMountains.esp +*Praedy's Soulcairn.esp +*S3DTrees NextGenerationForests.esp +*HappyLittleTrees.esp +*Folkvangr - Grass and Landscape Overhaul.esp +*Origins Of Forest - 3D Forest Grass.esp +*Simplicity of Snow.esp +*Shaders of Solstheim.esp +*WindyGrass.esp +*Water for ENB (Shades of Skyrim).esp +*Frost Meshes Patch.esp +*Embers XD.esp +*Embers XD - Patch - JKs Skyrim.esp +*Embers XD - Patch - Vanilla Flames.esp +*Skyrim Remastered - Soul Gems.esp +*Rudy Nordic Pottery SSE.esp +*HPP - FirewoodSnow Campfire.esp +*HPP - Vaermina's Torpor.esp +*GQJ_DG_vampireamuletfix.esp +*GDOS - Glorious Solitude Door - Rotation Fix.esp +*GDOS - Splendid Mechanized Dwemer Door.esp +*Skyland Imperial Forts and Dungeons.esp +*VanillaArgoniansRedux.esp +*VWA_VanillaWarpaintsAbsolution.esp +*Beards for High Poly Head.esp +*Brows.esp +*Maevan2EyeBrows.esp +*SGEyebrows.esp +*NB-Scars.esp +*TheEyesOfBeauty.esp +*The Eyes Of Beauty - Elves Edition.esp +*Kala_Eyes.esp +*KALA EYES ELVES.esp +*Kala_Orsimer Eyes.esp +*KALA_BEAST RACE EYES.esp +*ENB Light.esp +*Rallys Shaggycows of Skyrim.esp +*Bears of the North.esp +*PraedysSkeletons.esp +*Water for ENB - Patch - Expanded Towns and Cities.esp +*Water for ENB - Patch - Darker LOD Water.esp +*Wildlander.esp +*Wildlander_FULL.esp +*FNIS.esp +*Requiem for the Indifferent.esp +*DynDOLOD.esp +*Occlusion.esp +*DynDOLOD-load-remover.esp +*icepenguinworldmapclassic.esp +widescreen_skyui_fix.esp +`; diff --git a/src/__tests__/e2e/util/files/profiles/settings.ini.ts b/src/__tests__/e2e/util/files/profiles/settings.ini.ts new file mode 100644 index 00000000..5a83ca85 --- /dev/null +++ b/src/__tests__/e2e/util/files/profiles/settings.ini.ts @@ -0,0 +1,6 @@ +export const settings = () => ` +[General] +LocalSaves=false +LocalSettings=true +AutomaticArchiveInvalidation=false +`; diff --git a/src/__tests__/e2e/util/generate-modpack-files.ts b/src/__tests__/e2e/util/generate-modpack-files.ts new file mode 100644 index 00000000..d1946e80 --- /dev/null +++ b/src/__tests__/e2e/util/generate-modpack-files.ts @@ -0,0 +1,191 @@ +import fs from "fs"; +import { removeSync } from "fs-extra"; +import path from "path"; +import os from "os"; +import { ModOrganizerIni } from "./files/ModOrganizer.ini"; +import { SSEDisplayTweaks } from "./files/SSEDisplayTweaks.ini"; +import namesMO2 from "./files/namesMO2.json"; +import namesENB from "./files/namesENB.json"; +import { archives } from "./files/profiles/archives.txt"; +import { loadorder } from "./files/profiles/loadorder.txt"; +import { modlist } from "./files/profiles/modlist.txt"; +import { plugins } from "./files/profiles/plugins.txt"; +import { settings } from "./files/profiles/settings.ini"; +import { skyrim } from "./files/profiles/Skyrim.ini"; +import { skyrimCustom } from "./files/profiles/SkyrimCustom.ini"; +import { skyrimPrefs } from "./files/profiles/SkyrimPrefs.ini"; + +export type DirectoryStructure = { + [name: string]: string | DirectoryStructure; +}; + +export const createDirectoryStructure = ( + directoryObject: DirectoryStructure, + basePath = "" +) => { + fs.mkdirSync(basePath, { recursive: true }); + + for (const [name, item] of Object.entries(directoryObject)) { + const itemPath = `${basePath}/${name}`; + + if (typeof item === "object") { + fs.mkdirSync(itemPath, { recursive: true }); + createDirectoryStructure(item, itemPath); + } else { + // Ensure correct line endings for the platform + const content = + typeof item === "string" ? item.replace(/\n/g, os.EOL) : item; + fs.writeFileSync(itemPath, content); + fs.chmodSync(itemPath, 0o777); // Set file permissions to 777 so the app can execute them + } + } +}; + +const enbFiles = (content: string) => { + return { + enbseries: { + mock1: {}, + mock2: {}, + }, + "d3d11.dll": "", + "d3dcompiler_46e.dll": "", + "enblocal.ini": content, + "enbseries.ini": content, + "ReShade.ini": content, + "zangdar'ENB.ini": content, + }; +}; + +const executable = (name: string) => ` +#!/bin/bash + +echo "Ran ${name} executable" +`; +/** + * The files that are needed by the launcher for a "valid" modpack + */ +export const mockModpack: DirectoryStructure = { + "ModOrganizer.exe": executable("ModOrganizer"), + "ModOrganizer.ini": ModOrganizerIni, + mods: { + Wildlander: { + SKSE: { + Plugins: { + "SSEDisplayTweaks.ini": SSEDisplayTweaks, + }, + }, + }, + }, + profiles: { + "1_Wildlander-ULTRA": { + "archives.txt": archives(), + "loadorder.txt": loadorder(), + "modlist.txt": modlist(), + "plugins.txt": plugins(), + "settings.ini": settings(), + "Skyrim.ini": skyrim(), + "SkyrimCustom.ini": skyrimCustom(), + "SkyrimPrefs.ini": skyrimPrefs(), + }, + "1_Wildlander-HIGH": { + "archives.txt": archives(), + "loadorder.txt": loadorder(), + "modlist.txt": modlist(), + "plugins.txt": plugins(), + "settings.ini": settings(), + "Skyrim.ini": skyrim(), + "SkyrimCustom.ini": skyrimCustom(), + "SkyrimPrefs.ini": skyrimPrefs(), + }, + "1_Wildlander-MEDIUM": { + "archives.txt": archives(), + "loadorder.txt": loadorder(), + "modlist.txt": modlist(), + "plugins.txt": plugins(), + "settings.ini": settings(), + "Skyrim.ini": skyrim(), + "SkyrimCustom.ini": skyrimCustom(), + "SkyrimPrefs.ini": skyrimPrefs(), + }, + "1_Wildlander-LOW": { + "archives.txt": archives(), + "loadorder.txt": loadorder(), + "modlist.txt": modlist(), + "plugins.txt": plugins(), + "settings.ini": settings(), + "Skyrim.ini": skyrim(), + "SkyrimCustom.ini": skyrimCustom(), + "SkyrimPrefs.ini": skyrimPrefs(), + }, + "1_Wildlander-POTATO": { + "archives.txt": archives(), + "loadorder.txt": loadorder(), + "modlist.txt": modlist(), + "plugins.txt": plugins(), + "settings.ini": settings(), + "Skyrim.ini": skyrim(), + "SkyrimCustom.ini": skyrimCustom(), + "SkyrimPrefs.ini": skyrimPrefs(), + }, + }, + "Stock Game": { + "SkyrimSE.exe": executable("SkyrimSE"), + "SkyrimSELauncher.exe": executable("SkyrimSELauncher"), + }, + launcher: { + "namesMO2.json": JSON.stringify(namesMO2), + "namesENB.json": JSON.stringify(namesENB), + "ENB Presets": { + "1_Shaders_ULTRA": enbFiles("ultra"), + "1_Shaders_HIGH": enbFiles("high"), + "1_Shaders_LOW": enbFiles("low"), + }, + }, +}; + +/** + * Wabbajack saves its settings to APPDATA. + * If working on a system that isn't windows, this can be useful to mock APPDATA. + */ +export const createWabbajackInstallSettings = ( + installPath: string, + version = "1.1.0" +) => ({ + ModListLocation: installPath, + InstallLocation: installPath, + DownloadLocation: installPath, + Metadata: { + title: "Wildlander", + description: + "Wildlander is a modlist that aims to make Skyrim more immersive and challenging while also making it more beautiful and realistic.", + version, + repositoryName: "Wildlander", + }, +}); + +export const getMockAPPDATALocal = ( + installPath: string +): DirectoryStructure => ({ + Wabbajack: { + // eslint-disable-next-line @typescript-eslint/naming-convention + saved_settings: { + "install-settings-1234567890123456.json": JSON.stringify( + createWabbajackInstallSettings(installPath) + ), + "install-settings-invalid.json": JSON.stringify( + createWabbajackInstallSettings("/invalid/path", "1.0.0") + ), + }, + }, +}); + +// File has been run via the cli so create the files +if (process.argv[1] === __filename) { + const rootPath = path.resolve(`${__dirname}/../../../../mock-files`); + const modpackPath = `${rootPath}/mock-modpack-install`; + const appDataPath = `${rootPath}/local`; + + removeSync(rootPath); + createDirectoryStructure(mockModpack, modpackPath); + createDirectoryStructure(getMockAPPDATALocal(modpackPath), appDataPath); +} diff --git a/src/__tests__/e2e/util/global-setup.ts b/src/__tests__/e2e/util/global-setup.ts new file mode 100644 index 00000000..691cdef1 --- /dev/null +++ b/src/__tests__/e2e/util/global-setup.ts @@ -0,0 +1,47 @@ +import fs from "fs/promises"; +import { config } from "./config"; +import { exec } from "child_process"; +import util from "util"; + +const execAsync = util.promisify(exec); + +/** + * To gather coverage for the electron main process, the files must be instrumented. + * This does not do any compiling, it only adds coverage instrumenting to the files. + * Instrumenting adds coverage tracking to the files, which is then used to generate coverage reports. + */ +async function instrumentFiles() { + // Ensure the instrumented directory is removed before instrumentation + await fs.rm(config().paths.instrumented, { + recursive: true, + force: true, + }); + + const command = `npx lb-nyc instrument ./dist ${ + config().paths.instrumented + } --complete-copy --delete --nycrc-path src/__tests__/e2e/.nycrc`; + + try { + const { stderr } = await execAsync(command); + if (stderr) { + console.error("Instrumentation warnings/errors:", stderr); + } + } catch (error) { + console.error("Error during instrumentation:", error); + throw error; + } +} + +async function globalSetup() { + // Remove any existing coverage or mock files + for (const dir of ["coverage", "mock-files"]) { + await fs.rm(`${config().paths.playwright}/${dir}`, { + recursive: true, + force: true, + }); + } + + await instrumentFiles(); +} + +export default globalSetup; diff --git a/src/__tests__/e2e/util/global-teardown.ts b/src/__tests__/e2e/util/global-teardown.ts new file mode 100644 index 00000000..a4a31aa2 --- /dev/null +++ b/src/__tests__/e2e/util/global-teardown.ts @@ -0,0 +1,87 @@ +import fs from "fs/promises"; +import { config } from "./config"; +import libCoverage from "istanbul-lib-coverage"; +import libReport from "istanbul-lib-report"; +import reports from "istanbul-reports"; +import SourceMaps from "nyc/lib/source-maps"; + +async function displayCoverage(): Promise { + const files = await fs.readdir(config().paths.coverage); + + // Check if there are any .json files (coverage files) + const hasCoverage = files.some((file) => file.endsWith(".json")); + + if (!hasCoverage) { + console.warn("No coverage data found."); + return; + } + + // The electron main process coverage data needs to have the source map remapped so store it separately + const mainCoverageMap = libCoverage.createCoverageMap({}); + const additionalCoverageMap = libCoverage.createCoverageMap({}); + + for (const file of files) { + if (file.endsWith(".json")) { + const coverageData = await fs.readFile( + `${config().paths.coverage}/${file}`, + "utf8" + ); + if (file.startsWith("main-")) { + mainCoverageMap.merge(JSON.parse(coverageData)); + } else { + additionalCoverageMap.merge(JSON.parse(coverageData)); + } + } + } + + const sourceMap = new SourceMaps({ + cache: false, + cacheDirectory: `${config().paths.coverage}/cache`, + }); + // Remap the electron main process coverage data to ensure sourcemaps are respected + mainCoverageMap.data = await sourceMap.remapCoverage(mainCoverageMap.data); + + // Combine the main coverage map and the additional coverage map + mainCoverageMap.merge(additionalCoverageMap.toJSON()); + + // create a context for report generation + const context = libReport.createContext({ + dir: `${config().paths.coverage}/html-report`, + defaultSummarizer: "nested", + coverageMap: mainCoverageMap, + }); + + // create the text report + const textReport = reports.create("text", { + skipEmpty: false, + skipFull: false, + }); + textReport.execute(context); + + // create the HTML report + const htmlReport = reports.create("html", {}); + htmlReport.execute(context); +} + +const clearMockFiles = async () => { + if (process.env["CLEAR_MOCK_FILES"] !== "false") { + await fs.rm(`${config().paths.mockFiles}`, { + recursive: true, + force: true, + }); + } +}; + +async function globalTeardown() { + if (process.env["COVERAGE"] !== "false") { + try { + await displayCoverage(); + } catch (error) { + console.error("Failed to display coverage:", error); + } + } + + await clearMockFiles(); +} + +export default globalTeardown; diff --git a/src/__tests__/e2e/util/graphics.ts b/src/__tests__/e2e/util/graphics.ts new file mode 100644 index 00000000..5828c97d --- /dev/null +++ b/src/__tests__/e2e/util/graphics.ts @@ -0,0 +1,63 @@ +import type { Page } from "@playwright/test"; +import { + waitForLaunchButtonDisabled, + waitForLaunchButtonEnabled, +} from "./app-state"; + +/** + * Hardcoded graphics presets configuration + * - value: The actual preset name used in the system + * - text: The display text shown to the user + */ +export const GRAPHICS_PRESETS = { + ULTRA: { + value: "1_Wildlander-ULTRA", + text: "Ultra Graphics", + }, + HIGH: { + value: "1_Wildlander-HIGH", + text: "High Graphics", + }, + MEDIUM: { + value: "1_Wildlander-MEDIUM", + text: "Medium Graphics", + }, + LOW: { + value: "1_Wildlander-LOW", + text: "Low Graphics", + }, + POTATO: { + value: "1_Wildlander-POTATO", + text: "Potato Graphics", + }, +}; + +/** + * Helper function to select a graphics preset from the dropdown + * @param window The Playwright Page object + * @param preset The graphics preset object to select + * @returns The selected graphics preset value (used for verification in tests) + */ +export const selectGraphics = async ( + window: Page, + preset: (typeof GRAPHICS_PRESETS)[keyof typeof GRAPHICS_PRESETS] +) => { + const graphicsDropdown = window.getByTestId("graphics-dropdown"); + await graphicsDropdown.getByTestId("dropdown-head").click(); + + // Get the promise for waiting for the button to be disabled before clicking + // This ensures we capture the disabled state even if it happens very quickly + const disabledPromise = waitForLaunchButtonDisabled(window); + + // Select the graphics preset + const optionsContainer = graphicsDropdown.getByTestId("dropdown-options"); + await optionsContainer.getByText(preset.text).click(); + + // Now await the promise to ensure the button was disabled at least once after the click + await disabledPromise; + + // Wait for the graphics change to complete (button enabled again) + await waitForLaunchButtonEnabled(window); + + return preset.value; +}; diff --git a/src/__tests__/e2e/util/mocks.ts b/src/__tests__/e2e/util/mocks.ts new file mode 100644 index 00000000..0fe7614a --- /dev/null +++ b/src/__tests__/e2e/util/mocks.ts @@ -0,0 +1,344 @@ +import type { ProcessWithGlobals } from "../../../main/types/process-globals"; +import type { LauncherApplication } from "../../../main/application"; +import type { ElectronApplication, JSHandle } from "playwright"; +import { ChildProcessBinding } from "../../../main/bindings/child-process.binding"; +import type psList from "ps-list"; +import type { ProcessDescriptor } from "ps-list"; +import { PsListBinding } from "../../../main/bindings/psList.binding"; +import { + ProcessKill, + ProcessKillBinding, +} from "../../../main/bindings/process-kill.binding"; +import { ConfigBinding } from "../../../main/bindings/config.binding"; +import type { Resolution } from "../../../shared/types/Resolution"; +import type child_process from "child_process"; + +/** + * Mocks the dialog.showErrorBox method in Electron + * @param electronApp - The Electron application instance from Playwright + * @returns A JSHandle to a function that returns the error dialog arguments + */ +export const mockErrorDialog = async ( + electronApp: ElectronApplication +): Promise< + JSHandle<() => { title: string; content: string; dialogShown: boolean }> +> => { + return electronApp.evaluateHandle(({ dialog }) => { + let title = ""; + let content = ""; + let dialogShown = false; + + // Override showErrorBox method to capture dialog arguments + dialog.showErrorBox = (dialogTitle, dialogContent) => { + title = dialogTitle; + content = dialogContent; + dialogShown = true; + }; + + // Return a function to retrieve the captured dialog arguments later + return () => ({ + title, + content, + dialogShown, + }); + }); +}; + +/** + * Mocks the dialog.showMessageBox method in Electron + * @param electronApp - The Electron application instance from Playwright + * @param responseNumber - Optional response number to return (defaults to 0) + * @returns A JSHandle to a function that returns the message box arguments + */ +export const mockMessageBox = async ( + electronApp: ElectronApplication, + responseNumber = 0 +): Promise< + JSHandle< + () => { + messageBoxShown: boolean; + messageBoxTitle: string; + messageBoxMessage: string; + } + > +> => { + return electronApp.evaluateHandle(({ dialog }, response) => { + let messageBoxShown = false; + let messageBoxTitle = ""; + let messageBoxMessage = ""; + + // Override showMessageBox method to capture dialog arguments + dialog.showMessageBox = (options) => { + messageBoxShown = true; + messageBoxTitle = options.title ?? ""; + messageBoxMessage = + options && "message" in options ? options.message ?? "" : ""; + return Promise.resolve({ response, checkboxChecked: false }); + }; + + // Return a function to retrieve the captured dialog arguments later + return () => ({ + messageBoxShown, + messageBoxTitle, + messageBoxMessage, + }); + }, responseNumber); +}; + +/** + * Mocks the psList function in the IoC container + * @param electronApp The electron application + * @param mockProcessList Optional list of processes to be returned + * @returns A handle to access the mock function's arguments + */ +export async function replacePsListWithMock( + electronApp: ElectronApplication, + mockProcessList: ProcessDescriptor[] = [] +) { + return electronApp.evaluateHandle( + ({}, { psListBinding, mockProcesses }) => { + const processGlobals = (process as ProcessWithGlobals)._globals_; + + let calls = 0; + let lastCalledWith: unknown[] | undefined; + + const mockPsList: typeof psList = (...args: unknown[]) => { + calls++; + lastCalledWith = args; + return Promise.resolve(mockProcesses); + }; + + // The psList method is `promisified` by default, so we need to override the custom method to use our mock + (mockPsList as unknown as Record)[ + processGlobals.promisifyCustomSymbol + ] = mockPsList; + + // Replace the binding with our mock + (processGlobals.launcherApplication as LauncherApplication) + .bind(psListBinding) + .to(mockPsList); + + // Return a function that provides access to the mock's state + return () => ({ + calls, + lastCalledWith, + }); + }, + { psListBinding: PsListBinding.toString(), mockProcesses: mockProcessList } + ); +} + +/** + * Mocks the process.kill function in the IoC container + * @param electronApp The electron application + * @returns A handle to access the mock function's arguments + */ +export async function mockProcessKill(electronApp: ElectronApplication) { + return electronApp.evaluateHandle(({}, processKillBinding) => { + const processGlobals = (process as ProcessWithGlobals)._globals_; + + let calls = 0; + let lastCalledWith: { pid: number; signal?: string | number } | undefined; + const allCalledWith: { pid: number; signal?: string | number }[] = []; + + // Create a mock process.kill function that records what it was called with + const mockKill: ProcessKill = (pid, signal) => { + calls++; + lastCalledWith = signal !== undefined ? { pid, signal } : { pid }; + allCalledWith.push(signal !== undefined ? { pid, signal } : { pid }); + return true; // process.kill returns true if the process exists + }; + + // Replace the binding with our mock + (processGlobals.launcherApplication as LauncherApplication) + .bind(processKillBinding) + .to(mockKill); + + // Return a function that provides access to the mock's state + return () => ({ + calls, + lastCalledWith, + allCalledWith, + }); + }, ProcessKillBinding.toString()); +} + +/** + * Creates a mock for the child process exec method that allows manual resolution + * @param electronApp - The Electron application instance from Playwright + * @returns A JSHandle to functions that allow controlling the exec promise + * @example + * ```js + * const execHandle = await replaceChildProcessExecWithMock(electronApp); + * await execHandle.evaluate(handle => handle.resolveExec()); + * const command = await execHandle.evaluate(handle => handle.getCommand()); + * ``` + */ +export const replaceChildProcessExecWithMock = async ( + electronApp: ElectronApplication +): Promise< + JSHandle<{ + /** + * @returns The command that was passed to the exec method + * @example `await execHandle.evaluate(handle => handle.getCommand());` + */ + getCommand: () => string; + /** + * Resolves the exec promise with a default value + * @example `await execHandle.evaluate(handle => handle.resolveExec());` + */ + resolveExec: () => Promise; + /** + * @returns A promise that resolves when the exec method has been called + * @example `await execHandle.evaluate(handle => handle.waitForExec());` + */ + waitForExec: () => Promise; + }> +> => { + return electronApp.evaluateHandle(async ({}, childProcessBinding) => { + const processGlobals = (process as ProcessWithGlobals)._globals_; + + let command: string; + let resolvePromise: (value: { stdout: string; stderr: string }) => void; + const waitForExec = () => + new Promise((resolve, reject) => { + const timeout = setTimeout( + () => reject("Timeout waiting for exec"), + 30000 + ); + const check = () => { + if (command) { + clearTimeout(timeout); + resolve(); + } else { + setTimeout(check, 500); + } + }; + check(); + }); + + // Replace the exec method with a mock that returns a promise that can be manually resolved + const mockExecFunction = async (cmd: string) => { + command = cmd; + return new Promise<{ stdout: string; stderr: string }>((resolve) => { + resolvePromise = (value) => { + resolve(value); + }; + }); + }; + + // Add the __promisify__ property to match typeof child_process.exec + const childProcessMock: { + exec: typeof child_process.exec; + } = { + exec: Object.assign(mockExecFunction, { + // eslint-disable-next-line @typescript-eslint/naming-convention + __promisify__: mockExecFunction, + }) as unknown as typeof child_process.exec, + }; + + // The exec method is `promisified` by default, so we need to override the custom method to use our mock + (childProcessMock.exec as unknown as Record)[ + processGlobals.promisifyCustomSymbol + ] = childProcessMock.exec; + + // Replace the child process with a mock + (processGlobals.launcherApplication as LauncherApplication) + .bind(childProcessBinding) + .to(childProcessMock); + + // Return functions that can be used to control the exec promise + return { + getCommand: () => command, + resolveExec: async () => { + await waitForExec(); + resolvePromise({ stdout: "", stderr: "" }); + }, + waitForExec, + }; + }, ChildProcessBinding.key); +}; + +/** + * Mocks the electron.shell.openPath method + * @param electronApp - The Electron application instance from Playwright + * @returns A JSHandle to a function that returns the path argument + */ +export const mockElectronShell = async ( + electronApp: ElectronApplication +): Promise { pathArgument: string }>> => { + return electronApp.evaluateHandle(({ shell }) => { + let pathArgument = ""; + + shell.openPath = (path: string) => { + pathArgument = path; + return Promise.resolve(""); + }; + + // Return a function to retrieve the captured arguments later + return () => ({ + pathArgument, + }); + }); +}; + +/** + * Mocks the Store object and binds it to ConfigBinding + * @param electronApp The electron application + * @returns A handle to access whether openInEditor was called + */ +export async function mockUserPreferencesStore( + electronApp: ElectronApplication +) { + return electronApp.evaluateHandle(({}, configBindingKey) => { + const processGlobals = (process as ProcessWithGlobals)._globals_; + + let openInEditorCalled = false; + + // Create a mock Store object + const mockStore = { + openInEditor: () => { + openInEditorCalled = true; + return undefined; + }, + }; + + // Replace the binding with our mock + (processGlobals.launcherApplication as LauncherApplication) + .bind(configBindingKey) + .to(mockStore); + + // Return a function that provides access to the mock's state + return () => ({ + openInEditorCalled, + }); + }, ConfigBinding.key); +} + +/** + * Helper function to mock the screen resolution + * @param electronApp The Electron application instance + * @param resolution The resolution object with width and height properties + */ +export const mockScreenResolution = async ( + electronApp: ElectronApplication, + resolution: Resolution +) => { + // Mock the screen.getPrimaryDisplay method to return the specified resolution + await electronApp.evaluate(({ screen }, { width, height }) => { + const originalGetPrimaryDisplay = screen.getPrimaryDisplay; + + // Override the getPrimaryDisplay method + screen.getPrimaryDisplay = () => { + // Create a mock display with the specified resolution + return { + ...originalGetPrimaryDisplay(), + size: { + width, + height, + }, + scaleFactor: 1, + }; + }; + }, resolution); +}; diff --git a/src/__tests__/e2e/util/modlist.ts b/src/__tests__/e2e/util/modlist.ts new file mode 100644 index 00000000..5f4f89f4 --- /dev/null +++ b/src/__tests__/e2e/util/modlist.ts @@ -0,0 +1,75 @@ +import { getUserPreferences } from "./user-preferences"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import fs from "fs/promises"; +import * as os from "os"; +import type { MockFilesPaths } from "./setup"; +import { IIniObjectSection, parse } from "js-ini"; + +/** + * Reads and splits the content of a modpack file into lines, given the mock files paths and filename. + * @param mockFiles The mock files paths object + * @param filename The name of the file + * @returns The lines of the file as an array of strings + */ +const readAndSplitMultilineFile = async ( + mockFiles: MockFilesPaths, + filename: string +): Promise => { + const userPreferences = await getUserPreferences(mockFiles.mockFilesPath); + const selectedProfile = userPreferences[ + USER_PREFERENCE_KEYS.PRESET + ] as string; + const filePath = `${mockFiles.mockModpackPath}/profiles/${selectedProfile}/${filename}`; + const fileContent = await fs.readFile(filePath, "utf-8"); + return fileContent.split(os.EOL); +}; + +/** + * Helper function to check if a mod is enabled in modlist.txt for the currently selected profile + * @param modName The name of the mod to check + * @param mockFiles The mock files paths object + */ +export const isModEnabled = async ( + modName: string, + mockFiles: MockFilesPaths +): Promise => { + // Read and split the modlist.txt file + const mods = await readAndSplitMultilineFile(mockFiles, "modlist.txt"); + + // Check if the mod is in the list and enabled + return mods.some( + (mod) => mod.replace(/^[-+]/, "") === modName && mod.startsWith("+") + ); +}; + +/** + * Helper function to check if a plugin is enabled in plugins.txt for the currently selected profile + * @param pluginName The name of the plugin to check + * @param mockFiles The mock files paths object + */ +export const isPluginEnabled = async ( + pluginName: string, + mockFiles: MockFilesPaths +): Promise => { + // Check the selected profile's plugins.txt + const plugins = await readAndSplitMultilineFile(mockFiles, "plugins.txt"); + + // Check if the plugin is in the list and if it's enabled (starts with *) + return plugins.some((plugin) => { + const pluginNameWithoutPrefix = plugin.replace(/^\*/, "").trim(); + return pluginNameWithoutPrefix === pluginName && plugin.startsWith("*"); + }); +}; + +/** + * Helper function to get the parsed SSEDisplayTweaks.ini file + * @param mockFiles The mock files paths + * @returns The parsed ini file with the correct type + */ +export const getDisplayTweaksIni = async ( + mockFiles: MockFilesPaths +): Promise<{ Render: IIniObjectSection }> => { + const iniFilePath = `${mockFiles.mockModpackPath}/mods/Wildlander/SKSE/Plugins/SSEDisplayTweaks.ini`; + const iniContent = await fs.readFile(iniFilePath, "utf-8"); + return parse(iniContent, { comment: "#" }) as { Render: IIniObjectSection }; +}; diff --git a/src/__tests__/e2e/util/navigation.ts b/src/__tests__/e2e/util/navigation.ts new file mode 100644 index 00000000..f44cf1e6 --- /dev/null +++ b/src/__tests__/e2e/util/navigation.ts @@ -0,0 +1,27 @@ +import type { Locator, Page } from "@playwright/test"; + +/** + * Enum representing the application pages + */ +export enum PAGES { + HOME = "Home", + COMMUNITY = "Community", + ADVANCED = "Advanced", +} + +/** + * Navigates to the specified page and waits for it to be visible + * @param window The Playwright page object + * @param page The page to navigate to (from PAGES enum) + * @returns The page's locator + */ +export const navigateAndWait = async ( + window: Page, + page: PAGES +): Promise => { + await window.getByTestId("navigation-container").getByText(page).click(); + const pageTestId = `page-${page.toLowerCase()}`; + await window.getByTestId(pageTestId).waitFor({ state: "visible" }); + + return window.getByTestId(pageTestId); +}; diff --git a/src/__tests__/e2e/util/patreon.ts b/src/__tests__/e2e/util/patreon.ts new file mode 100644 index 00000000..a2a328db --- /dev/null +++ b/src/__tests__/e2e/util/patreon.ts @@ -0,0 +1,149 @@ +import type { Page } from "@playwright/test"; +import type { Patron } from "../../../renderer/src/services/patreon.service"; +import type { Post } from "../../../renderer/src/services/posts.service"; + +// Mock data for news posts +export const mockPosts: Post[] = [ + { + title: "Test Post 1", + content: "This is test post 1", + published: "2023-01-01T00:00:00Z", + url: "/test-post-1", + tags: ["test", "news"], + }, + { + title: "Test Post 2", + content: "This is test post 2", + published: "2023-01-02T00:00:00Z", + url: "/test-post-2", + tags: ["test", "announcement"], + }, +]; + +// Mock data for patrons +export const mockPatrons: Patron[] = [ + { + name: "Test Super Patron 1", + tier: "Super Patron", + }, + { + name: "Test Super Patron 2", + tier: "Super Patron", + }, + { + name: "Test Patron 1", + tier: "Patron", + }, + { + name: "Test Patron 2", + tier: "Patron", + }, +]; + +/** + * Get a mock last_updated timestamp + * @param offsetSeconds Optional offset in seconds to apply to the current time + * @returns A mock last_updated object with timestamp in seconds + */ +export const getMockLastUpdated = ( + offsetSeconds = 0 +): { + // eslint-disable-next-line @typescript-eslint/naming-convention + last_updated: number; +} => { + return { + // This value comes from the API so it cannot be changed to fit the convention + // eslint-disable-next-line @typescript-eslint/naming-convention + last_updated: Math.floor(Date.now() / 1000) + offsetSeconds, + }; +}; + +/** + * Mock the Patreon API endpoint for both posts and patrons + * @param window The Playwright Page object + * @param mockData The mock data to return in the response + */ +export const mockPatreonEndpoint = async ( + window: Page, + mockData: { posts?: Post[]; patrons?: Patron[] } = {} +): Promise => { + const { posts = mockPosts, patrons = mockPatrons } = mockData; + + await window.route("**/api/patreon", (route) => { + return route.fulfill({ + status: 200, + body: JSON.stringify({ posts, patrons }), + }); + }); +}; + +/** + * Mock the Patreon API endpoint to return an error + * @param window The Playwright Page object + * @param status The HTTP status code to return + * @param body The response body + */ +export const mockPatreonError = async ( + window: Page, + status = 500, + body = "Internal Server Error" +): Promise => { + await window.route("**/api/patreon", (route) => { + return route.fulfill({ + status, + body, + }); + }); +}; + +/** + * Mock the last-updated API endpoint + * @param window The Playwright Page object + * @param offsetSeconds Optional offset in seconds to apply to the current time + */ +export const mockLastUpdated = async ( + window: Page, + offsetSeconds = 0 +): Promise => { + await window.route("**/api/last-updated", (route) => { + return route.fulfill({ + status: 200, + body: JSON.stringify(getMockLastUpdated(offsetSeconds)), + }); + }); +}; + +/** + * Mock the last-updated API endpoint to return an error + * @param window The Playwright Page object + * @param status The HTTP status code to return + * @param body The response body + */ +export const mockLastUpdatedError = async ( + window: Page, + status = 500, + body = "Internal Server Error" +): Promise => { + await window.route("**/api/last-updated", (route) => { + return route.fulfill({ + status, + body, + }); + }); +}; + +export const addPatronsToLocalStorage = async ( + window: Page, + cachedPatrons: Patron[] +) => { + // Set the cache with a very recent timestamp to ensure it's used + await window.evaluate((patrons) => { + localStorage.setItem( + "patreon.patrons", + JSON.stringify({ + age: Date.now(), + content: patrons, + }) + ); + }, cachedPatrons); +}; diff --git a/src/__tests__/e2e/util/profile.ts b/src/__tests__/e2e/util/profile.ts new file mode 100644 index 00000000..fab18096 --- /dev/null +++ b/src/__tests__/e2e/util/profile.ts @@ -0,0 +1,89 @@ +import type { Page } from "@playwright/test"; +import { + waitForLaunchButtonDisabled, + waitForLaunchButtonEnabled, +} from "./app-state"; + +/** + * Unified profile configuration object that combines all profile information + * - id: Unique identifier for the profile (used in tests) + * - value: The actual profile name used in the system + * - text: The display text shown to the user + * - hidden: Whether the profile is hidden by default + */ +export const PROFILES = { + // Standard profiles + STANDARD: { + id: "STANDARD", + value: "0_Wildlander-STANDARD", + text: "Standard Modlist", + hidden: false, + }, + PERFORMANCE: { + id: "PERFORMANCE", + value: "0_Wildlander-PERFORMANCE", + text: "Performance Modlist", + hidden: false, + }, + + // Hidden profiles (only available in profile-selection.e2e.ts tests) + ULTRA: { + id: "ULTRA", + value: "1_Wildlander-ULTRA", + text: "Ultra Graphics", + hidden: true, + }, + HIGH: { + id: "HIGH", + value: "1_Wildlander-HIGH", + text: "High Graphics", + hidden: true, + }, + MEDIUM: { + id: "MEDIUM", + value: "1_Wildlander-MEDIUM", + text: "Medium Graphics", + hidden: true, + }, + LOW: { + id: "LOW", + value: "1_Wildlander-LOW", + text: "Low Graphics", + hidden: true, + }, + POTATO: { + id: "POTATO", + value: "1_Wildlander-POTATO", + text: "Potato Graphics", + hidden: true, + }, +}; + +/** + * Helper function to select a profile from the dropdown + * @param window The Playwright Page object + * @param profile The profile object to select + * @returns The selected profile value + */ +export const selectProfile = async ( + window: Page, + profile: (typeof PROFILES)[keyof typeof PROFILES] +) => { + const profileDropdown = window.getByTestId("profile-dropdown"); + await profileDropdown.getByTestId("dropdown-head").click(); + + // Get the promise for waiting for the button to be disabled before clicking + // This ensures we capture the disabled state even if it happens very quickly + const disabledPromise = waitForLaunchButtonDisabled(window); + + const optionsContainer = profileDropdown.getByTestId("dropdown-options"); + await optionsContainer.getByText(profile.text).click(); + + // Now await the promise to ensure the button was disabled at least once after the click + await disabledPromise; + + // Wait for the profile change to complete (button enabled again) + await waitForLaunchButtonEnabled(window); + + return profile.value; +}; diff --git a/src/__tests__/e2e/util/resolution.ts b/src/__tests__/e2e/util/resolution.ts new file mode 100644 index 00000000..de730a5b --- /dev/null +++ b/src/__tests__/e2e/util/resolution.ts @@ -0,0 +1,38 @@ +import type { Page } from "@playwright/test"; +import type { Resolution } from "../../../shared/types/Resolution"; +import { + waitForLaunchButtonDisabled, + waitForLaunchButtonEnabled, +} from "./app-state"; + +/** + * Helper function to select a resolution from the dropdown + * @param window The Playwright Page object + * @param resolution The resolution object with width and height properties + * @returns The same resolution object (used for verification in some tests) + */ +export const selectResolution = async ( + window: Page, + resolution: Resolution +) => { + const resolutionDropdown = window.getByTestId("resolution-dropdown"); + await resolutionDropdown.getByTestId("dropdown-head").click(); + + const { width, height } = resolution; + const targetResolutionText = `${width} x ${height}`; + + // Get the promise for waiting for the button to be disabled before clicking + // This ensures we capture the disabled state even if it happens very quickly + const disabledPromise = waitForLaunchButtonDisabled(window); + + // Select the resolution + await resolutionDropdown.getByText(targetResolutionText).click(); + + // Now await the promise to ensure the button was disabled at least once after the click + await disabledPromise; + + // Wait for the resolution change to complete (button enabled again) + await waitForLaunchButtonEnabled(window); + + return resolution; +}; diff --git a/src/__tests__/e2e/util/setup.ts b/src/__tests__/e2e/util/setup.ts new file mode 100644 index 00000000..1f7bf5af --- /dev/null +++ b/src/__tests__/e2e/util/setup.ts @@ -0,0 +1,282 @@ +import { + createDirectoryStructure, + getMockAPPDATALocal, + mockModpack, +} from "./generate-modpack-files"; +import { config } from "./config"; +import fs from "fs/promises"; +import { + _electron as electron, + expect, + Page, + test as Test, +} from "@playwright/test"; +import type { ElectronApplication } from "playwright"; +import { randomBytes } from "crypto"; +import path from "path"; + +export type CloseTestApp = () => Promise; + +type WindowWithCoverage = Page & { + // eslint-disable-next-line @typescript-eslint/naming-convention + __coverage__: Record; +}; + +type GlobalWithCoverage = NodeJS.Global & { + // eslint-disable-next-line @typescript-eslint/naming-convention + __coverage__: Record; +}; + +const UUID = (): string => { + return randomBytes(16).toString("hex"); +}; + +export interface MockFilesPaths { + // The full path to the mock files inside the playwright directory + mockFilesPath: string; + // The path to the mock modpack directory "/{mockFilesPath}/mock-modpack-install" + mockModpackPath: string; + // The path to a mock %APP_DATA% that will be set on the Electron instance "/${mockFilesPath}/local" + mockAppDataLocalPath: string; +} + +/** + * Create mock files for the launcher to use. + * - userPreferences.json + * - wabbajack install settings + * - mock modpack install + */ +export const createMockFiles = async ( + test: typeof Test, + modpackPath?: string +): Promise => { + // Create an area for the Electron app to store config/files. + const mockFilesPath = path.join( + config().paths.mockFiles, + test.info().titlePath[1] as string, + modpackPath ?? UUID() + ); + await fs.mkdir(mockFilesPath, { recursive: true }); + const mockModpackPath = `${mockFilesPath}/mock-modpack-install`; + const mockAppDataLocalPath = `${mockFilesPath}/local`; + + createDirectoryStructure(mockModpack, mockModpackPath); + createDirectoryStructure( + getMockAPPDATALocal(mockModpackPath), + mockAppDataLocalPath + ); + + return { + mockFilesPath, + mockModpackPath, + mockAppDataLocalPath, + }; +}; + +export const startTestApp = async ( + test: typeof Test, + modpackPath?: string +): Promise<{ + mockFiles: MockFilesPaths; + window: Page; + electronApp: ElectronApplication; + closeTestApp: CloseTestApp; +}> => { + const { mockFilesPath, mockModpackPath, mockAppDataLocalPath } = + await createMockFiles(test, modpackPath); + + // Launch Electron app. + const electronApp = await electron.launch({ + args: [`${config().paths.instrumented}/main.js`], + env: { + ...process.env, + CONFIG_PATH: `${mockFilesPath}/config`, + APPDATA: `${mockFilesPath}/APPDATA`, + MULTIPLE_INSTANCE: "true", + // Disable this to open dev tools by default + IS_TEST: "true", + LOG_PATH: `${mockFilesPath}/logs`, + }, + // recordVideo: { dir: "test-results" }, + }); + + // Attach the electron logs to the current process. + if (process.env["DEBUG"]) { + electronApp.on("console", console.log); + } + + // Get the first window that the app opens, wait if necessary. + const window = await electronApp.firstWindow(); + + if (process.env["DEBUG"]) { + // Direct Electron Renderer console to Node terminal. + window.on("console", console.log); + } + + // Move the window slightly in a random direction by 200 pixels for e2e tests, + // but only if playwrights is using more than one worker + // this allows all windows to be visible when using multiple workers + if (!process.env["CI"]) { + // CI uses only 1 worker, local uses 3 workers by default + // eslint-disable-next-line @typescript-eslint/naming-convention + await electronApp.evaluate(({ BrowserWindow }) => { + const offset = 200; + const win = BrowserWindow.getAllWindows()[0]; + if (win) { + const [x, y] = win.getPosition() as [number, number]; + // Generate random direction: up, down, left, right, or diagonal + const randomX = Math.random() > 0.5 ? offset : -offset; + const randomY = Math.random() > 0.5 ? offset : -offset; + win.setPosition(x + randomX, y + randomY); + } + }); + } + + const closeTestApp = async () => { + const rendererCoverage = await window.evaluate( + () => (window as unknown as WindowWithCoverage).__coverage__ + ); + await saveCoverage("renderer", rendererCoverage); + + const mainCoverage = await electronApp.evaluate( + () => (global as unknown as GlobalWithCoverage).__coverage__ + ); + await saveCoverage("main", mainCoverage); + + await electronApp.close(); + }; + + return { + mockFiles: { + mockFilesPath, + mockModpackPath, + mockAppDataLocalPath, + }, + window, + electronApp, + closeTestApp, + }; +}; + +const saveCoverage = async ( + preface: "main" | "renderer", + coverage: Record +) => { + await fs.mkdir(config().paths.coverage, { + recursive: true, + }); + + await fs.writeFile( + `${config().paths.coverage}/${preface}-${UUID()}.json`, + JSON.stringify(coverage, null, 2) + ); +}; + +export const screenshot = async ( + window: Page, + test: typeof Test, + name: string +) => { + return window.screenshot({ + path: `${config().paths.screenshots}/${test.name}/${name}.png`, + fullPage: true, + }); +}; + +export const waitForAppLoaded = async (window: Page): Promise => { + await window.getByTestId("launch-game").waitFor({ state: "visible" }); +}; + +/** + * Sets the modpack directory in user preferences and waits for the app to load + * This is useful for tests that need to set the modpack directory before loading the app + * + * @param window The Playwright page object + */ +export const setModpackAndWaitForAppLoaded = async ( + window: Page +): Promise => { + await selectFirstModpack(window); +}; + +/** + * Waits for the mod directory selection to be available + * This is used for tests that need to interact with the mod directory selection screen + * + * @param window The Playwright page object + */ +export const waitForModDirectorySelect = async ( + window: Page +): Promise => { + await window.getByTestId("mod-directory-select").waitFor({ + state: "visible", + }); +}; + +/** + * Selects the first modpack option from the dropdown and returns its path + * + * @param window The Playwright page object + * @returns The path of the selected modpack + */ +export const selectFirstModpack = async (window: Page): Promise => { + const modDirectorySelectTestId = "mod-directory-select"; + + // Open the dropdown + await window.getByTestId(modDirectorySelectTestId).click(); + + // Get the first option + const firstOption = window + .getByTestId(modDirectorySelectTestId) + .getByTestId("dropdown-option-0"); + + // Get the mod directory path from the first option + const modDirectoryPath = await firstOption.textContent(); + + if (!modDirectoryPath) { + throw new Error("Mod directory path not found"); + } + + // Select the first option + await firstOption.click(); + + await expect(window.getByTestId("page-home")).toBeVisible(); + + return modDirectoryPath; +}; + +/** + * Waits for the preload to complete by checking if the current URL is the auto-update URL. + * If it is, waits until it changes before proceeding. + * + * This method is useful to ensure it's safe to reload the page, as reloading while + * the URL is the update URL can cause issues with the application loading process. + * + * @param window The Playwright page object + */ +export const waitForPreloadComplete = async (window: Page): Promise => { + const autoUpdateUrl = "auto-update"; + if (window.url().toString().includes(autoUpdateUrl)) { + await window.waitForURL((url) => !url.toString().includes(autoUpdateUrl)); + } + + // Wait until the page is ready before continuing + await window.waitForLoadState("load"); +}; + +/** + * Reloads the window and waits for the app to be loaded. + * This is useful for tests that need to reload the page after changing settings. + * + * @param window The Playwright page object + */ +export const reloadWindow = async (window: Page): Promise => { + // Wait for preload to complete before reloading + await waitForPreloadComplete(window); + + // Reload the window + await window.reload(); + + // Wait for the app to be loaded + await waitForAppLoaded(window); +}; diff --git a/src/__tests__/e2e/util/user-preferences.ts b/src/__tests__/e2e/util/user-preferences.ts new file mode 100644 index 00000000..29f9ad1e --- /dev/null +++ b/src/__tests__/e2e/util/user-preferences.ts @@ -0,0 +1,57 @@ +import fsPromises from "fs/promises"; +import fs from "fs"; +import type { UserPreferences } from "../../../main/services/config.service"; + +/** + * Gets the user preferences from the userPreferences.json file. + * @param mockFiles The path to the mock files directory + * @returns The parsed user preferences object + */ +export const getUserPreferences = async ( + mockFiles: string +): Promise => { + const userPreferencesPath = `${mockFiles}/config/userPreferences.json`; + const userPreferencesContent = await fsPromises.readFile( + userPreferencesPath, + "utf-8" + ); + return JSON.parse(userPreferencesContent); +}; + +/** + * Sets a user preference in the userPreferences.json file. + * @param mockFiles The path to the mock files directory + * @param key The preference key to set + * @param value The value to set for the preference + */ +export const setUserPreference = async ( + mockFiles: string, + key: string, + value: unknown +): Promise => { + const userPreferencesPath = `${mockFiles}/config/userPreferences.json`; + const preferences = JSON.parse( + await fsPromises.readFile(userPreferencesPath, "utf-8") + ); + + preferences[key] = value; + + await fsPromises.writeFile( + userPreferencesPath, + JSON.stringify(preferences, null, 2) + ); +}; + +/** + * Removes the user preferences file to ensure the mod directory is not set. + * This is necessary for testing the initial mod selection screen. + * @param mockFiles The path to the mock files directory + */ +export const removeUserPreferences = async ( + mockFiles: string +): Promise => { + const userPreferencesPath = `${mockFiles}/config/userPreferences.json`; + if (fs.existsSync(userPreferencesPath)) { + await fsPromises.unlink(userPreferencesPath); + } +}; diff --git a/src/__tests__/unit/helpers/mocks/autoUpdater.mock.ts b/src/__tests__/unit/helpers/mocks/autoUpdater.mock.ts new file mode 100644 index 00000000..8c1aee2b --- /dev/null +++ b/src/__tests__/unit/helpers/mocks/autoUpdater.mock.ts @@ -0,0 +1,20 @@ +import { sinon, StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import type { AppUpdater } from "electron-updater"; + +/** + * Electron's auto updater doesn't exist in a testing environment. + * So, it needs to be manually stubbed. + */ +export const getAutoUpdaterMock = + (): StubbedInstanceWithSinonAccessor => { + const mockAutoUpdater = { + on: sinon.stub>(), + quitAndInstall: sinon.stub>(), + checkForUpdates: sinon.stub>(), + } as unknown as AppUpdater; + + return { + ...mockAutoUpdater, + stubs: mockAutoUpdater as sinon.SinonStubbedInstance, + } as StubbedInstanceWithSinonAccessor; + }; diff --git a/src/__tests__/unit/helpers/mocks/child-process.mock.ts b/src/__tests__/unit/helpers/mocks/child-process.mock.ts new file mode 100644 index 00000000..0d9fd99a --- /dev/null +++ b/src/__tests__/unit/helpers/mocks/child-process.mock.ts @@ -0,0 +1,35 @@ +import { sinon, StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import type { + OverloadParameters, + OverloadReturnType, +} from "@/shared/types/overloads"; +import * as util from "util"; +import type { ChildProcess } from "@/main/bindings/child-process.binding"; +import type * as child_process from "child_process"; + +// Mock out the exec method from child_process, so it doesn't actually attempt to spawn anything in a test. +export const getChildProcessMock = + (): StubbedInstanceWithSinonAccessor => { + function childProcessMock() {} + + childProcessMock.prototype.exec = sinon.stub< + OverloadParameters, + OverloadReturnType + >(); + + // The process is promisified in the application, so it needs to be promisified in the mock. + // https://nodejs.org/docs/latest-v8.x/api/util.html#util_util_promisify_original + childProcessMock.prototype.exec[util.promisify.custom] = + childProcessMock.prototype.exec; + + // The child_process module is very difficult to mock without replacing the module. + // This provider makes it easy to inject mock child_process stubs into the application. + // Because of the Overload utility types, the stubs are type-safe, but TypeScript doesn't know that here. + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const childProcess = new childProcessMock(); + + return Object.assign(childProcess as ChildProcess, { + stubs: childProcess as sinon.SinonStubbedInstance, + }); + }; diff --git a/src/__tests__/unit/helpers/mocks/dialog.mock.ts b/src/__tests__/unit/helpers/mocks/dialog.mock.ts new file mode 100644 index 00000000..6e86412b --- /dev/null +++ b/src/__tests__/unit/helpers/mocks/dialog.mock.ts @@ -0,0 +1,52 @@ +import type { Dialog } from "electron"; +import { sinon, StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import type { + OverloadParameters, + OverloadReturnType, +} from "@/shared/types/overloads"; + +/** + * Electron's dialog doesn't exist in a testing environment. + * So, it needs to be manually stubbed. + */ +export const getMockDialog = (): StubbedInstanceWithSinonAccessor => { + const mockDialog: Dialog = { + showCertificateTrustDialog: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showErrorBox: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showMessageBox: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showMessageBoxSync: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showOpenDialog: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showOpenDialogSync: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showSaveDialog: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + showSaveDialogSync: sinon.stub< + OverloadParameters, + OverloadReturnType + >(), + }; + + return { + ...mockDialog, + stubs: mockDialog as sinon.SinonStubbedInstance, + }; +}; diff --git a/src/__tests__/unit/helpers/mocks/electron.mock.ts b/src/__tests__/unit/helpers/mocks/electron.mock.ts new file mode 100644 index 00000000..30f605f9 --- /dev/null +++ b/src/__tests__/unit/helpers/mocks/electron.mock.ts @@ -0,0 +1,21 @@ +import type Electron from "electron"; +import sinon from "sinon"; + +export const getMockElectron = () => { + const getAllWindows = sinon.stub(); + const mockElectron = { + app: { + quit: sinon.stub(), + }, + getAllWindows, + // eslint-disable-next-line @typescript-eslint/naming-convention + BrowserWindow: sinon.stub().returns({ + getAllWindows, + }), + }; + + return { + ...(mockElectron as unknown as typeof Electron), + stubs: mockElectron as typeof mockElectron, + }; +}; diff --git a/src/__tests__/unit/helpers/mocks/logger.mock.ts b/src/__tests__/unit/helpers/mocks/logger.mock.ts new file mode 100644 index 00000000..f8af7fac --- /dev/null +++ b/src/__tests__/unit/helpers/mocks/logger.mock.ts @@ -0,0 +1,6 @@ +import { sinon } from "@loopback/testlab/dist/sinon"; +import logger from "electron-log/main"; +import { generateUniqueId } from "@loopback/core"; + +export const getMockLogger = () => + sinon.stub(logger.create({ logId: generateUniqueId() })); diff --git a/src/__tests__/unit/helpers/read-files.ts b/src/__tests__/unit/helpers/read-files.ts new file mode 100644 index 00000000..a463208d --- /dev/null +++ b/src/__tests__/unit/helpers/read-files.ts @@ -0,0 +1,38 @@ +import fs from "fs/promises"; +import path from "path"; + +interface Directory { + [fileName: string]: Directory | string; +} + +const readDirectory = async (dir: string): Promise => { + const directoryObject: Directory = {}; + + const files = await fs.readdir(dir); + + await Promise.all( + files.map(async (file) => { + const filePath = path.join(dir, file); + const stats = await fs.stat(filePath); + + if (stats.isFile()) { + directoryObject[file] = await fs.readFile(filePath, "utf8"); + } else if (stats.isDirectory()) { + directoryObject[file] = await readDirectory(filePath); + } + }) + ); + + return directoryObject; +}; + +export const readFilesFromDirectory = async ( + directoryPath: string +): Promise => { + try { + return await readDirectory(directoryPath); + } catch (error) { + // istanbul ignore next + throw new Error(`Error reading directory: ${(error as Error).message}`); + } +}; diff --git a/src/__tests__/unit/helpers/setup.ts b/src/__tests__/unit/helpers/setup.ts new file mode 100644 index 00000000..cb472c21 --- /dev/null +++ b/src/__tests__/unit/helpers/setup.ts @@ -0,0 +1,20 @@ +import mock from "mock-require"; + +// electron-is-dev throws an error if not running in an electron environment. +mock("electron-is-dev", () => { + return true; +}); + +// @electron-toolkit/utils throws an error if not running in an electron environment. +// Mock the entire package to provide the `is` utility for environment detection. +mock("@electron-toolkit/utils", () => { + return { + is: { + dev: true, + packaged: false, + macOS: process.platform === "darwin", + windows: process.platform === "win32", + linux: process.platform === "linux", + }, + }; +}); diff --git a/src/__tests__/unit/controllers/graphics.controller.test.ts b/src/__tests__/unit/main/controllers/graphics.controller.test.ts similarity index 70% rename from src/__tests__/unit/controllers/graphics.controller.test.ts rename to src/__tests__/unit/main/controllers/graphics.controller.test.ts index 059fc4ac..d19d94a3 100644 --- a/src/__tests__/unit/controllers/graphics.controller.test.ts +++ b/src/__tests__/unit/main/controllers/graphics.controller.test.ts @@ -6,7 +6,7 @@ import { StubbedInstanceWithSinonAccessor, } from "@loopback/testlab"; -describe("Graphics controller", () => { +describe("Graphics controller #main #controller", () => { let graphicsService: StubbedInstanceWithSinonAccessor; let graphicsController: GraphicsController; @@ -20,18 +20,18 @@ describe("Graphics controller", () => { sinon.assert.called(graphicsService.stubs.getGraphicsPreference); }); - it("should get the graphics settings", () => { - graphicsController.getGraphics(); + it("should get the graphics settings", async () => { + await graphicsController.getGraphics(); sinon.assert.called(graphicsService.stubs.getGraphics); }); - it("should set the graphics preference", () => { - graphicsController.setGraphics("mock graphics"); + it("should set the graphics preference", async () => { + await graphicsController.setGraphics("mock graphics"); sinon.assert.calledWith(graphicsService.stubs.setGraphics, "mock graphics"); }); - it("should restore the graphics preference", () => { - graphicsController.restoreGraphics(); + it("should restore the graphics preference", async () => { + await graphicsController.restoreGraphics(); sinon.assert.called(graphicsService.stubs.restoreGraphics); }); }); diff --git a/src/__tests__/unit/services/blacklist.service.test.ts b/src/__tests__/unit/main/services/blacklist.service.test.ts similarity index 80% rename from src/__tests__/unit/services/blacklist.service.test.ts rename to src/__tests__/unit/main/services/blacklist.service.test.ts index f68b8697..3458d0ee 100644 --- a/src/__tests__/unit/services/blacklist.service.test.ts +++ b/src/__tests__/unit/main/services/blacklist.service.test.ts @@ -1,8 +1,12 @@ -import { createStubInstance, expect } from "@loopback/testlab"; +import { createStubInstance, expect, sinon } from "@loopback/testlab"; import { SystemService } from "@/main/services/system.service"; import { BlacklistService } from "@/main/services/blacklist.service"; -describe("Blacklist service", () => { +describe("Blacklist service #main #service", () => { + afterEach(() => { + sinon.restore(); + }); + it("should return a list of blacklisted processes running", async () => { const mockSystemService = createStubInstance(SystemService); diff --git a/src/__tests__/unit/main/services/config.service.test.ts b/src/__tests__/unit/main/services/config.service.test.ts new file mode 100644 index 00000000..1674f624 --- /dev/null +++ b/src/__tests__/unit/main/services/config.service.test.ts @@ -0,0 +1,238 @@ +import { ConfigService, UserPreferences } from "@/main/services/config.service"; +import { expect } from "@loopback/testlab"; +import mockFs from "mock-fs"; +import Store from "electron-store"; +import sinon from "sinon"; +import log from "electron-log/main"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { Context } from "@loopback/core"; +import { ConfigBinding } from "@/main/bindings/config.binding"; + +describe("Config service #main #service", () => { + let mockStore: Store; + let mockModDirectory: string; + let mockLogger: sinon.SinonStubbedInstance; + let configService: ConfigService; + let originalEnv: NodeJS.ProcessEnv; + let mockContext: sinon.SinonStubbedInstance; + + let mockUserConfig: string; + let preferenceFile: string; + + beforeEach(() => { + originalEnv = Object.assign({}, process.env); + + mockContext = sinon.createStubInstance(Context); + + mockUserConfig = "/mock/config"; + preferenceFile = "userPreferences"; + mockModDirectory = "mock/mod/directory"; + mockFs({ + [`${mockUserConfig}/${preferenceFile}.json`]: JSON.stringify({ + MOD_DIRECTORY: mockModDirectory, + }), + [mockModDirectory]: { + "Stock Game": {}, + launcher: { + _backups: {}, + }, + }, + }); + + mockStore = new Store({ + name: preferenceFile, + cwd: mockUserConfig, + }); + + mockLogger = sinon.stub(log); + sinon.stub(mockLogger.transports.file, "getFile").returns({ + path: "mock/log/file", + bytesWritten: 0, + clear: sinon.stub(), + size: 0, + on: sinon.stub(), + }); + + mockContext.getSync.withArgs(ConfigBinding).returns(mockStore); + + configService = new ConfigService(mockLogger, mockContext); + }); + + afterEach(() => { + process.env = Object.assign({}, originalEnv); + + sinon.restore(); + mockFs.restore(); + }); + + it("should get the skyrim directory", () => { + expect(configService.skyrimDirectory()).to.eql( + `${mockModDirectory}/Stock Game` + ); + }); + + it("should get the log directory", () => { + expect(configService.getLogDirectory()).to.eql("mock/log"); + }); + + it("should get the mod directory", () => { + expect(configService.modDirectory()).to.eql("mock/mod/directory"); + }); + + it("should return the modlist launcher directory", () => { + expect(configService.launcherDirectory()).to.eql( + `${mockModDirectory}/launcher` + ); + }); + + it("should return the backup directory", () => { + expect(configService.backupDirectory()).to.eql( + `${mockModDirectory}/launcher/_backups` + ); + }); + + it("should return true if backups exist", () => { + expect(configService.backupsExist()).to.eql(true); + }); + + it("should return false if backups do not exist", () => { + mockFs({ + [mockModDirectory]: { + "Stock Game": {}, + launcher: {}, + }, + }); + expect(configService.backupsExist()).to.eql(false); + }); + + it("should return the preference", () => { + expect( + configService.getPreference(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + ).to.eql(mockModDirectory); + }); + + it("should return true if the preference exists", () => { + expect( + configService.hasPreference(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + ).to.eql(true); + }); + + it("should return false if the preference does not exist", () => { + expect(configService.hasPreference(USER_PREFERENCE_KEYS.GRAPHICS)).to.eql( + false + ); + }); + + it("should delete the preference", () => { + configService.deletePreference(USER_PREFERENCE_KEYS.MOD_DIRECTORY); + expect(mockStore.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY)).to.eql(undefined); + }); + + it("should set the preference", () => { + configService.setPreference( + USER_PREFERENCE_KEYS.MOD_DIRECTORY, + "new/mod/directory" + ); + expect(mockStore.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY)).to.eql( + "new/mod/directory" + ); + }); + + it("should set the preference if the value is an object", () => { + configService.setPreference(USER_PREFERENCE_KEYS.GRAPHICS, { + mock: "value", + }); + expect(mockStore.get(USER_PREFERENCE_KEYS.GRAPHICS)).to.eql({ + mock: "value", + }); + }); + + describe("Set default preferences", () => { + it("should set the default preference if the key doesn't exist", async () => { + await configService.setDefaultPreferences({ + [USER_PREFERENCE_KEYS.GRAPHICS]: { + value: "high", + }, + }); + expect(mockStore.get(USER_PREFERENCE_KEYS.GRAPHICS)).to.eql("high"); + }); + + it("should not set the default preference if it exists", async () => { + mockStore.set(USER_PREFERENCE_KEYS.MOD_DIRECTORY, "old/mod/directory"); + await configService.setDefaultPreferences({ + [USER_PREFERENCE_KEYS.MOD_DIRECTORY]: { + value: "new/mod/directory", + }, + }); + expect(mockStore.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY)).to.eql( + "old/mod/directory" + ); + }); + + it("should set the preference if the current value is not valid", async () => { + await configService.setDefaultPreferences({ + [USER_PREFERENCE_KEYS.GRAPHICS]: { + value: "mockValue", + validate: async () => false, + }, + }); + expect(mockStore.get(USER_PREFERENCE_KEYS.GRAPHICS)).to.eql("mockValue"); + }); + + it("should not set the value if it is already present and valid", async () => { + mockStore.set(USER_PREFERENCE_KEYS.RESOLUTION, "high"); + await configService.setDefaultPreferences({ + [USER_PREFERENCE_KEYS.RESOLUTION]: { + value: "low", + validate: async () => true, + }, + }); + expect(mockStore.get(USER_PREFERENCE_KEYS.RESOLUTION)).to.eql("high"); + }); + + it("should set the preference if the value is valid", async () => { + mockFs({ + [`${mockUserConfig}/${preferenceFile}.json`]: JSON.stringify({}), + [mockModDirectory]: { + "Stock Game": {}, + launcher: { + _backups: {}, + }, + }, + }); + + await configService.setDefaultPreferences({ + [USER_PREFERENCE_KEYS.RESOLUTION]: { + value: "high", + validate: async () => true, + }, + }); + expect(mockStore.get(USER_PREFERENCE_KEYS.RESOLUTION)).to.eql("high"); + }); + }); + + it("should get the preferences", async () => { + expect(configService.getPreferences()).to.eql(mockStore); + }); + + it("should open the preferences in an editor", () => { + const mockEditor = sinon.stub(mockStore, "openInEditor"); + configService.editPreferences(); + expect(mockEditor.calledOnce).to.eql(true); + }); + + describe("getNewUserPreferencesStore", () => { + it("should return a Store instance with custom 'cwd' when CONFIG_PATH is set", () => { + process.env["CONFIG_PATH"] = "/mock/custom/config/path"; + mockFs({ + "/mock/custom/config/path": {}, + }); + + const store = ConfigService.getNewUserPreferencesStore(); + expect(store).to.be.instanceOf(Store); + expect(store.path).to.equal( + "/mock/custom/config/path/userPreferences.json" + ); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/dialog.service.test.ts b/src/__tests__/unit/main/services/dialog.service.test.ts new file mode 100644 index 00000000..530c657b --- /dev/null +++ b/src/__tests__/unit/main/services/dialog.service.test.ts @@ -0,0 +1,15 @@ +import { DialogProvider } from "@/main/services/dialog.service"; +import { expect } from "@loopback/testlab"; +import { dialog } from "electron"; + +describe("Dialog service #main #service", () => { + let dialogService: DialogProvider; + + beforeEach(() => { + dialogService = new DialogProvider(); + }); + + it("should provide an instance of electron dialog", async () => { + expect(dialogService.value()).to.equal(dialog); + }); +}); diff --git a/src/__tests__/unit/main/services/enb.service.test.ts b/src/__tests__/unit/main/services/enb.service.test.ts new file mode 100644 index 00000000..f76a110e --- /dev/null +++ b/src/__tests__/unit/main/services/enb.service.test.ts @@ -0,0 +1,1027 @@ +import { ConfigService } from "@/main/services/config.service"; +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { InstructionService } from "@/main/services/instruction.service"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { EnbService } from "@/main/services/enb.service"; +import mockFs from "mock-fs"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { NoEnbsError } from "@/shared/errors/no-enbs.error"; +import { + InstructionAction, + InstructionType, +} from "@/shared/enums/additional-instructions"; +import fs from "fs"; +import { readFilesFromDirectory } from "@/__tests__/unit/helpers/read-files"; +import type { AdditionalInstruction } from "@/shared/types/additional-instructions"; + +describe("ENB service #main #service", () => { + let enbService: EnbService; + let mockConfigService: StubbedInstanceWithSinonAccessor; + let mockInstructionService: StubbedInstanceWithSinonAccessor; + + beforeEach(() => { + mockConfigService = createStubInstance(ConfigService); + mockInstructionService = createStubInstance(InstructionService); + + enbService = new EnbService( + mockConfigService, + mockInstructionService, + getMockLogger() + ); + }); + + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); + + describe("enbDirectory", () => { + it("should get the enb directory", async () => { + mockConfigService.stubs.getPreference.returns("test"); + expect(enbService.enbDirectory()).to.equal("test/launcher/ENB Presets"); + }); + }); + + describe("getENBInstruction", () => { + it("should get the enb presets", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + test2: {}, + test3: {}, + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + { real: "test2", friendly: "test 2" }, + ]), + }, + }); + expect(await enbService.getEnbPresets()).to.eql([ + { real: "test1", friendly: "test 1" }, + { real: "test2", friendly: "test 2" }, + { real: "test3", friendly: "test3" }, + { + real: "noEnb", + friendly: "No Shaders", + }, + ]); + }); + + it("should only include directories in the unmapped enbs", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + "test.txt": "", + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + ]), + }, + }); + expect(await enbService.getEnbPresets()).to.eql([ + { real: "test1", friendly: "test 1" }, + { + real: "noEnb", + friendly: "No Shaders", + }, + ]); + }); + + it("should not include junk directories in the unmapped enbs", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + ".DS_Store": "", + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + ]), + }, + }); + expect(await enbService.getEnbPresets()).to.eql([ + { real: "test1", friendly: "test 1" }, + { + real: "noEnb", + friendly: "No Shaders", + }, + ]); + }); + + it("should throw an error if the directory cannot be read", async () => { + mockConfigService.stubs.getPreference.returns("broken"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + test2: {}, + test3: {}, + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + { real: "test2", friendly: "test 2" }, + ]), + }, + }); + await expect(enbService.getEnbPresets()).to.be.rejectedWith( + "ENOENT, no such file or directory 'broken/launcher/namesENB.json'" + ); + }); + + it("should throw an error if the namesENB.json cannot be read", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + test2: {}, + test3: {}, + }, + }, + }); + await expect(enbService.getEnbPresets()).to.be.rejectedWith( + "ENOENT, no such file or directory 'test/launcher/namesENB.json'" + ); + }); + }); + + describe("getEnbPreference", () => { + it("should get the enb preference", async () => { + mockConfigService.stubs.getPreference.returns("test"); + expect(await enbService.getEnbPreference()).to.equal("test"); + }); + }); + + describe("getDefaultPreference", () => { + it("should get the default preference if it exists", async () => { + const modDirectory = "test"; + mockFs({ + [`${modDirectory}/launcher`]: { + "ENB Presets": { + test1: {}, + test2: {}, + test3: {}, + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + { real: "test2", friendly: "test 2" }, + ]), + }, + }); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.ENB_PROFILE) + .returns("test1"); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + expect(await enbService.getDefaultPreference()).to.equal("test1"); + }); + + it("should throw an error if no enb presets are found", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": {}, + "namesENB.json": JSON.stringify([]), + }, + }); + await expect(enbService.getDefaultPreference()).to.be.rejectedWith( + NoEnbsError + ); + }); + }); + + describe("isValid", () => { + it("should check if the enb is valid", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + ]), + }, + }); + expect(await enbService.isValid("test1")).to.equal(true); + expect(await enbService.isValid("test4")).to.equal(false); + }); + + it("should check if the enb is valid with no enb", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: {}, + }, + "namesENB.json": JSON.stringify([ + { real: "test1", friendly: "test 1" }, + ]), + }, + }); + expect(await enbService.isValid("noEnb")).to.equal(true); + }); + }); + + describe("postSetEnb", () => { + it("should run the post actions for a given enb", async () => { + const instruction: AdditionalInstruction = { + type: InstructionType.ENB, + action: InstructionAction.DISABLE_PLUGIN, + plugin: "test", + target: "test", + }; + mockConfigService.stubs.getPreference.returns("test"); + mockInstructionService.stubs.getInstructions.returns([instruction]); + await enbService.postSetEnb("test1"); + sinon.assert.calledWith( + mockInstructionService.stubs.execute, + [instruction], + "test1" + ); + }); + + it("should not run any additional instructions if none are related to enbs", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockInstructionService.stubs.getInstructions.returns([ + { + type: InstructionType.RESOLUTION_RATIO, + action: InstructionAction.DISABLE_PLUGIN, + target: "test", + plugin: "test", + }, + ]); + await enbService.postSetEnb("test1"); + sinon.assert.notCalled(mockInstructionService.stubs.execute); + }); + }); + + describe("getAllPossibleEnbFiles", () => { + it("should get all possible enb files without junk files", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: { + "enbseries.ini": "", + "enblocal.ini": "", + "test1-only.ini": "", + }, + test2: { + "enbseries.ini": "", + "enblocal.ini": "", + "test2-only.ini": "", + }, + test3: { + "enbseries.ini": "", + "enblocal.ini": "", + "test3-only.ini": "", + ".DS_Store": "", + }, + }, + "namesENB.json": JSON.stringify([]), + }, + }); + expect(await enbService.getAllPossibleEnbFiles()).to.eql( + new Set([ + "enbseries.ini", + "enblocal.ini", + "test1-only.ini", + "test2-only.ini", + "test3-only.ini", + ]) + ); + }); + }); + + describe("getExistingEnbFiles", () => { + it("should get all existing enb files", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockConfigService.stubs.skyrimDirectory.returns("mock-skyrim-directory"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: { + "enbseries.ini": "", + "enblocal.ini": "", + "test1-only.ini": "", + }, + test2: { + "enbseries.ini": "", + "enblocal.ini": "", + "test2-only.ini": "", + }, + test3: { + "enbseries.ini": "", + "enblocal.ini": "", + "test3-only.ini": "", + }, + }, + "namesENB.json": JSON.stringify([]), + }, + "mock-skyrim-directory": { + "enbseries.ini": "", + "enblocal.ini": "", + "test1-only.ini": "", + }, + }); + expect((await enbService.getExistingEnbFiles()).sort()).to.eql( + ["enbseries.ini", "enblocal.ini", "test1-only.ini"].sort() + ); + }); + }); + + describe("getEnbFilesForPreset", () => { + it("should get enb files for a preset", async () => { + mockConfigService.stubs.getPreference.returns("test"); + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: { + "enbseries.ini": "", + "enblocal.ini": "", + "test1-only.ini": "", + }, + test2: { + "enbseries.ini": "", + "enblocal.ini": "", + "test2-only.ini": "", + }, + test3: { + "enbseries.ini": "", + "enblocal.ini": "", + "test3-only.ini": "", + }, + }, + "namesENB.json": JSON.stringify([]), + }, + }); + expect((await enbService.getEnbFilesForPreset("test1")).sort()).to.eql( + ["enbseries.ini", "enblocal.ini", "test1-only.ini"].sort() + ); + }); + }); + + describe("deleteAllEnbFiles", () => { + it("should delete all possible enb files from the skyrim directory", async () => { + const skyrimDirectory = "mock-skyrim-directory"; + + mockConfigService.stubs.getPreference.returns("test"); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + const skyrimEnbFiles = { + "enbseries.ini": "", + "enblocal.ini": "", + "test1-only.ini": "", + "test-directory": { + "test-file": "", + }, + }; + + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: { + "enbseries.ini": "", + "enblocal.ini": "", + "test1-only.ini": "", + "test-directory": { + "test-file": "", + }, + }, + test2: { + "enbseries.ini": "", + "enblocal.ini": "", + "test2-only.ini": "", + }, + test3: { + "enbseries.ini": "", + "enblocal.ini": "", + "test3-only.ini": "", + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: skyrimEnbFiles, + }); + + Object.keys(skyrimEnbFiles).forEach((file) => { + expect(fs.existsSync(`${skyrimDirectory}/${file}`)).to.equal(true); + }); + + await enbService.deleteAllEnbFiles(); + + Object.keys(skyrimEnbFiles).forEach((file) => { + expect(fs.existsSync(`${skyrimDirectory}/${file}`)).to.equal(false); + }); + }); + }); + + describe("syncEnbFromGameToPresets", () => { + it("should copy the enb files from the game folder to the preset folder", async () => { + const skyrimDirectory = "mock-skyrim-directory"; + const presetName = "test1"; + + mockConfigService.stubs.getPreference.returns("test"); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: { + "enbseries.ini": "original", + "enblocal.ini": "original", + "test1-only.ini": "original", + "test-directory": { + "test-file": "original", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "edited", + "test1-only.ini": "original", + "test-directory": { + "test-file": "edited", + }, + }, + }); + + await enbService.syncEnbFromGameToPresets(presetName); + + expect( + await readFilesFromDirectory(`test/launcher/ENB Presets/${presetName}`) + ).to.eql({ + "enbseries.ini": "edited", + "enblocal.ini": "original", + "test1-only.ini": "original", + "test-directory": { + "test-file": "edited", + }, + }); + }); + + it("should not sync when the preset is noEnb", async () => { + const skyrimDirectory = "mock-skyrim-directory"; + const presetName = "noEnb"; + + mockConfigService.stubs.getPreference.returns("test"); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + "test/launcher": { + "ENB Presets": { + test1: { + "enbseries.ini": "original", + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "edited", + }, + }); + + await enbService.syncEnbFromGameToPresets(presetName); + + expect( + await readFilesFromDirectory(`test/launcher/ENB Presets/test1`) + ).to.eql({ + "enbseries.ini": "original", + }); + }); + }); + + describe("copyEnbFiles", () => { + it("should copy all files from an enb preset to the skyrim directory after syncing the previous preset", async () => { + const skyrimDirectory = "mock-skyrim-directory"; + const presetName = "new-preset"; + const modDirectory = "test/launcher"; + const previousPreset = "previous-preset"; + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns("test"); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.PREVIOUS_ENB_PROFILE) + .returns(previousPreset); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + [modDirectory]: { + "ENB Presets": { + [presetName]: { + "enbseries.ini": "new", + "enblocal.ini": "new", + "test1-only.ini": "new", + "test-directory": { + "test-file": "new", + }, + }, + [previousPreset]: { + "enbseries.ini": "previous", + "enblocal.ini": "previous", + "previous-only.ini": "previous", + "test-directory": { + "test-file": "previous", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "previous-edited", + "test1-only.ini": "previous-edited", + "previous-only.ini": "previous-edited", + "test-directory": { + "test-file": "previous-edited", + }, + }, + }); + + await enbService.copyEnbFiles(presetName); + + expect( + await readFilesFromDirectory( + `${modDirectory}/ENB Presets/${previousPreset}` + ) + ).to.eql({ + "enbseries.ini": "previous-edited", + "enblocal.ini": "previous", + "previous-only.ini": "previous-edited", + "test-directory": { + "test-file": "previous-edited", + }, + }); + + expect(await readFilesFromDirectory(skyrimDirectory)).to.eql({ + "enbseries.ini": "new", + "enblocal.ini": "new", + "test1-only.ini": "new", + "test-directory": { + "test-file": "new", + }, + }); + }); + + it("should not sync previous profiles if there wasn't one set", async () => { + const modDirectory = "test"; + const skyrimDirectory = "mock-skyrim-directory"; + const presetName = "new-preset"; + const launcherDirectory = `${modDirectory}/launcher`; + const previousPreset = "previous-preset"; + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.PREVIOUS_ENB_PROFILE) + .returns(undefined); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + [presetName]: { + "enbseries.ini": "new", + "test1-only.ini": "new", + "test-directory": { + "test-file": "new", + }, + }, + [previousPreset]: { + "enbseries.ini": "previous", + "previous-only.ini": "previous", + "test-directory": { + "test-file": "previous", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "previous-edited", + "previous-only.ini": "previous-edited", + "test-directory": { + "test-file": "previous-edited", + }, + }, + }); + + await enbService.copyEnbFiles(presetName); + + expect( + await readFilesFromDirectory( + `${launcherDirectory}/ENB Presets/${previousPreset}` + ) + ).to.eql({ + "enbseries.ini": "previous", + "previous-only.ini": "previous", + "test-directory": { + "test-file": "previous", + }, + }); + + expect(await readFilesFromDirectory(skyrimDirectory)).to.eql({ + "enbseries.ini": "new", + "test1-only.ini": "new", + "test-directory": { + "test-file": "new", + }, + }); + }); + + it("should just delete all enb files if noEnb is passed", async () => { + const modDirectory = "test"; + const skyrimDirectory = "mock-skyrim-directory"; + const launcherDirectory = `${modDirectory}/launcher`; + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "new", + "test1-only.ini": "new", + "test-directory": { + "test-file": "new", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "previous-edited", + "test1-only.ini": "previous-edited", + "test-directory": { + "test-file": "previous-edited", + }, + "skyrim.ini": "test", + }, + }); + + await enbService.copyEnbFiles("noEnb", true); + + expect(await readFilesFromDirectory(skyrimDirectory)).to.eql({ + "skyrim.ini": "test", + }); + }); + }); + + describe("restoreEnbPresets", () => { + it("should restore all files from the backup", async () => { + const modDirectory = "test"; + const launcherDirectory = `${modDirectory}/launcher`; + const backupDirectory = "test/backup"; + const skyrimDirectory = "mock-skyrim-directory"; + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.ENB_PROFILE) + .returns("test1"); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1-edited", + "enblocal.ini": "test1", + "test1-only.ini": "test1-edited", + "test-directory": { + "test-file": "test1-edited", + }, + }, + test2: { + "enbseries.ini": "test2", + "enblocal.ini": "test2", + "previous-only.ini": "test2-edited", + "test-directory": { + "test-file": "test2-edited", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "", + }, + [backupDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + "backup-only.ini": "test1", + }, + test2: { + "enbseries.ini": "test2", + "enblocal.ini": "test2", + "previous-only.ini": "test2", + "test-directory": { + "test-file": "test2", + }, + }, + }, + }, + }); + + await enbService.restoreEnbPresets(); + + expect( + await readFilesFromDirectory(`${launcherDirectory}/ENB Presets`) + ).to.eql({ + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + "backup-only.ini": "test1", + }, + test2: { + "enbseries.ini": "test2", + "enblocal.ini": "test2", + "previous-only.ini": "test2", + "test-directory": { + "test-file": "test2", + }, + }, + }); + }); + }); + + describe("backupOriginalEnbs", () => { + it("should backup all files from the enb directory to the backup directory if they don't exist", async () => { + const modDirectory = "test"; + const launcherDirectory = `${modDirectory}/launcher`; + const backupDirectory = "test/backup"; + const skyrimDirectory = "mock-skyrim-directory"; + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }, + test2: { + "enbseries.ini": "test2", + "enblocal.ini": "test2", + "previous-only.ini": "test2", + "test-directory": { + "test-file": "test2", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "", + }, + }); + + await enbService.backupOriginalEnbs(); + + expect( + await readFilesFromDirectory(`${backupDirectory}/ENB Presets`) + ).to.eql({ + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }, + test2: { + "enbseries.ini": "test2", + "enblocal.ini": "test2", + "previous-only.ini": "test2", + "test-directory": { + "test-file": "test2", + }, + }, + }); + }); + + it("should not backup files that already exist in the backup directory", async () => { + const modDirectory = "test"; + const launcherDirectory = `${modDirectory}/launcher`; + const backupDirectory = "test/backup"; + const skyrimDirectory = "mock-skyrim-directory"; + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "", + }, + [backupDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1-backup", + "enblocal.ini": "test1-backup", + "test1-only.ini": "test1-backup", + "test-directory": { + "test-file": "test1-backup", + }, + }, + }, + }, + }); + + await enbService.backupOriginalEnbs(); + + expect( + await readFilesFromDirectory(`${backupDirectory}/ENB Presets`) + ).to.eql({ + test1: { + "enbseries.ini": "test1-backup", + "enblocal.ini": "test1-backup", + "test1-only.ini": "test1-backup", + "test-directory": { + "test-file": "test1-backup", + }, + }, + }); + }); + }); + + describe("setEnb", () => { + it("should set the enb and call the post set actions", async () => { + const modDirectory = "test"; + const launcherDirectory = `${modDirectory}/launcher`; + const skyrimDirectory = "mock-skyrim-directory"; + const enbPreset = "test1"; + const instruction: AdditionalInstruction = { + type: InstructionType.ENB, + action: InstructionAction.DISABLE_PLUGIN, + plugin: "test", + target: "test", + }; + + mockInstructionService.stubs.getInstructions.returns([instruction]); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.ENB_PROFILE) + .returns("previous-preset"); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }, + test2: { + "enbseries.ini": "test2", + "enblocal.ini": "test2", + "previous-only.ini": "test2", + "test-directory": { + "test-file": "test2", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "", + }, + }); + + await enbService.setEnb(enbPreset); + + sinon.assert.calledWith( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.PREVIOUS_ENB_PROFILE, + "previous-preset" + ); + + sinon.assert.calledWith( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.ENB_PROFILE, + enbPreset + ); + + sinon.assert.calledWith( + mockInstructionService.stubs.execute, + [instruction], + "test1" + ); + + expect(await readFilesFromDirectory(`${skyrimDirectory}`)).to.eql({ + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }); + }); + }); + + describe("resetCurrentEnb", () => { + it("should set the enb with the current preference", async () => { + const modDirectory = "test"; + const launcherDirectory = `${modDirectory}/launcher`; + const skyrimDirectory = "mock-skyrim-directory"; + + mockInstructionService.stubs.getInstructions.returns([]); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + mockConfigService.stubs.skyrimDirectory.returns(skyrimDirectory); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.ENB_PROFILE) + .returns("test1"); + + mockFs({ + [launcherDirectory]: { + "ENB Presets": { + test1: { + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }, + }, + "namesENB.json": JSON.stringify([]), + }, + [skyrimDirectory]: { + "enbseries.ini": "", + }, + }); + + await enbService.resetCurrentEnb(); + + expect(await readFilesFromDirectory(`${skyrimDirectory}`)).to.eql({ + "enbseries.ini": "test1", + "enblocal.ini": "test1", + "test1-only.ini": "test1", + "test-directory": { + "test-file": "test1", + }, + }); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/error.service.test.ts b/src/__tests__/unit/main/services/error.service.test.ts new file mode 100644 index 00000000..7724685d --- /dev/null +++ b/src/__tests__/unit/main/services/error.service.test.ts @@ -0,0 +1,37 @@ +import { ErrorService } from "@/main/services/error.service"; +import type { Logger } from "@/main/logger"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { getMockDialog } from "@/__tests__/unit/helpers/mocks/dialog.mock"; +import { sinon, StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import type { Dialog } from "electron"; + +describe("Error service #main #service", () => { + let errorService: ErrorService; + let mockLogger: sinon.SinonStubbedInstance; + let mockDialog: StubbedInstanceWithSinonAccessor; + + beforeEach(() => { + mockLogger = getMockLogger(); + mockDialog = getMockDialog(); + + errorService = new ErrorService(mockLogger, mockDialog); + }); + + afterEach(() => { + sinon.restore(); + }); + + it("should handle normal errors", async () => { + errorService.handleError("title", "message"); + sinon.assert.calledWith(mockDialog.stubs.showErrorBox, "title", "message"); + }); + + it("should handle unknown errors", async () => { + errorService.handleUnknownError(); + sinon.assert.calledWith( + mockDialog.stubs.showErrorBox, + "An unknown error has occurred", + "If you require more support, please post a message in the official modpack Discord and send your launcher log files." + ); + }); +}); diff --git a/src/__tests__/unit/services/game.service.test.ts b/src/__tests__/unit/main/services/game.service.test.ts similarity index 85% rename from src/__tests__/unit/services/game.service.test.ts rename to src/__tests__/unit/main/services/game.service.test.ts index 1087f612..fd93192a 100644 --- a/src/__tests__/unit/services/game.service.test.ts +++ b/src/__tests__/unit/main/services/game.service.test.ts @@ -2,13 +2,15 @@ import mockFs from "mock-fs"; import { createStubInstance, expect, + sinon, StubbedInstanceWithSinonAccessor, } from "@loopback/testlab"; import { GameService } from "@/main/services/game.service"; import { ConfigService } from "@/main/services/config.service"; import fs from "fs"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; -describe("GameService", () => { +describe("Gameservice #main #service", () => { let mockConfigService: StubbedInstanceWithSinonAccessor; let gameService: GameService; @@ -16,13 +18,14 @@ describe("GameService", () => { beforeEach(() => { mockConfigService = createStubInstance(ConfigService); - gameService = new GameService(mockConfigService); + gameService = new GameService(mockConfigService, getMockLogger()); logPath = "mock/log/path"; }); afterEach(() => { mockFs.restore(); + sinon.restore(); }); it("should copy Skyrim logs if they exist", async () => { diff --git a/src/__tests__/unit/services/graphics.service.test.ts b/src/__tests__/unit/main/services/graphics.service.test.ts similarity index 88% rename from src/__tests__/unit/services/graphics.service.test.ts rename to src/__tests__/unit/main/services/graphics.service.test.ts index d1e45878..276e11c6 100644 --- a/src/__tests__/unit/services/graphics.service.test.ts +++ b/src/__tests__/unit/main/services/graphics.service.test.ts @@ -7,12 +7,15 @@ import { import { ConfigService } from "@/main/services/config.service"; import { GraphicsService } from "@/main/services/graphics.service"; import mockFs from "mock-fs"; -import { FriendlyDirectoryMap } from "@/modpack-metadata"; +import type { FriendlyDirectoryMap } from "@/shared/types/modpack-metadata"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; import { ProfileService } from "@/main/services/profile.service"; import fs from "fs"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { NoGraphicsError } from "@/shared/errors/no-graphics.error"; +import { readFilesFromDirectory } from "@/__tests__/unit/helpers/read-files"; -describe("Graphics service", () => { +describe("Graphics service #main #service", () => { let mockConfigService: StubbedInstanceWithSinonAccessor; let mockProfileService: StubbedInstanceWithSinonAccessor; let graphicsService: GraphicsService; @@ -22,12 +25,14 @@ describe("Graphics service", () => { mockProfileService = createStubInstance(ProfileService); graphicsService = new GraphicsService( mockConfigService, - mockProfileService + mockProfileService, + getMockLogger() ); }); afterEach(() => { mockFs.restore(); + sinon.restore(); }); describe("Validating graphics", () => { @@ -80,6 +85,19 @@ describe("Graphics service", () => { ); }); + it("should throw an error if the default graphics cannot be found", async () => { + const mockLauncherDirectory = "mock/directory"; + mockConfigService.stubs.launcherDirectory.returns(mockLauncherDirectory); + + mockFs({ + [`${mockLauncherDirectory}/namesGraphics.json`]: JSON.stringify([]), + }); + + await expect(graphicsService.getDefaultPreference()).to.be.rejectedWith( + NoGraphicsError + ); + }); + it("should get all graphics presets", async () => { const mockLauncherDirectory = "mock/directory"; mockConfigService.stubs.launcherDirectory.returns(mockLauncherDirectory); @@ -109,7 +127,7 @@ describe("Graphics service", () => { expect(graphics).to.eql(expected); }); - it("should get the graphics preference", () => { + it("should get the graphics preference", async () => { mockConfigService.stubs.getPreference .withArgs(USER_PREFERENCE_KEYS.GRAPHICS) .returns("mock-graphics-preference"); @@ -118,7 +136,7 @@ describe("Graphics service", () => { ); }); - it("should set the graphics preference", () => { + it("should set the graphics preference", async () => { graphicsService.setGraphicsPreference("mock-preference"); sinon.assert.calledWith( mockConfigService.stubs.setPreference, @@ -334,6 +352,7 @@ describe("Graphics service", () => { "Skyrim.ini": "mock original content", "SkyrimCustom.ini": "mock original content", "SkyrimPrefs.ini": "mock original content", + "ultraOnly.ini": "mock original content", }, [`${mockProfileDirectory}/profile-test`]: { "Skyrim.ini": "mock original content", @@ -359,20 +378,19 @@ describe("Graphics service", () => { ); // Check the settings are correctly copied back to the preset - expect( - await fs.promises.readFile( - `${mockGraphicsPresets}/ultra/SkyrimPrefs.ini`, - "utf-8" - ) - ).to.eql("modified content"); - - // Ensure other profiles aren't changed - expect( - await fs.promises.readFile( - `${mockGraphicsPresets}/low/SkyrimPrefs.ini`, - "utf-8" - ) - ).to.eql("mock original content"); + expect(await readFilesFromDirectory(mockGraphicsPresets)).to.eql({ + low: { + "Skyrim.ini": "mock original content", + "SkyrimCustom.ini": "mock original content", + "SkyrimPrefs.ini": "mock original content", + }, + ultra: { + "Skyrim.ini": "mock original content", + "SkyrimCustom.ini": "mock original content", + "SkyrimPrefs.ini": "modified content", + "ultraOnly.ini": "mock original content", + }, + }); }); }); }); diff --git a/src/__tests__/unit/main/services/instruction.service.test.ts b/src/__tests__/unit/main/services/instruction.service.test.ts new file mode 100644 index 00000000..a1901372 --- /dev/null +++ b/src/__tests__/unit/main/services/instruction.service.test.ts @@ -0,0 +1,498 @@ +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { InstructionService } from "@/main/services/instruction.service"; +import { ProfileService } from "@/main/services/profile.service"; +import { WabbajackService } from "@/main/services/wabbajack.service"; +import type { Logger } from "@/main/logger"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import mockFs from "mock-fs"; +import { Dirent } from "fs-extra"; +import fs from "fs/promises"; +import os from "os"; +import type { AdditionalInstructions } from "@/shared/types/additional-instructions"; +import { + InstructionAction, + InstructionType, +} from "@/shared/enums/additional-instructions"; + +describe("Instruction service #main #service", () => { + let instructionService: InstructionService; + let mockProfileService: StubbedInstanceWithSinonAccessor; + let mockWabbajackService: StubbedInstanceWithSinonAccessor; + let mockLogger: sinon.SinonStubbedInstance; + let mockDirent: Omit; + + beforeEach(() => { + mockDirent = createStubInstance(Dirent); + mockProfileService = createStubInstance(ProfileService); + mockWabbajackService = createStubInstance(WabbajackService); + mockLogger = getMockLogger(); + + instructionService = new InstructionService( + mockProfileService, + mockWabbajackService, + mockLogger + ); + }); + + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); + + describe("execute", () => { + let pluginsPath: string; + let modsPath: string; + + beforeEach(() => { + const profileLocation = "/path/to/profiles"; + pluginsPath = `${profileLocation}/profile1/plugins.txt`; + modsPath = `${profileLocation}/profile1/modlist.txt`; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + ]); + + mockFs({ + [pluginsPath]: [ + "disabledPlugin1.esp", + "disabledPlugin2.esp", + "*enabledPlugin1.esp", + "*enabledPlugin2.esp", + ].join(os.EOL), + [modsPath]: [ + "+enabledMod1.esp", + "-disabledMod1.esp", + "+enabledMod2.esp", + "-disabledMod2.esp", + ].join(os.EOL), + }); + }); + + it("should execute enabling and disabling plugins", async () => { + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_PLUGIN, + type: InstructionType.ENB, + target: "test", + plugin: "enabledPlugin1.esp", + }, + { + action: InstructionAction.ENABLE_PLUGIN, + type: InstructionType.RESOLUTION_RATIO, + target: "test", + plugin: "disabledPlugin2.esp", + }, + ]; + + await instructionService.execute(instructions, "test"); + + expect(await fs.readFile(pluginsPath, "utf-8")).to.equal( + [ + "disabledPlugin1.esp", + "*disabledPlugin2.esp", + "enabledPlugin1.esp", + "*enabledPlugin2.esp", + ].join("\n") + ); + }); + + it("should execute enabling and disabling mods", async () => { + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_MOD, + type: InstructionType.ENB, + target: "test", + mod: "enabledMod1.esp", + }, + { + action: InstructionAction.ENABLE_MOD, + type: InstructionType.RESOLUTION_RATIO, + target: "test", + mod: "disabledMod2.esp", + }, + ]; + + await instructionService.execute(instructions, "test"); + + expect(await fs.readFile(modsPath, "utf-8")).to.equal( + [ + "-enabledMod1.esp", + "-disabledMod1.esp", + "+enabledMod2.esp", + "+disabledMod2.esp", + ].join("\n") + ); + }); + + it("should do the inverse of the instruction for plugins if the targets don't match", async () => { + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_PLUGIN, + type: InstructionType.ENB, + target: "test", + plugin: "enabledPlugin1.esp", + }, + { + action: InstructionAction.ENABLE_PLUGIN, + type: InstructionType.RESOLUTION_RATIO, + target: "test", + plugin: "disabledPlugin2.esp", + }, + ]; + + await instructionService.execute(instructions, "no match"); + + expect(await fs.readFile(pluginsPath, "utf-8")).to.equal( + [ + "disabledPlugin1.esp", + "disabledPlugin2.esp", + "*enabledPlugin1.esp", + "*enabledPlugin2.esp", + ].join("\n") + ); + }); + + it("should do the inverse of the instruction for mods if the targets don't match", async () => { + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_MOD, + type: InstructionType.ENB, + target: "test", + mod: "enabledMod1.esp", + }, + { + action: InstructionAction.ENABLE_MOD, + type: InstructionType.RESOLUTION_RATIO, + target: "test", + mod: "disabledMod2.esp", + }, + ]; + + await instructionService.execute(instructions, "not match"); + + expect(await fs.readFile(modsPath, "utf-8")).to.equal( + [ + "+enabledMod1.esp", + "-disabledMod1.esp", + "+enabledMod2.esp", + "-disabledMod2.esp", + ].join("\n") + ); + }); + + it("should execute disabling ultra widescreen and return true", async () => { + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_ULTRA_WIDESCREEN, + }, + ]; + + const result = await instructionService.execute(instructions); + + expect(result).to.be.true(); + }); + + it("should execute if one of the targets match", async () => { + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_PLUGIN, + type: InstructionType.ENB, + target: ["test", "test2"], + plugin: "enabledPlugin1.esp", + }, + ]; + + await instructionService.execute(instructions, "test2"); + + expect(await fs.readFile(pluginsPath, "utf-8")).to.equal( + [ + "disabledPlugin1.esp", + "disabledPlugin2.esp", + "enabledPlugin1.esp", + "*enabledPlugin2.esp", + ].join("\n") + ); + }); + + it("should execute only if the version matches", async () => { + mockWabbajackService.stubs.getModpackVersion.resolves("1.0.0"); + + const instructions: AdditionalInstructions = [ + { + action: InstructionAction.DISABLE_PLUGIN, + type: InstructionType.ENB, + target: "test", + plugin: "enabledPlugin1.esp", + version: "1.0.0", + }, + { + action: InstructionAction.DISABLE_PLUGIN, + type: InstructionType.ENB, + target: "test", + plugin: "enabledPlugin2.esp", + version: "2.0.0", + }, + ]; + + await instructionService.execute(instructions, "test"); + + expect(await fs.readFile(pluginsPath, "utf-8")).to.equal( + [ + "disabledPlugin1.esp", + "disabledPlugin2.esp", + "enabledPlugin1.esp", + "*enabledPlugin2.esp", + ].join("\n") + ); + }); + }); + + it("should return the additional instructions", async () => { + expect(instructionService.getInstructions()).to.containDeep([ + { + action: "disable-plugin", + type: "enb", + target: "noEnb", + plugin: "NightEyeENBFix_PredatorVision.esp", + }, + { + action: "disable-ultra-widescreen", + version: "1.0.0", + }, + { + action: "enable-mod", + type: "resolution-ratio", + target: "21:9", + mod: "Wildlander 21-9 Resolution Support", + }, + { + action: "enable-mod", + type: "resolution-ratio", + target: "32:9", + mod: "Wildlander 32-9 Resolution Support", + }, + { + action: "enable-plugin", + type: "resolution-ratio", + target: ["21:9", "32:9"], + plugin: "widescreen_skyui_fix.esp", + }, + ]); + }); + + it("should read lines from a file", async () => { + const pathToPlugins = "/path/to/plugins.txt"; + + mockFs({ + [pathToPlugins]: ["plugin1.esp", "plugin2.esp", "*plugin3.esp"].join( + os.EOL + ), + }); + + const plugins = await instructionService.readLinesFromFile(pathToPlugins); + + expect(plugins).to.containDeep([ + "plugin1.esp", + "plugin2.esp", + "*plugin3.esp", + ]); + }); + + it("should toggle the plugin to be enabled if it was disabled", async () => { + const profileLocation = "/path/to/profiles"; + const firstProfilePlugins = `${profileLocation}/profile1/plugins.txt`; + const secondProfilePlugins = `${profileLocation}/profile2/plugins.txt`; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + { + ...mockDirent, + name: `profile2`, + }, + ]); + + mockFs({ + [firstProfilePlugins]: [ + "plugin1.esp", + "plugin2.esp", + "*plugin3.esp", + ].join(os.EOL), + [secondProfilePlugins]: [ + "plugin1.esp", + "*plugin3.esp", + "plugin2.esp", + ].join(os.EOL), + }); + + await instructionService.togglePlugin("plugin1.esp", "enable"); + expect(await fs.readFile(firstProfilePlugins, "utf-8")).to.equal( + ["*plugin1.esp", "plugin2.esp", "*plugin3.esp"].join("\n") + ); + expect(await fs.readFile(secondProfilePlugins, "utf-8")).to.equal( + ["*plugin1.esp", "*plugin3.esp", "plugin2.esp"].join("\n") + ); + }); + + it("should toggle the plugin and disable it if it is disabled", async () => { + const profileLocation = "/path/to/profiles"; + const firstProfilePlugins = `${profileLocation}/profile1/plugins.txt`; + const secondProfilePlugins = `${profileLocation}/profile2/plugins.txt`; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + { + ...mockDirent, + name: `profile2`, + }, + ]); + + mockFs({ + [firstProfilePlugins]: [ + "*plugin1.esp", + "plugin2.esp", + "*plugin3.esp", + ].join(os.EOL), + [secondProfilePlugins]: [ + "*plugin1.esp", + "*plugin3.esp", + "plugin2.esp", + ].join(os.EOL), + }); + + await instructionService.togglePlugin("plugin1.esp", "disable"); + expect(await fs.readFile(firstProfilePlugins, "utf-8")).to.equal( + ["plugin1.esp", "plugin2.esp", "*plugin3.esp"].join("\n") + ); + expect(await fs.readFile(secondProfilePlugins, "utf-8")).to.equal( + ["plugin1.esp", "*plugin3.esp", "plugin2.esp"].join("\n") + ); + }); + + it("should toggle the mod and enable it if it is disabled", async () => { + const profileLocation = "/path/to/profiles"; + const firstProfileMods = `${profileLocation}/profile1/modlist.txt`; + const secondProfileMods = `${profileLocation}/profile2/modlist.txt`; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + { + ...mockDirent, + name: `profile2`, + }, + ]); + + mockFs({ + [firstProfileMods]: ["+mod1.esp", "-mod2.esp", "+mod3.esp"].join(os.EOL), + [secondProfileMods]: ["+mod1.esp", "+mod3.esp", "-mod2.esp"].join(os.EOL), + }); + + await instructionService.toggleMod("mod2.esp", "enable"); + expect(await fs.readFile(firstProfileMods, "utf-8")).to.equal( + ["+mod1.esp", "+mod2.esp", "+mod3.esp"].join("\n") + ); + expect(await fs.readFile(secondProfileMods, "utf-8")).to.equal( + ["+mod1.esp", "+mod3.esp", "+mod2.esp"].join("\n") + ); + }); + + it("should toggle the mod and disable it if it is enabled", async () => { + const profileLocation = "/path/to/profiles"; + const firstProfileMods = `${profileLocation}/profile1/modlist.txt`; + const secondProfileMods = `${profileLocation}/profile2/modlist.txt`; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + { + ...mockDirent, + name: `profile2`, + }, + ]); + + mockFs({ + [firstProfileMods]: ["-mod1.esp", "+mod2.esp", "+mod3.esp"].join(os.EOL), + [secondProfileMods]: ["-mod1.esp", "+mod3.esp", "+mod2.esp"].join(os.EOL), + }); + + await instructionService.toggleMod("mod2.esp", "disable"); + expect(await fs.readFile(firstProfileMods, "utf-8")).to.equal( + ["-mod1.esp", "-mod2.esp", "+mod3.esp"].join("\n") + ); + expect(await fs.readFile(secondProfileMods, "utf-8")).to.equal( + ["-mod1.esp", "+mod3.esp", "-mod2.esp"].join("\n") + ); + }); + + it("should get the plugin files", async () => { + const profileLocation = "/path/to/profiles"; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + { + ...mockDirent, + name: `profile2`, + }, + ]); + + expect(await instructionService.getPluginFiles()).to.containDeep([ + `${profileLocation}/profile1/plugins.txt`, + `${profileLocation}/profile2/plugins.txt`, + ]); + }); + + it("should get the modlist files", async () => { + const profileLocation = "/path/to/profiles"; + + mockProfileService.stubs.profileDirectory.returns(profileLocation); + + mockProfileService.stubs.getPhysicalProfiles.resolves([ + { + ...mockDirent, + name: `profile1`, + }, + { + ...mockDirent, + name: `profile2`, + }, + ]); + + expect(await instructionService.getModlistFiles()).to.containDeep([ + `${profileLocation}/profile1/modlist.txt`, + `${profileLocation}/profile2/modlist.txt`, + ]); + }); +}); diff --git a/src/__tests__/unit/main/services/launcher.service.test.ts b/src/__tests__/unit/main/services/launcher.service.test.ts new file mode 100644 index 00000000..fd48fc58 --- /dev/null +++ b/src/__tests__/unit/main/services/launcher.service.test.ts @@ -0,0 +1,260 @@ +import { LauncherService } from "@/main/services/launcher.service"; +import { EnbService } from "@/main/services/enb.service"; +import type { StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import { createStubInstance, expect, sinon } from "@loopback/testlab"; +import { + ConfigService, + PreferenceWithValidator, +} from "@/main/services/config.service"; +import { ResolutionService } from "@/main/services/resolution.service"; +import { ProfileService } from "@/main/services/profile.service"; +import { ErrorService } from "@/main/services/error.service"; +import { WindowService } from "@/main/services/window.service"; +import { GraphicsService } from "@/main/services/graphics.service"; +import { MigrationService } from "@/main/services/migration.service"; +import type { Logger } from "@/main/logger"; +import { ModpackService } from "@/main/services/modpack.service"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; + +describe("Launcher service #main #service", () => { + let launcherService: LauncherService; + let mockEnbService: StubbedInstanceWithSinonAccessor; + let mockConfigService: StubbedInstanceWithSinonAccessor; + let mockResolutionService: StubbedInstanceWithSinonAccessor; + let mockModpackService: StubbedInstanceWithSinonAccessor; + let mockProfileService: StubbedInstanceWithSinonAccessor; + let mockErrorService: StubbedInstanceWithSinonAccessor; + let mockWindowService: StubbedInstanceWithSinonAccessor; + let mockGraphicsService: StubbedInstanceWithSinonAccessor; + let mockMigrationService: StubbedInstanceWithSinonAccessor; + let mockLogger: sinon.SinonStubbedInstance; + + beforeEach(() => { + mockEnbService = createStubInstance(EnbService); + mockConfigService = createStubInstance(ConfigService); + mockResolutionService = createStubInstance(ResolutionService); + mockModpackService = createStubInstance(ModpackService); + mockProfileService = createStubInstance(ProfileService); + mockErrorService = createStubInstance(ErrorService); + mockWindowService = createStubInstance(WindowService); + mockGraphicsService = createStubInstance(GraphicsService); + mockMigrationService = createStubInstance(MigrationService); + mockLogger = getMockLogger(); + + launcherService = new LauncherService( + mockEnbService, + mockConfigService, + mockResolutionService, + mockModpackService, + mockProfileService, + mockErrorService, + mockWindowService, + mockGraphicsService, + mockMigrationService, + mockLogger, + "1.0.0" + ); + }); + + it("should backup assets", async () => { + await launcherService.backupAssets(); + + sinon.assert.calledOnce(mockEnbService.stubs.backupOriginalEnbs); + sinon.assert.calledOnce(mockProfileService.stubs.backupOriginalProfiles); + sinon.assert.calledOnce(mockGraphicsService.stubs.backupOriginalGraphics); + }); + + it("should return the app version", async () => { + const version = launcherService.getVersion(); + expect(version).to.equal("1.0.0"); + }); + + it("should set check prerequisites", async () => { + launcherService.setCheckPrerequisites(true); + + sinon.assert.calledWith( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.CHECK_PREREQUISITES, + true + ); + }); + + it("should get check prerequisites", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.CHECK_PREREQUISITES) + .returns(true); + + const checkPrerequisites = launcherService.getCheckPrerequisites(); + + expect(checkPrerequisites).to.be.true(); + }); + + describe("Validating the config", () => { + beforeEach(() => { + mockEnbService.stubs.getDefaultPreference.resolves("test-value"); + mockProfileService.stubs.getDefaultPreference.resolves("test-value"); + mockGraphicsService.stubs.getDefaultPreference.resolves("test-value"); + mockResolutionService.stubs.getCurrentResolution.returns({ + width: 20, + height: 10, + }); + }); + + it("should get the default preference for each config item", async () => { + await launcherService.validateConfig(); + + sinon.assert.calledOnceWithExactly( + mockConfigService.stubs.setDefaultPreferences, + { + [USER_PREFERENCE_KEYS.ENB_PROFILE]: { + value: "test-value", + validate: sinon.match.func as unknown as ( + ...args: unknown[] + ) => Promise, + }, + [USER_PREFERENCE_KEYS.PRESET]: { + value: "test-value", + validate: sinon.match.func as unknown as ( + ...args: unknown[] + ) => Promise, + }, + [USER_PREFERENCE_KEYS.RESOLUTION]: { + value: { + width: 20, + height: 10, + }, + }, + [USER_PREFERENCE_KEYS.GRAPHICS]: { + value: "test-value", + validate: sinon.match.func as unknown as ( + ...args: unknown[] + ) => Promise, + }, + } + ); + }); + + it("should call the validate method", async () => { + mockEnbService.stubs.isValid.resolves(true); + mockProfileService.stubs.isValid.resolves(true); + mockGraphicsService.stubs.isValid.resolves(true); + + mockConfigService.stubs.setDefaultPreferences.callsFake( + async (preferences: PreferenceWithValidator) => { + for (const value of Object.values(preferences)) { + if (value.validate) { + expect(await value.validate()).to.be.true(); + } + } + } + ); + + await launcherService.validateConfig(); + }); + }); + + describe("Set modpack", () => { + it("should set the modpack and call relevant services", async () => { + const filepath = "test/modpack.zip"; + + // Mock the method calls to resolve promises immediately + mockResolutionService.stubs.getResolutionPreference.resolves({ + width: 1920, + height: 1080, + }); + mockConfigService.stubs.setPreference.resolves(); + mockMigrationService.stubs.separateProfileFromGraphics.resolves(); + mockEnbService.stubs.resetCurrentEnb.resolves(); + mockGraphicsService.stubs.getGraphicsPreference.resolves("high"); + mockGraphicsService.stubs.setGraphics.resolves(); + + await launcherService.setModpack(filepath); + + // Ensure the methods were called with the correct arguments + // This isn't a great way to test but the responsibility of this method is just to delegate to other services. + sinon.assert.calledOnceWithExactly( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.MOD_DIRECTORY, + filepath + ); + sinon.assert.calledOnce( + mockMigrationService.stubs.separateProfileFromGraphics + ); + sinon.assert.calledOnce(mockEnbService.stubs.resetCurrentEnb); + sinon.assert.calledOnce( + mockResolutionService.stubs.getResolutionPreference + ); + sinon.assert.calledOnce(mockResolutionService.stubs.setResolution); + sinon.assert.calledOnce( + mockResolutionService.stubs.setShouldDisableUltraWidescreen + ); + sinon.assert.calledOnce(mockGraphicsService.stubs.getGraphicsPreference); + sinon.assert.calledOnce(mockGraphicsService.stubs.setGraphics); + sinon.assert.notCalled(mockErrorService.stubs.handleError); + sinon.assert.notCalled(mockErrorService.stubs.handleUnknownError); + sinon.assert.notCalled(mockWindowService.stubs.quit); + }); + + it("should handle permission error and quit", async () => { + const filepath = "test/modpack.zip"; + const error = new Error("EPERM"); + + mockConfigService.stubs.setPreference.throws(error); + + await launcherService.setModpack(filepath); + + sinon.assert.calledOnceWithMatch( + mockErrorService.stubs.handleError, + "Permission error", + sinon.match.string as unknown as string + ); + sinon.assert.calledOnce(mockWindowService.stubs.quit); + }); + + it("should handle unknown error", async () => { + const filepath = "test/modpack.zip"; + const error = new Error("Some unknown error"); + + mockConfigService.stubs.setPreference.throws(error); + + await launcherService.setModpack(filepath); + + sinon.assert.calledOnceWithExactly( + mockErrorService.stubs.handleUnknownError, + error + ); + }); + }); + + it("should refresh the modpack by setting the modpack to the current modpack", async () => { + const filepath = "test/modpack.zip"; + mockModpackService.stubs.getModpackDirectory.returns(filepath); + + await launcherService.refreshModpack(); + + // Ensure the methods were called with the correct arguments + // This isn't a great way to test but the responsibility of this method is just to delegate to other services. + sinon.assert.calledOnceWithExactly( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.MOD_DIRECTORY, + filepath + ); + sinon.assert.calledOnce( + mockMigrationService.stubs.separateProfileFromGraphics + ); + sinon.assert.calledOnce(mockEnbService.stubs.resetCurrentEnb); + sinon.assert.calledOnce( + mockResolutionService.stubs.getResolutionPreference + ); + sinon.assert.calledOnce(mockResolutionService.stubs.setResolution); + sinon.assert.calledOnce( + mockResolutionService.stubs.setShouldDisableUltraWidescreen + ); + sinon.assert.calledOnce(mockGraphicsService.stubs.getGraphicsPreference); + sinon.assert.calledOnce(mockGraphicsService.stubs.setGraphics); + sinon.assert.notCalled(mockErrorService.stubs.handleError); + sinon.assert.notCalled(mockErrorService.stubs.handleUnknownError); + sinon.assert.notCalled(mockWindowService.stubs.quit); + }); +}); diff --git a/src/__tests__/unit/services/migration.service.test.ts b/src/__tests__/unit/main/services/migration.service.test.ts similarity index 57% rename from src/__tests__/unit/services/migration.service.test.ts rename to src/__tests__/unit/main/services/migration.service.test.ts index 66226161..77ecba3b 100644 --- a/src/__tests__/unit/services/migration.service.test.ts +++ b/src/__tests__/unit/main/services/migration.service.test.ts @@ -10,8 +10,11 @@ import mockFs from "mock-fs"; import { ProfileService } from "@/main/services/profile.service"; import fs from "fs"; import { ConfigService } from "@/main/services/config.service"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import type { DirectoryItems } from "mock-fs/lib/filesystem"; +import { readFilesFromDirectory } from "@/__tests__/unit/helpers/read-files"; -describe("Migration service", () => { +describe("Migration service #main #service", () => { let migrationService: MigrationService; let mockGraphicsService: StubbedInstanceWithSinonAccessor; let mockProfileService: StubbedInstanceWithSinonAccessor; @@ -23,7 +26,10 @@ describe("Migration service", () => { mockConfigService = createStubInstance(ConfigService); }); - afterEach(mockFs.restore); + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); describe("Separating profile from graphics", () => { let mockModDirectory: string; @@ -32,6 +38,7 @@ describe("Migration service", () => { let mockGraphicsPresets: string; let mockBackupDirectory: string; let mockProfileBackup: string; + let mockFSBase: DirectoryItems; beforeEach(() => { mockModDirectory = "/mod/directory"; @@ -45,61 +52,64 @@ describe("Migration service", () => { { real: "mock-real", friendly: "mock friendly" }, { real: "mock-real-2", friendly: "mock friendly 2" }, ]; - mockFs({ + + mockFSBase = { [mockLauncherDirectory]: { "namesMO2.json": JSON.stringify(mockProfiles), }, [mockProfilesDirectory]: { potato: { - "modlist.txt": "", - "plugins.txt": "", - "Skyrim.ini": "", - "SkyrimPrefs.ini": "", - "SkyrimCustom.ini": "", + "modlist.txt": "potato", + "plugins.txt": "potato", + "Skyrim.ini": "potato", + "SkyrimPrefs.ini": "potato", + "SkyrimCustom.ini": "potato", }, low: { "modlist.txt": "modified-modlist", "plugins.txt": "modified-plugins", - "Skyrim.ini": "", - "SkyrimPrefs.ini": "", - "SkyrimCustom.ini": "", + "Skyrim.ini": "low", + "SkyrimPrefs.ini": "low", + "SkyrimCustom.ini": "low", }, high: { - "modlist.txt": "", - "plugins.txt": "", - "Skyrim.ini": "", - "SkyrimPrefs.ini": "", - "SkyrimCustom.ini": "", + "modlist.txt": "high", + "plugins.txt": "high", + "Skyrim.ini": "high", + "SkyrimPrefs.ini": "high", + "SkyrimCustom.ini": "high", }, }, [mockProfileBackup]: { - potato: "potato-content", - low: "content", + potato: { "potato.ini": "potato" }, + low: { "low.ini": "content" }, + high: { "high.ini": "content" }, }, [`${mockLauncherDirectory}/backup/Graphics Presets`]: { potato: { - "modlist.txt": "", - "plugins.txt": "", - "Skyrim.ini": "", - "SkyrimPrefs.ini": "", - "SkyrimCustom.ini": "", + "modlist.txt": "potato", + "plugins.txt": "potato", + "Skyrim.ini": "potato", + "SkyrimPrefs.ini": "potato", + "SkyrimCustom.ini": "potato", }, low: { - "modlist.txt": "", - "plugins.txt": "", - "Skyrim.ini": "", - "SkyrimPrefs.ini": "", - "SkyrimCustom.ini": "", + "modlist.txt": "low", + "plugins.txt": "low", + "Skyrim.ini": "low", + "SkyrimPrefs.ini": "low", + "SkyrimCustom.ini": "low", }, high: { - "modlist.txt": "", - "plugins.txt": "", - "Skyrim.ini": "", - "SkyrimPrefs.ini": "", - "SkyrimCustom.ini": "", + "modlist.txt": "high", + "plugins.txt": "high", + "Skyrim.ini": "high", + "SkyrimPrefs.ini": "high", + "SkyrimCustom.ini": "high", }, }, - }); + }; + mockFs(mockFSBase); mockProfileService.stubs.getProfileDirectories.resolves([ `${mockProfilesDirectory}/potato`, @@ -136,7 +146,8 @@ describe("Migration service", () => { migrationService = new MigrationService( mockGraphicsService, mockProfileService, - mockConfigService + mockConfigService, + getMockLogger() ); }); @@ -235,5 +246,101 @@ describe("Migration service", () => { "mock-real-profile" ); }); + + it("should create the performance profile from the backup if it exists", async () => { + mockGraphicsService.stubs.graphicsExist.resolves(false); + mockProfileService.stubs.getBackedUpProfileDirectories.resolves([ + `${mockProfileBackup}/high`, + `${mockProfileBackup}/low`, + `${mockProfileBackup}/potato`, + ]); + + mockConfigService.stubs.backupsExist.returns(true); + + await migrationService.separateProfileFromGraphics(); + + expect( + await readFilesFromDirectory( + `${mockProfilesDirectory}/0_Wildlander-STANDARD` + ) + ).to.containDeep({ + "high.ini": "content", + }); + expect( + await readFilesFromDirectory( + `${mockProfilesDirectory}/0_Wildlander-PERFORMANCE` + ) + ).to.containDeep({ + "potato.ini": "potato", + }); + }); + + it("should should create the performance profile from a backup and use the first if there is no potato profile", async () => { + mockGraphicsService.stubs.graphicsExist.resolves(false); + mockProfileService.stubs.getBackedUpProfileDirectories.resolves([ + `${mockProfileBackup}/high`, + `${mockProfileBackup}/low`, + ]); + + mockProfileService.stubs.getProfileDirectories.resolves([ + `${mockProfilesDirectory}/high`, + `${mockProfilesDirectory}/low`, + ]); + + mockConfigService.stubs.backupsExist.returns(true); + + await migrationService.separateProfileFromGraphics(); + + expect( + await readFilesFromDirectory( + `${mockProfilesDirectory}/0_Wildlander-PERFORMANCE` + ) + ).to.containDeep({ + "low.ini": "content", + }); + }); + + it("should create the performance profile and use the first if there is no backups and no potato profile", async () => { + mockConfigService.stubs.backupsExist.returns(false); + + mockProfileService.stubs.getProfileDirectories.resolves([ + `${mockProfilesDirectory}/low`, + `${mockProfilesDirectory}/high`, + ]); + + mockFs({ + ...mockFSBase, + [mockProfilesDirectory]: { + low: { + "modlist.txt": "modified-modlist", + "plugins.txt": "modified-plugins", + "Skyrim.ini": "low", + "SkyrimPrefs.ini": "low", + "SkyrimCustom.ini": "low", + }, + high: { + "modlist.txt": "high", + "plugins.txt": "high", + "Skyrim.ini": "high", + "SkyrimPrefs.ini": "high", + "SkyrimCustom.ini": "high", + }, + }, + }); + + await migrationService.separateProfileFromGraphics(); + + expect( + await readFilesFromDirectory( + `${mockProfilesDirectory}/0_Wildlander-PERFORMANCE` + ) + ).to.containDeep({ + "modlist.txt": "modified-modlist", + "plugins.txt": "modified-plugins", + "Skyrim.ini": "low", + "SkyrimPrefs.ini": "low", + "SkyrimCustom.ini": "low", + }); + }); }); }); diff --git a/src/__tests__/unit/main/services/modOrganizer.service.test.ts b/src/__tests__/unit/main/services/modOrganizer.service.test.ts new file mode 100644 index 00000000..b0ee33d2 --- /dev/null +++ b/src/__tests__/unit/main/services/modOrganizer.service.test.ts @@ -0,0 +1,811 @@ +import { ModOrganizerService } from "@/main/services/modOrganizer.service"; +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { EnbService } from "@/main/services/enb.service"; +import { ErrorService } from "@/main/services/error.service"; +import { ConfigService, UserPreferences } from "@/main/services/config.service"; +import { ResolutionService } from "@/main/services/resolution.service"; +import { GameService } from "@/main/services/game.service"; +import { ProfileService } from "@/main/services/profile.service"; +import { SystemService } from "@/main/services/system.service"; +import { GraphicsService } from "@/main/services/graphics.service"; +import mockFs from "mock-fs"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { MO2_NAMES } from "@/shared/enums/mo2"; +import type { ProcessDescriptor } from "ps-list"; +import type { NonEmptyArray } from "@/shared/types/non-empty-array"; +import { getMockDialog } from "@/__tests__/unit/helpers/mocks/dialog.mock"; +import type { Dialog } from "@/main/services/dialog.service"; +import os from "os"; +import fs from "fs/promises"; +import Store from "electron-store"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import type { Logger } from "@/main/logger"; + +describe("ModOrganizer service #main #service", () => { + let mockEnbService: StubbedInstanceWithSinonAccessor; + let mockErrorService: StubbedInstanceWithSinonAccessor; + let mockConfigService: StubbedInstanceWithSinonAccessor; + let mockResolutionService: StubbedInstanceWithSinonAccessor; + let mockGameService: StubbedInstanceWithSinonAccessor; + let mockProfileService: StubbedInstanceWithSinonAccessor; + let mockSystemService: StubbedInstanceWithSinonAccessor; + let mockGraphicsService: StubbedInstanceWithSinonAccessor; + let mockDialog: StubbedInstanceWithSinonAccessor; + let modOrganizerService: ModOrganizerService; + let mockLogger: sinon.SinonStubbedInstance; + + beforeEach(() => { + mockEnbService = createStubInstance(EnbService); + mockErrorService = createStubInstance(ErrorService); + mockConfigService = createStubInstance(ConfigService); + mockResolutionService = createStubInstance(ResolutionService); + mockGameService = createStubInstance(GameService); + mockProfileService = createStubInstance(ProfileService); + mockSystemService = createStubInstance(SystemService); + mockGraphicsService = createStubInstance(GraphicsService); + + mockDialog = getMockDialog(); + mockLogger = getMockLogger(); + + modOrganizerService = new ModOrganizerService( + mockEnbService, + mockErrorService, + mockConfigService, + mockResolutionService, + mockGameService, + mockProfileService, + mockSystemService, + mockGraphicsService, + mockDialog, + mockLogger, + true + ); + }); + + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); + + describe("isRunning", () => { + it("should determine if Mod Organizer is running", async () => { + mockSystemService.stubs.isProcessRunning + .withArgs(MO2_NAMES.MO2EXE) + .resolves(true); + + expect(await modOrganizerService.isRunning()).to.eql(true); + }); + }); + + describe("getFirstCustomExecutableTitle", () => { + it("should get the first binary from MO2 settings", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[customExecutables]", + "size=1", + "1\\binary=mock/first/custom/executable.exe", + "1\\title=SKSE", + ].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + expect(await modOrganizerService.getFirstCustomExecutableTitle()).to.eql( + "SKSE" + ); + }); + }); + + describe("closeMO2", () => { + it("should close MO2 if it it running", async () => { + const mockProcesses: NonEmptyArray = [ + { + name: MO2_NAMES.MO2EXE, + pid: 123, + ppid: 0, + }, + { + name: "mockProcess.exe", + pid: 456, + ppid: 0, + }, + ]; + + mockSystemService.stubs.listProcesses.resolves(mockProcesses); + await modOrganizerService.closeMO2(); + + sinon.assert.calledWith( + mockSystemService.stubs.kill, + mockProcesses[0].pid + ); + }); + + it("should not try to kill anything if MO2 is not running", async () => { + const mockProcesses: NonEmptyArray = [ + { + name: "mockProcess.exe", + pid: 456, + ppid: 0, + }, + ]; + + mockSystemService.stubs.listProcesses.resolves(mockProcesses); + await modOrganizerService.closeMO2(); + + sinon.assert.notCalled(mockSystemService.stubs.kill); + }); + }); + + describe("handleMO2Running", () => { + it("should show a message to the user", async () => { + mockDialog.stubs.showMessageBox.resolves({ + response: 0, + checkboxChecked: false, + }); + + await modOrganizerService.handleMO2Running(); + + sinon.assert.called(mockDialog.stubs.showMessageBox); + }); + + it("should close MO2 if instructed to", async () => { + mockDialog.stubs.showMessageBox.resolves({ + response: 1, + checkboxChecked: false, + }); + + const mockProcesses: NonEmptyArray = [ + { + name: MO2_NAMES.MO2EXE, + pid: 123, + ppid: 0, + }, + { + name: "mockProcess.exe", + pid: 456, + ppid: 0, + }, + ]; + + mockSystemService.stubs.listProcesses.resolves(mockProcesses); + + await modOrganizerService.handleMO2Running(); + + sinon.assert.called(mockSystemService.stubs.kill); + }); + + it("should return false if not closing MO2", async () => { + mockDialog.stubs.showMessageBox.resolves({ + response: 0, + checkboxChecked: false, + }); + + expect(await modOrganizerService.handleMO2Running()).to.eql(false); + }); + }); + + describe("readSettings", () => { + it("should read the settings file and parse it", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[customExecutables]", + "size=1", + "1\\binary=mock/first/custom/executable.exe", + "1\\title=SKSE", + ].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + expect(await modOrganizerService.readSettings()).to.containDeep({ + customExecutables: { + size: 1, + "1\\binary": "mock/first/custom/executable.exe", + "1\\title": "SKSE", + }, + }); + }); + }); + + describe("updateSelectedProfile", () => { + it("should update the selected profile", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[General]", + "gameName=Skyrim Special Edition", + "selected_profile=@ByteArray(mock-original-profile-name)", + ].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + await modOrganizerService.updateSelectedProfile("new-profile-name"); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal( + [ + // The library used to parse and stringify inis adds a newline at the start of the file + "", + "[General]", + "gameName=Skyrim Special Edition", + "selected_profile=@ByteArray(new-profile-name)", + ].join(os.EOL) + ); + }); + }); + + describe("preventMO2GUIFromShowing", () => { + it("should set lock_gui to to false in the ini", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: ["[Settings]", "lock_gui=true"].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + await modOrganizerService.preventMO2GUIFromShowing(); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal( + [ + // The library used to parse and stringify inis adds a newline at the start of the file + "", + "[Settings]", + "lock_gui=false", + ].join(os.EOL) + ); + }); + }); + + describe("restoreMO2Settings", () => { + it("should restore the MO2 settings if they are available", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: ["[Settings]", "lock_gui=true"].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + // This stores the previous MO2 settings to be restored later + await modOrganizerService.preventMO2GUIFromShowing(); + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[Mock settings]", + "another-setting=true", + ].join(os.EOL), + }, + }); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal(["[Mock settings]", "another-setting=true"].join(os.EOL)); + + await modOrganizerService.restoreMO2Settings(); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal( + [ + // The library used to parse and stringify inis adds a newline at the start of the file + "", + "[Settings]", + "lock_gui=true", + ].join(os.EOL) + ); + }); + + it("should not restore MO2 settings if there is none available", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[Mock settings]", + "another-setting=true", + ].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + await modOrganizerService.restoreMO2Settings(); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal(["[Mock settings]", "another-setting=true"].join(os.EOL)); + }); + }); + + describe("prepareForLaunch", () => { + beforeEach(() => { + mockSystemService.stubs.isProcessRunning + .withArgs(MO2_NAMES.MO2EXE) + .resolves(true); + + mockDialog.stubs.showMessageBox.resolves({ + response: 1, + checkboxChecked: false, + }); + + const mockProcesses: NonEmptyArray = [ + { name: "mock", pid: 123, ppid: 0 }, + ]; + mockSystemService.stubs.listProcesses.resolves(mockProcesses); + + const mockStore = createStubInstance>(Store); + sinon.stub(mockStore.stubs, "store").get(() => "mock"); + mockConfigService.stubs.getPreferences.returns(mockStore); + }); + + it("should not continue if MO2 is running and return false if user chooses not to close MO2", async () => { + mockDialog.stubs.showMessageBox.resolves({ + response: 0, + checkboxChecked: false, + }); + + expect(await modOrganizerService.prepareForLaunch()).to.eql(false); + }); + + it("should continue running and return true if MO2 is running and the user chooses to close it", async () => { + expect(await modOrganizerService.prepareForLaunch()).to.eql(true); + }); + + it("should not try to close MO2 if it is not running", async () => { + mockSystemService.stubs.isProcessRunning + .withArgs(MO2_NAMES.MO2EXE) + .resolves(false); + + await modOrganizerService.prepareForLaunch(); + + sinon.assert.notCalled(mockDialog.stubs.showMessageBox); + }); + + it("should set the resolution", async () => { + await modOrganizerService.prepareForLaunch(); + + sinon.assert.called( + mockResolutionService.stubs.setResolutionInGraphicsSettings + ); + }); + }); + + describe("launchMO2", () => { + const mockModDirectory = "mock/mod/directory"; + + beforeEach(() => { + mockSystemService.stubs.isProcessRunning + .withArgs(MO2_NAMES.MO2EXE) + .resolves(true); + + mockDialog.stubs.showMessageBox.resolves({ + response: 1, + checkboxChecked: false, + }); + + const mockProcesses: NonEmptyArray = [ + { name: "mock", pid: 123, ppid: 0 }, + ]; + sinon.stub(process, "kill"); + mockSystemService.stubs.listProcesses.resolves(mockProcesses); + + const mockStore = createStubInstance>(Store); + sinon.stub(mockStore.stubs, "store").get(() => "mock"); + mockConfigService.stubs.getPreferences.returns(mockStore); + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(mockModDirectory); + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[General]", + "gameName=Skyrim Special Edition", + "selected_profile=@ByteArray(mock-original-profile-name)", + ].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + }); + + it("should not continue if the preparation fails", async () => { + mockDialog.stubs.showMessageBox.resolves({ + response: 0, + checkboxChecked: false, + }); + + await modOrganizerService.launchMO2(); + + sinon.assert.notCalled(mockSystemService.stubs.exec); + }); + + it("should launch MO2", async () => { + mockSystemService.stubs.exec.resolves({ stdout: "", stderr: "" }); + + await modOrganizerService.launchMO2(); + + sinon.assert.calledWith( + mockSystemService.stubs.exec, + `"${mockModDirectory}/${MO2_NAMES.MO2EXE}"` + ); + }); + + it("should update the profile before launching", async () => { + mockSystemService.stubs.exec.resolves({ stdout: "", stderr: "" }); + + mockProfileService.stubs.getProfilePreference.resolves("mock-new-name"); + + await modOrganizerService.launchMO2(); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal( + [ + "", + "[General]", + "gameName=Skyrim Special Edition", + "selected_profile=@ByteArray(mock-new-name)", + ].join(os.EOL) + ); + }); + + it("should just log the error if there is any stderr from MO2", async () => { + mockSystemService.stubs.exec.resolves({ + stdout: "", + stderr: "mock error", + }); + + await modOrganizerService.launchMO2(); + + sinon.assert.calledWithMatch(mockLogger.error, sinon.match("mock error")); + }); + + it("should throw an error if anything fails", async () => { + mockSystemService.stubs.exec.rejects(new Error("mock error")); + + await expect(modOrganizerService.launchMO2()).to.be.rejectedWith( + "mock error" + ); + }); + + it("should not log stdout if not in development mode", async () => { + mockSystemService.stubs.exec.resolves({ stdout: "", stderr: "" }); + + modOrganizerService = new ModOrganizerService( + mockEnbService, + mockErrorService, + mockConfigService, + mockResolutionService, + mockGameService, + mockProfileService, + mockSystemService, + mockGraphicsService, + mockDialog, + mockLogger, + false + ); + + await modOrganizerService.launchMO2(); + + const debugWithStdOut = + (mockLogger.debug.args as string[][]).filter((arg) => + arg?.[0]?.includes("stdout") + ).length > 0; + + expect(debugWithStdOut).to.equal(false); + }); + }); + + describe("launchGame", () => { + const mockModDirectory = "mock/mod/directory"; + + beforeEach(() => { + mockSystemService.stubs.isProcessRunning + .withArgs(MO2_NAMES.MO2EXE) + .resolves(true); + + mockDialog.stubs.showMessageBox.resolves({ + response: 1, + checkboxChecked: false, + }); + + const mockProcesses: NonEmptyArray = [ + { name: "mock", pid: 123, ppid: 0 }, + ]; + sinon.stub(process, "kill"); + mockSystemService.stubs.listProcesses.resolves(mockProcesses); + + const mockStore = createStubInstance>(Store); + sinon.stub(mockStore.stubs, "store").get(() => "mock"); + mockConfigService.stubs.getPreferences.returns(mockStore); + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(mockModDirectory); + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: [ + "[customExecutables]", + "size=1", + "1\\binary=mock/first/custom/executable.exe", + "1\\title=SKSE", + "[Settings]", + "lock_gui=true", + ].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + mockProfileService.stubs.getProfilePreference.resolves("mock-profile"); + + mockSystemService.stubs.exec.resolves({ stdout: "", stderr: "" }); + }); + + it("should not continue the launch if the user chooses not to close MO2", async () => { + mockDialog.stubs.showMessageBox.resolves({ + response: 0, + checkboxChecked: false, + }); + + await modOrganizerService.launchGame(); + + sinon.assert.notCalled(mockSystemService.stubs.exec); + }); + + it("should prevent the MO2 GUI from showing", async () => { + const writeFileSpy = sinon.spy(fs, "writeFile"); + + await modOrganizerService.launchGame(); + + sinon.assert.calledWith( + writeFileSpy, + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + [ + // The library used to parse and stringify inis adds a newline at the start of the file + "", + "[customExecutables]", + "size=1", + "1\\binary=mock/first/custom/executable.exe", + "1\\title=SKSE", + "", + "[Settings]", + "lock_gui=false", + ].join(os.EOL) + ); + }); + + it("should call MO2 with the command to start the game with the right profile", async () => { + await modOrganizerService.launchGame(); + + sinon.assert.calledWith( + mockSystemService.stubs.exec, + `"${mockModDirectory}/${MO2_NAMES.MO2EXE}" -p "mock-profile" "moshortcut://:SKSE"` + ); + }); + + it("should copy the skyrim launch logs", async () => { + await modOrganizerService.launchGame(); + + sinon.assert.called(mockGameService.stubs.copySkyrimLaunchLogs); + }); + + it("should restore the MO2 settings", async () => { + await modOrganizerService.launchGame(); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal( + [ + // The library used to parse and stringify inis adds a newline at the start of the file + "", + "[customExecutables]", + "size=1", + "1\\binary=mock/first/custom/executable.exe", + "1\\title=SKSE", + "", + "[Settings]", + "lock_gui=true", + ].join(os.EOL) + ); + }); + + it("should sync the enb settings from the game to presets", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.ENB_PROFILE) + .returns("mock-enb-profile"); + + await modOrganizerService.launchGame(); + + sinon.assert.calledWith( + mockEnbService.stubs.syncEnbFromGameToPresets, + "mock-enb-profile" + ); + }); + + it("should sync the graphics from the game to the presets", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.GRAPHICS) + .returns("mock-graphics-profile"); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.PRESET) + .returns("mock-preset"); + + await modOrganizerService.launchGame(); + + sinon.assert.calledWith( + mockGraphicsService.stubs.syncGraphicsFromGameToPresets, + "mock-graphics-profile", + "mock-preset" + ); + }); + + it("should throw an error if MO2 returns any stderr", async () => { + mockSystemService.stubs.exec.resolves({ + stdout: "", + stderr: "mock error", + }); + + await expect(modOrganizerService.launchGame()).to.be.rejectedWith( + "mock error" + ); + }); + + it("should throw an error if exec throws an error", async () => { + mockSystemService.stubs.exec.rejects(new Error("mock exec error")); + + await expect(modOrganizerService.launchGame()).to.be.rejectedWith( + "mock exec error" + ); + }); + + it("should not log stdout if not in development mode", async () => { + modOrganizerService = new ModOrganizerService( + mockEnbService, + mockErrorService, + mockConfigService, + mockResolutionService, + mockGameService, + mockProfileService, + mockSystemService, + mockGraphicsService, + mockDialog, + mockLogger, + false + ); + + await modOrganizerService.launchGame(); + + const debugWithStdOut = + (mockLogger.debug.args as string[][]).filter((arg) => + arg?.[0]?.includes("stdout") + ).length > 0; + + expect(debugWithStdOut).to.equal(false); + }); + }); + + describe("postLaunch", () => { + it("should copy the skyrim launch logs", async () => { + await modOrganizerService.postLaunch(); + + sinon.assert.called(mockGameService.stubs.copySkyrimLaunchLogs); + }); + + it("should restore the MO2 settings", async () => { + const mockModDirectory = "mock/mod/directory"; + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: ["[Settings]"].join(os.EOL), + }, + }); + + mockConfigService.stubs.modDirectory.returns(mockModDirectory); + + // This stores the previous MO2 settings to be restored later + await modOrganizerService.preventMO2GUIFromShowing(); + + mockFs({ + [mockModDirectory]: { + [MO2_NAMES.MO2Settings]: ["[Mock settings]"].join(os.EOL), + }, + }); + + await modOrganizerService.postLaunch(); + + expect( + await fs.readFile( + `${mockModDirectory}/${MO2_NAMES.MO2Settings}`, + "utf8" + ) + ).to.equal( + [ + // The library used to parse and stringify inis adds a newline at the start of the file + "", + "[Settings]", + ].join(os.EOL) + ); + }); + + it("should sync the enb settings from the game to presets", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.ENB_PROFILE) + .returns("mock-enb-profile"); + + await modOrganizerService.postLaunch(); + + sinon.assert.calledWith( + mockEnbService.stubs.syncEnbFromGameToPresets, + "mock-enb-profile" + ); + }); + + it("should sync the graphics from the game to the presets", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.GRAPHICS) + .returns("mock-graphics-profile"); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.PRESET) + .returns("mock-preset"); + + await modOrganizerService.postLaunch(); + + sinon.assert.calledWith( + mockGraphicsService.stubs.syncGraphicsFromGameToPresets, + "mock-graphics-profile", + "mock-preset" + ); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/modpack.service.test.ts b/src/__tests__/unit/main/services/modpack.service.test.ts new file mode 100644 index 00000000..94c19734 --- /dev/null +++ b/src/__tests__/unit/main/services/modpack.service.test.ts @@ -0,0 +1,158 @@ +import type { StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import { ModpackService } from "@/main/services/modpack.service"; +import { createStubInstance, expect, sinon } from "@loopback/testlab"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { ConfigService, UserPreferences } from "@/main/services/config.service"; +import { MO2_NAMES } from "@/shared/enums/mo2"; +import mockFs from "mock-fs"; +import Store from "electron-store"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; + +describe("Modpack service #main #service", () => { + let modpackService: ModpackService; + let mockConfigService: StubbedInstanceWithSinonAccessor; + + const mockModpackPath = "mock/modpack/path"; + + beforeEach(() => { + mockConfigService = createStubInstance(ConfigService); + modpackService = new ModpackService(mockConfigService, getMockLogger()); + }); + + describe("checkModpackPathIsValid", () => { + it(`should return ok if the directory contains ${MO2_NAMES.MO2EXE}, profiles and launcher`, async () => { + mockFs({ + [mockModpackPath]: { + [MO2_NAMES.MO2EXE]: "", + profiles: {}, + launcher: {}, + }, + }); + + expect( + modpackService.checkModpackPathIsValid(mockModpackPath) + ).to.deepEqual({ + ok: true, + missingPaths: [], + }); + }); + + it("should return okay false if one of the requires paths is missing", async () => { + mockFs({ + [mockModpackPath]: { + launcher: {}, + }, + }); + + expect( + modpackService.checkModpackPathIsValid(mockModpackPath) + ).to.deepEqual({ + ok: false, + missingPaths: [MO2_NAMES.MO2EXE, "profiles"], + }); + }); + }); + + describe("checkCurrentModpackPathIsValid", () => { + it("should check the modpack is set and is valid", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(mockModpackPath); + + const mockUserConfig = "/mock/config"; + const preferenceFile = "userPreferences"; + mockFs({ + [`${mockUserConfig}/${preferenceFile}.json`]: JSON.stringify({ + MOD_DIRECTORY: mockModpackPath, + }), + [mockModpackPath]: { + [MO2_NAMES.MO2EXE]: "", + profiles: {}, + launcher: {}, + }, + }); + + const mockStore = new Store({ + name: preferenceFile, + cwd: mockUserConfig, + }); + + mockConfigService.stubs.getPreferences.returns(mockStore); + + expect(modpackService.checkCurrentModpackPathIsValid()).to.equal(true); + }); + }); + + describe("getModpackDirectory", () => { + it("should get the modpack preference", async () => { + const mockModDirectory = "mock/mod/directory"; + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(mockModDirectory); + + expect(modpackService.getModpackDirectory()).to.equal(mockModDirectory); + }); + }); + + // TODO this should probably be configurable outside of the app + describe("getModpackMetadata", () => { + it("should get the modpack metadata", async () => { + expect(modpackService.getModpackMetadata()).to.deepEqual({ + name: "Wildlander", + website: "https://www.wildlandermod.com", + wiki: "https://wiki.wildlandermod.com/", + patreon: "https://www.patreon.com/dylanbperry", + roadmap: "https://airtable.com/shrvAxHcCeCqKfnGe", + }); + }); + }); + + describe("deleteModpackDirectory", () => { + it("should delete the modpack directory", async () => { + modpackService.deleteModpackDirectory(); + + sinon.assert.calledWith( + mockConfigService.stubs.deletePreference, + USER_PREFERENCE_KEYS.MOD_DIRECTORY + ); + }); + }); + + describe("isModpackSet", () => { + it("should return true if the modpack is set", async () => { + const mockUserConfig = "/mock/config"; + const preferenceFile = "userPreferences"; + mockFs({ + [`${mockUserConfig}/${preferenceFile}.json`]: JSON.stringify({ + MOD_DIRECTORY: mockModpackPath, + }), + }); + + const mockStore = new Store({ + name: preferenceFile, + cwd: mockUserConfig, + }); + + mockConfigService.stubs.getPreferences.returns(mockStore); + + expect(modpackService.isModpackSet()).to.be.true(); + }); + + it("should return false if the modpack is not set", async () => { + const mockUserConfig = "/mock/config"; + const preferenceFile = "userPreferences"; + mockFs({ + [`${mockUserConfig}/${preferenceFile}.json`]: JSON.stringify({}), + }); + + const mockStore = new Store({ + name: preferenceFile, + cwd: mockUserConfig, + }); + + mockConfigService.stubs.getPreferences.returns(mockStore); + + expect(modpackService.isModpackSet()).to.be.false(); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/profile.service.test.ts b/src/__tests__/unit/main/services/profile.service.test.ts new file mode 100644 index 00000000..71abd5d0 --- /dev/null +++ b/src/__tests__/unit/main/services/profile.service.test.ts @@ -0,0 +1,577 @@ +import mockFs from "mock-fs"; +import type { FriendlyDirectoryMap } from "@/shared/types/modpack-metadata"; +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { ConfigService } from "@/main/services/config.service"; +import { ProfileService } from "@/main/services/profile.service"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { readFilesFromDirectory } from "@/__tests__/unit/helpers/read-files"; + +describe("Profile service #main #service", () => { + let mockConfigService: StubbedInstanceWithSinonAccessor; + let profileService: ProfileService; + + beforeEach(() => { + mockConfigService = createStubInstance(ConfigService); + profileService = new ProfileService(mockConfigService, getMockLogger()); + }); + + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); + + describe("profileDirectory", () => { + it("should return the profile directory", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + + expect(profileService.profileDirectory()).to.eql( + `${modDirectory}/profiles` + ); + }); + }); + + describe("profileBackupDirectory", () => { + it("should return the profile backup directory", async () => { + const backupDirectory = "mock/backup"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + + expect(profileService.profileBackupDirectory()).to.eql( + `${backupDirectory}/profiles` + ); + }); + }); + + describe("profileMappingFile", () => { + it("should return the profile mapping file", async () => { + const launcherDirectory = "mock/launcher/directory"; + mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); + + expect(profileService.profileMappingFile()).to.eql( + `${launcherDirectory}/namesMO2.json` + ); + }); + }); + + describe("getShowHiddenProfiles", () => { + it("should get if the user is showing hidden profiles", () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE) + .returns(true); + + expect(profileService.getShowHiddenProfiles()).to.eql(true); + }); + + it("should default showing hidden profiles to false if the key doesn't exist", () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE) + .returns(undefined); + + expect(profileService.getShowHiddenProfiles()).to.eql(false); + }); + }); + + describe("setShowHiddenProfiles", () => { + it("should set if the user is showing hidden profiles", () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE) + .returns(true); + profileService.setShowHiddenProfiles(false); + + mockConfigService.stubs.setPreference.calledWith( + sinon.match.string, + false + ); + }); + }); + + describe("getProfiles", () => { + it("should get the profiles", async () => { + const modDirectory = "mod/directory"; + const launcherDirectory = `${modDirectory}/launcher`; + + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); + + mockFs({ + [`${launcherDirectory}/namesMO2.json`]: JSON.stringify([ + { + real: "mock-real-name", + friendly: "mock friendly name", + }, + ] as FriendlyDirectoryMap[]), + [`${modDirectory}/profiles/mock-real-name`]: {}, + [`${modDirectory}/profiles/unmapped`]: {}, + }); + + const profiles = await profileService.getProfiles(); + const expected: FriendlyDirectoryMap[] = [ + { + real: "mock-real-name", + friendly: "mock friendly name", + }, + { + real: "unmapped", + friendly: "unmapped", + }, + ]; + + expect(profiles).to.eql(expected); + }); + }); + + describe("getMappedProfiles", () => { + it("should get the mapped profiles", async () => { + const modDirectory = "mod/directory"; + const launcherDirectory = `${modDirectory}/launcher`; + + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); + + mockFs({ + [`${launcherDirectory}/namesMO2.json`]: JSON.stringify([ + { + real: "mock-real-name", + friendly: "mock friendly name", + }, + ] as FriendlyDirectoryMap[]), + [`${modDirectory}/profiles/mock-real-name`]: {}, + [`${modDirectory}/profiles/unmapped`]: {}, + }); + + const profiles = await profileService.getMappedProfiles(); + + expect(profiles).to.eql([ + { + real: "mock-real-name", + friendly: "mock friendly name", + }, + ]); + }); + + it("should return an empty array if there are no mapped profiles", async () => { + const modDirectory = "mod/directory"; + const launcherDirectory = `${modDirectory}/launcher`; + + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); + + mockFs({ + [`${launcherDirectory}/namesMO2.json`]: JSON.stringify([]), + [`${modDirectory}/profiles/mock-real-name`]: {}, + [`${modDirectory}/profiles/unmapped`]: {}, + }); + + const profiles = await profileService.getMappedProfiles(); + + expect(profiles).to.eql([]); + }); + }); + + describe("getUnmappedProfiles", () => { + it("should get the unmapped profiles", async () => { + const modDirectory = "mod/directory"; + const launcherDirectory = `${modDirectory}/launcher`; + + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); + + const mappedProfiles: FriendlyDirectoryMap[] = [ + { + real: "mock-real-name", + friendly: "mock friendly name", + }, + ]; + + mockFs({ + [`${launcherDirectory}/namesMO2.json`]: JSON.stringify(mappedProfiles), + [`${modDirectory}/profiles/mock-real-name`]: {}, + [`${modDirectory}/profiles/unmapped`]: {}, + }); + + const profiles = await profileService.getUnmappedProfiles(mappedProfiles); + + expect(profiles).to.eql([ + { + real: "unmapped", + friendly: "unmapped", + }, + ]); + }); + }); + + describe("getProfileDirectories", () => { + it("should get the profile's directories", async () => { + const modDirectory = "mod/directory"; + const launcherDirectory = `${modDirectory}/launcher`; + + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); + + mockFs({ + [`${launcherDirectory}/namesMO2.json`]: JSON.stringify([ + { + real: "mock-real-name", + friendly: "mock friendly name", + }, + ] as FriendlyDirectoryMap[]), + [`${modDirectory}/profiles/unmapped`]: {}, + [`${modDirectory}/profiles/mock-real-name`]: {}, + }); + + const profileDirectories = await profileService.getProfileDirectories(); + const expected = [ + `${modDirectory}/profiles/mock-real-name`, + `${modDirectory}/profiles/unmapped`, + ]; + + expect(profileDirectories).to.eql(expected); + }); + + it("should prepend the profile directory", () => { + const modDirectory = "mod/directory"; + + mockConfigService.stubs.modDirectory.returns(modDirectory); + + expect(profileService.prependProfileDirectory("mock-file.json")).to.eql( + "mod/directory/profiles/mock-file.json" + ); + }); + }); + + describe("getBackedUpProfiles", () => { + it("should get the backup", async () => { + const backupDirectory = "backup/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + + mockFs({ + [`${backupDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.getBackedUpProfiles()).to.eql([ + "mock-profile-1", + "mock-profile-2", + ]); + }); + + it("should throw an error if the backup does not exist", async () => { + const backupDirectory = "backup/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + + mockFs({}); + + await expect(profileService.getBackedUpProfiles()).to.be.rejectedWith( + Error + ); + }); + }); + + describe("getBackedUpProfileDirectories", () => { + it("should get the backed up profile directories", async () => { + const backupDirectory = "backup/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + + mockFs({ + [`${backupDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.getBackedUpProfileDirectories()).to.eql([ + `${backupDirectory}/profiles/mock-profile-1`, + `${backupDirectory}/profiles/mock-profile-2`, + ]); + }); + + it("should throw an error if the backup does not exist", async () => { + const backupDirectory = "backup/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + + mockFs({}); + + await expect( + profileService.getBackedUpProfileDirectories() + ).to.be.rejectedWith(Error); + }); + }); + + describe("PrependProfileDirectory", () => { + it("should prepend the profile directory", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + + expect(profileService.prependProfileDirectory("mock-file.json")).to.eql( + "mod/directory/profiles/mock-file.json" + ); + }); + }); + + describe("getProfilePreference", () => { + it("should return the profile preference", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.PRESET) + .returns("mock-profile"); + expect(await profileService.getProfilePreference()).to.eql( + "mock-profile" + ); + }); + }); + + describe("getDefaultPreference", () => { + it("should return the first profile in the list", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.getDefaultPreference()).to.eql( + "mock-profile-1" + ); + }); + + it("should throw an error if there is no profiles found", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockFs({ + [`${modDirectory}/profiles`]: {}, + }); + + await expect(profileService.getDefaultPreference()).to.be.rejectedWith( + Error + ); + }); + }); + + describe("setProfilePreference", () => { + it("should set the profile preference", async () => { + profileService.setProfilePreference("mock-profile"); + + sinon.assert.calledWith( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.PRESET, + "mock-profile" + ); + }); + }); + + describe("isInProfileList", () => { + it("should return true if the profile is in the list", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.isInProfileList("mock-profile-1")).to.eql( + true + ); + }); + + it("should return false if the profile is not in the list", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.isInProfileList("mock-profile-3")).to.eql( + false + ); + }); + }); + + describe("isValid", () => { + it("should return true if the profile is valid", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.isValid("mock-profile-1")).to.eql(true); + }); + + it("should return false if the profile is not valid", async () => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.modDirectory.returns(modDirectory); + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + expect(await profileService.isValid("mock-profile-3")).to.eql(false); + }); + }); + + describe("backupOriginalProfiles", () => { + it("should backup the profiles if no backup exists", async () => { + const backupDirectory = "backup/directory"; + const modDirectory = "mod/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + mockConfigService.stubs.modDirectory.returns(modDirectory); + + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + await profileService.backupOriginalProfiles(); + + expect(await readFilesFromDirectory(backupDirectory)).to.eql({ + profiles: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + }); + + it("should not backup if there is one", async () => { + const backupDirectory = "backup/directory"; + const modDirectory = "mod/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + mockConfigService.stubs.modDirectory.returns(modDirectory); + + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-3": { + test: "testing", + }, + "mock-profile-4": { + test: "testing2", + }, + }, + [`${backupDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + await profileService.backupOriginalProfiles(); + + expect(await readFilesFromDirectory(backupDirectory)).to.eql({ + profiles: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + }); + }); + + describe("restoreProfiles", () => { + it("should restore the profiles from the backup but not overwrite other profiles", async () => { + const backupDirectory = "backup/directory"; + const modDirectory = "mod/directory"; + mockConfigService.stubs.backupDirectory.returns(backupDirectory); + mockConfigService.stubs.modDirectory.returns(modDirectory); + + mockFs({ + [`${modDirectory}/profiles`]: { + "mock-profile-3": { + test: "testing", + }, + "mock-profile-4": { + test: "testing2", + }, + }, + [`${backupDirectory}/profiles`]: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + }, + }); + + await profileService.restoreProfiles(); + + expect(await readFilesFromDirectory(modDirectory)).to.eql({ + profiles: { + "mock-profile-1": { + test: "test", + }, + "mock-profile-2": { + test: "test2", + }, + "mock-profile-3": { + test: "testing", + }, + "mock-profile-4": { + test: "testing2", + }, + }, + }); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/resolution.service.test.ts b/src/__tests__/unit/main/services/resolution.service.test.ts new file mode 100644 index 00000000..0c1f2b9b --- /dev/null +++ b/src/__tests__/unit/main/services/resolution.service.test.ts @@ -0,0 +1,713 @@ +import { ResolutionService } from "@/main/services/resolution.service"; +import type { StubbedInstanceWithSinonAccessor } from "@loopback/testlab"; +import { createStubInstance, expect, sinon } from "@loopback/testlab"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { ConfigService } from "@/main/services/config.service"; +import { InstructionService } from "@/main/services/instruction.service"; +import { + InstructionAction, + InstructionType, +} from "@/shared/enums/additional-instructions"; +import type Electron from "electron"; +import type { + OverloadParameters, + OverloadReturnType, +} from "@/shared/types/overloads"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import mockFs from "mock-fs"; +import { stringify } from "ini"; +import fs from "fs/promises"; +import { getChildProcessMock } from "@/__tests__/unit/helpers/mocks/child-process.mock"; +import type * as child_process from "child_process"; +import os from "os"; +import { parse } from "js-ini"; + +describe("Resolution service #main #service", () => { + let resolutionService: ResolutionService; + let mockConfigService: StubbedInstanceWithSinonAccessor; + let mockInstructionService: StubbedInstanceWithSinonAccessor; + let getPrimaryDisplayStub: sinon.SinonStub< + OverloadParameters, + OverloadReturnType + >; + let mockChildProcess: StubbedInstanceWithSinonAccessor; + let primaryDisplayMockReturn: Electron.Display; + + beforeEach(() => { + mockConfigService = createStubInstance(ConfigService); + mockInstructionService = createStubInstance(InstructionService); + getPrimaryDisplayStub = sinon.stub(); + primaryDisplayMockReturn = { + size: { + height: 1080, + width: 1920, + }, + scaleFactor: 1, + accelerometerSupport: "unknown", + bounds: { + height: 1080, + width: 1920, + x: 0, + y: 0, + }, + colorDepth: 0, + colorSpace: "", + depthPerComponent: 0, + displayFrequency: 0, + id: 0, + internal: false, + monochrome: false, + rotation: 0, + touchSupport: "unknown", + workArea: { + height: 1080, + width: 1920, + x: 0, + y: 0, + }, + workAreaSize: { + height: 1080, + width: 1920, + }, + }; + getPrimaryDisplayStub.returns(primaryDisplayMockReturn); + + mockChildProcess = getChildProcessMock(); + + resolutionService = new ResolutionService( + mockConfigService, + mockInstructionService, + getMockLogger(), + true, + { + screen: { getPrimaryDisplay: getPrimaryDisplayStub }, + } as unknown as typeof Electron, + mockChildProcess + ); + }); + + afterEach(() => { + sinon.restore(); + mockFs.restore(); + }); + + describe("getResourcePath", () => { + it("should return the local resource path if in development", async () => { + expect(resolutionService.getResourcePath()).to.equal( + `${process.cwd()}/src/assets` + ); + }); + + it("should return the app resource path if not in development", async () => { + resolutionService = new ResolutionService( + mockConfigService, + mockInstructionService, + getMockLogger(), + false, + {} as unknown as typeof Electron, + mockChildProcess + ); + + // Electron assigns this variable at runtime in a packaged app. + // TypeScript and IDEs see it as readonly, so it must be ignored. + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + // noinspection JSConstantReassignment + process.resourcesPath = "mock/resources/path"; + expect(resolutionService.getResourcePath()).to.equal( + "mock/resources/path" + ); + }); + }); + + describe("isUltraWidescreen", () => { + it("should return true if the resolution is ultra-widescreen", async () => { + expect( + resolutionService.isUltraWidescreen({ width: 3480, height: 1440 }) + ).to.equal(true); + }); + + it("should return false if the resolution is not ultra-widescreen", async () => { + expect( + resolutionService.isUltraWidescreen({ width: 1920, height: 1080 }) + ).to.equal(false); + }); + }); + + describe("getClosestSupportedRatio", () => { + it("should return the closest supported ratio", async () => { + expect( + resolutionService.getClosestSupportedRatio({ + width: 1920, + height: 1080, + }) + ).to.equal("16:9"); + expect( + resolutionService.getClosestSupportedRatio({ + width: 2560, + height: 1080, + }) + ).to.equal("21:9"); + expect( + resolutionService.getClosestSupportedRatio({ + width: 3840, + height: 1080, + }) + ).to.equal("32:9"); + expect( + resolutionService.getClosestSupportedRatio({ + width: 1111, + height: 2222, + }) + ).to.equal("16:9"); + }); + }); + + describe("setShouldDisableUltraWidescreen", () => { + it("should set the value if the instruction service has the instruction", async () => { + mockInstructionService.stubs.getInstructions.returns([ + { + action: InstructionAction.DISABLE_ULTRA_WIDESCREEN, + version: "1.0.0", + }, + ]); + + await resolutionService.setShouldDisableUltraWidescreen(); + + sinon.assert.calledWith(mockInstructionService.stubs.execute, [ + { + action: InstructionAction.DISABLE_ULTRA_WIDESCREEN, + version: "1.0.0", + }, + ]); + }); + + it("should not set the value if the instruction service doesn't have the value", async () => { + mockInstructionService.stubs.getInstructions.returns([ + { + action: InstructionAction.DISABLE_PLUGIN, + version: "1.0.0", + plugin: "test-plugin", + target: "test-target", + type: InstructionType.ENB, + }, + ]); + + await resolutionService.setShouldDisableUltraWidescreen(); + + sinon.assert.calledWith(mockInstructionService.stubs.execute, []); + }); + }); + + describe("isUnsupportedResolution", () => { + it("should return true if the resolution is ultra-widescreen and it is disabled", async () => { + mockInstructionService.stubs.getInstructions.returns([]); + mockInstructionService.stubs.execute.resolves(true); + + // this sets if the ultra-widescreen is disabled + await resolutionService.setShouldDisableUltraWidescreen(); + + expect( + await resolutionService.isUnsupportedResolution({ + width: 3840, + height: 1080, + }) + ).to.equal(true); + }); + + it("should return false if the resolution is not ultra-widescreen", async () => { + mockInstructionService.stubs.getInstructions.returns([]); + mockInstructionService.stubs.execute.resolves(true); + + // this sets if the ultra-widescreen is disabled + await resolutionService.setShouldDisableUltraWidescreen(); + + expect( + await resolutionService.isUnsupportedResolution({ + width: 1920, + height: 1080, + }) + ).to.equal(false); + }); + + it("should return false if the resolution is ultra-widescreen and it is not disabled", async () => { + mockInstructionService.stubs.getInstructions.returns([]); + mockInstructionService.stubs.execute.resolves(false); + + // this sets if the ultra-widescreen is disabled + await resolutionService.setShouldDisableUltraWidescreen(); + + expect( + await resolutionService.isUnsupportedResolution({ + width: 3840, + height: 1080, + }) + ).to.equal(false); + }); + + it("should return false if the resolution is not ultra-widescreen and it is disabled", async () => { + mockInstructionService.stubs.getInstructions.returns([]); + mockInstructionService.stubs.execute.resolves(false); + + // this sets if the ultra-widescreen is disabled + await resolutionService.setShouldDisableUltraWidescreen(); + + expect( + await resolutionService.isUnsupportedResolution({ + width: 1920, + height: 1080, + }) + ).to.equal(false); + }); + + describe("getCurrentResolution", () => { + it("should get the current resolution multiplied by the scale factor", async () => { + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { + width: 1920, + height: 1080, + }, + scaleFactor: 1.5, + }); + + expect(resolutionService.getCurrentResolution()).to.deepEqual({ + width: 2880, + height: 1620, + }); + }); + }); + }); + + describe("getResolutionPreference", () => { + it("should return the resolution preference", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.RESOLUTION) + .returns({ + width: 1920, + height: 1080, + }); + + expect(resolutionService.getResolutionPreference()).to.deepEqual({ + width: 1920, + height: 1080, + }); + }); + }); + + describe("setResolution", () => { + beforeEach(() => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + + mockFs({ + [`${modDirectory}/mods/Wildlander/SKSE/Plugins`]: { + "SSEDisplayTweaks.ini": stringify({ + Render: { + Fullscreen: false, + Borderless: true, + BorderlessUpscale: true, + Resolution: "3840x2160", + }, + }), + }, + }); + + mockInstructionService.stubs.getInstructions.returns([]); + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.RESOLUTION) + .returns({ + width: 1920, + height: 1080, + }); + }); + + it("should set the resolution preference", async () => { + await resolutionService.setResolution({ + width: 1920, + height: 1080, + }); + + sinon.assert.calledWith( + mockConfigService.stubs.setPreference, + USER_PREFERENCE_KEYS.RESOLUTION, + { + width: 1920, + height: 1080, + } + ); + }); + + it("should set the graphics in graphics settings file", async () => { + await resolutionService.setResolution({ + width: 1920, + height: 1080, + }); + + expect( + await fs.readFile( + "mod/directory/mods/Wildlander/SKSE/Plugins/SSEDisplayTweaks.ini", + "utf8" + ) + ).to.equal( + stringify({ + Render: { + Fullscreen: false, + Borderless: true, + BorderlessUpscale: true, + Resolution: "1920x1080", + }, + }).trim() + ); + }); + + it("should run the instruction service with the instructions and closest ratio", async () => { + mockInstructionService.stubs.getInstructions.returns([ + { + action: InstructionAction.DISABLE_MOD, + version: "1.0.0", + target: "test-mod", + mod: "test-mod", + type: InstructionType.RESOLUTION_RATIO, + }, + ]); + + await resolutionService.setResolution({ + width: 1920, + height: 1080, + }); + + sinon.assert.calledWith( + mockInstructionService.stubs.execute, + [ + { + action: InstructionAction.DISABLE_MOD, + version: "1.0.0", + target: "test-mod", + mod: "test-mod", + type: InstructionType.RESOLUTION_RATIO, + }, + ], + "16:9" + ); + }); + }); + + describe("getSupportedResolutions", () => { + let platformStub: sinon.SinonStub; + beforeEach(() => { + platformStub = sinon.stub(os, "platform").returns("win32"); + }); + + it("should return the supported resolutions and remove duplicates", async () => { + mockChildProcess.stubs.exec.resolves({ + stdout: [ + "copyright info", + "version info", + "1920x1080, 32 bits @ 60 Hz", + "2560x1440, 32 bits @ 60 Hz", + "2560x1440, 32 bits @ 120 Hz", + "", + "3840x2160, 32 bits @ 60 Hz", + ].join(os.EOL), + }); + + expect(await resolutionService.getSupportedResolutions()).to.deepEqual([ + { width: 1920, height: 1080 }, + { width: 2560, height: 1440 }, + { width: 3840, height: 2160 }, + ]); + }); + + it("should throw an error if exec throws an error", async () => { + mockChildProcess.stubs.exec.rejects(new Error("test reject error")); + + await expect(resolutionService.getSupportedResolutions()).to.rejectedWith( + "test reject error" + ); + }); + + it("should just return a hardcoded set of resolutions with the current resolution at the top on non-windows OSs", async () => { + platformStub.returns("linux"); + + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { + width: 1920, + height: 1080, + }, + }); + + expect(await resolutionService.getSupportedResolutions()).to.deepEqual([ + { width: 1920, height: 1080 }, + { width: 7680, height: 4320 }, + { width: 3840, height: 1080 }, + { width: 3440, height: 1440 }, + { width: 1280, height: 800 }, + ]); + }); + + it("should throw an error if there is any stderr", async () => { + mockChildProcess.stubs.exec.resolves({ + stderr: "test stderr", + }); + + await expect(resolutionService.getSupportedResolutions()).to.rejectedWith( + "test stderr" + ); + }); + }); + + describe("sortResolutions", () => { + it("should be a positive number if the second resolution is greater", async () => { + expect( + resolutionService.sortResolutions( + { width: 1920, height: 1080 }, + { width: 3840, height: 2160 } + ) + ).to.be.greaterThan(0); + }); + + it("should return a negative number if the second resolution is smaller", async () => { + expect( + resolutionService.sortResolutions( + { width: 3840, height: 2160 }, + { width: 1920, height: 1080 } + ) + ).to.be.lessThan(0); + }); + + it("should return a positive number if the widths are the same but second height is greater", async () => { + expect( + resolutionService.sortResolutions( + { width: 1920, height: 1080 }, + { width: 1920, height: 2160 } + ) + ).to.be.greaterThan(0); + }); + + it("should return a negative number if the widths are the same but second height is smaller", async () => { + expect( + resolutionService.sortResolutions( + { width: 1920, height: 2160 }, + { width: 1920, height: 1080 } + ) + ).to.be.lessThan(0); + }); + }); + + describe("resolutionsContain", () => { + it("should return true if the resolutions contain the resolution", async () => { + expect( + resolutionService.resolutionsContain( + [ + { width: 1920, height: 1080 }, + { width: 2560, height: 1440 }, + ], + { width: 1920, height: 1080 } + ) + ).to.equal(true); + }); + + it("should return false if the resolutions do not contain the resolution", async () => { + expect( + resolutionService.resolutionsContain( + [ + { width: 1920, height: 1080 }, + { width: 2560, height: 1440 }, + ], + { width: 3840, height: 2160 } + ) + ).to.equal(false); + }); + }); + + describe("getResolutions", () => { + beforeEach(() => { + mockChildProcess.stubs.exec.resolves({ + stdout: [ + "copyright info", + "version info", + "1920x1080, 32 bits @ 60 Hz", + "2560x1440, 32 bits @ 60 Hz", + "3840x2160, 32 bits @ 60 Hz", + ].join(os.EOL), + }); + + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { + width: 1920, + height: 1080, + }, + scaleFactor: 1, + }); + + sinon.stub(os, "platform").returns("win32"); + }); + + it("should get the resolutions from the cache if it exists", async () => { + await resolutionService.getResolutions(); + + mockChildProcess.stubs.exec.resolves(""); + + expect(await resolutionService.getResolutions()).to.deepEqual([ + { width: 3840, height: 2160 }, + { width: 2560, height: 1440 }, + { width: 1920, height: 1080 }, + ]); + + sinon.assert.calledOnce(mockChildProcess.stubs.exec); + }); + + it("should return the resolutions", async () => { + expect(await resolutionService.getResolutions()).to.deepEqual([ + { width: 3840, height: 2160 }, + { width: 2560, height: 1440 }, + { width: 1920, height: 1080 }, + ]); + }); + + it("should add the current resolution if it isn't in the list", async () => { + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { + width: 1920, + height: 2160, + }, + scaleFactor: 1, + }); + + expect(await resolutionService.getResolutions()).to.deepEqual([ + { width: 3840, height: 2160 }, + { width: 2560, height: 1440 }, + { width: 1920, height: 2160 }, + { width: 1920, height: 1080 }, + ]); + }); + + it("should maintain the users manually edited resolution", async () => { + mockConfigService.stubs.hasPreference + .withArgs(USER_PREFERENCE_KEYS.RESOLUTION) + .returns(true); + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.RESOLUTION) + .returns({ + width: 1111, + height: 2222, + }); + + expect(await resolutionService.getResolutions()).to.deepEqual([ + { width: 3840, height: 2160 }, + { width: 2560, height: 1440 }, + { width: 1920, height: 1080 }, + { width: 1111, height: 2222 }, + ]); + }); + }); + + describe("shouldEnableBorderlessUpscale", () => { + it("should enable borderless upscale if the monitor is not ultra-widescreen and non-ultra-widescreen is selected", async () => { + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { width: 1920, height: 1080 }, + }); + + expect( + resolutionService.shouldEnableBorderlessUpscale({ + width: 7680, + height: 4320, + }) + ).to.equal(true); + }); + + it("should disable borderless upscale if the monitor is not ultra-widescreen and ultra-widescreen is selected", async () => { + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { width: 1920, height: 1080 }, + }); + + expect( + resolutionService.shouldEnableBorderlessUpscale({ + width: 3440, + height: 1440, + }) + ).to.equal(false); + }); + + it("should disable borderless upscale if the monitor is ultra-widescreen and non-ultra-widescreen is selected", async () => { + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { width: 3440, height: 1440 }, + }); + + expect( + resolutionService.shouldEnableBorderlessUpscale({ + width: 7680, + height: 4320, + }) + ).to.equal(false); + }); + + it("should enable borderless upscale if the monitor is ultra-widescreen and ultra-widescreen is selected", async () => { + getPrimaryDisplayStub.returns({ + ...primaryDisplayMockReturn, + size: { width: 3440, height: 1440 }, + }); + + expect( + resolutionService.shouldEnableBorderlessUpscale({ + width: 3440, + height: 1440, + }) + ).to.equal(true); + }); + }); + + describe("setResolutionInGraphicsSettings", () => { + let graphicsPath: string; + + beforeEach(() => { + const modDirectory = "mod/directory"; + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.MOD_DIRECTORY) + .returns(modDirectory); + + graphicsPath = `${modDirectory}/mods/Wildlander/SKSE/Plugins/SSEDisplayTweaks.ini`; + + mockFs({ + [graphicsPath]: stringify({ + Render: { + Fullscreen: false, + Borderless: true, + BorderlessUpscale: true, + Resolution: "3840x2160", + }, + }), + }); + + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.RESOLUTION) + .returns({ + width: 1920, + height: 1080, + }); + }); + + it("should set the graphics settings in the graphics file", async () => { + await resolutionService.setResolutionInGraphicsSettings(); + + expect(parse(await fs.readFile(graphicsPath, "utf-8"))).to.containDeep({ + Render: { + Fullscreen: false, + Borderless: true, + BorderlessUpscale: true, + Resolution: "1920x1080", + }, + }); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/startup.service.test.ts b/src/__tests__/unit/main/services/startup.service.test.ts new file mode 100644 index 00000000..6dbe2613 --- /dev/null +++ b/src/__tests__/unit/main/services/startup.service.test.ts @@ -0,0 +1,179 @@ +import { COMMAND_IDS, StartupService } from "@/main/services/startup.service"; +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { ModpackService } from "@/main/services/modpack.service"; +import { LauncherService } from "@/main/services/launcher.service"; +import { WabbajackService } from "@/main/services/wabbajack.service"; +import { ResolutionService } from "@/main/services/resolution.service"; +import { UpdateService } from "@/main/services/update.service"; +import { BlacklistService } from "@/main/services/blacklist.service"; +import { ErrorService } from "@/main/services/error.service"; +import { WindowService } from "@/main/services/window.service"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import type { Logger } from "@/main/logger"; +import type electron from "electron"; +import os from "os"; + +describe("Startup service #main #service", () => { + let mockModpackService: StubbedInstanceWithSinonAccessor; + let mockLauncherService: StubbedInstanceWithSinonAccessor; + let mockWabbajackService: StubbedInstanceWithSinonAccessor; + let mockResolutionService: StubbedInstanceWithSinonAccessor; + let mockUpdateService: StubbedInstanceWithSinonAccessor; + let mockBlacklistService: StubbedInstanceWithSinonAccessor; + let mockErrorService: StubbedInstanceWithSinonAccessor; + let mockWindowService: StubbedInstanceWithSinonAccessor; + let mockLogger: sinon.SinonStubbedInstance; + + let startupService: StartupService; + + beforeEach(() => { + mockModpackService = createStubInstance(ModpackService); + mockLauncherService = createStubInstance(LauncherService); + mockWabbajackService = createStubInstance(WabbajackService); + mockResolutionService = createStubInstance(ResolutionService); + mockUpdateService = createStubInstance(UpdateService); + mockBlacklistService = createStubInstance(BlacklistService); + mockErrorService = createStubInstance(ErrorService); + mockWindowService = createStubInstance(WindowService); + mockLogger = getMockLogger(); + + startupService = new StartupService( + mockModpackService, + mockLauncherService, + mockWabbajackService, + mockResolutionService, + mockUpdateService, + mockBlacklistService, + mockErrorService, + mockWindowService, + { + app: { + getVersion: () => "mock version", + }, + } as unknown as typeof electron, + mockLogger + ); + }); + + after(() => { + sinon.restore(); + }); + + it("should run the startup logs", async () => { + sinon.stub(os, "platform").returns("linux"); + sinon.stub(os, "type").returns("mock type"); + sinon.stub(os, "version").returns("mock version"); + + mockWabbajackService.stubs.getModpackVersion.resolves("mock version"); + mockModpackService.stubs.getModpackDirectory.returns("mock path"); + mockResolutionService.stubs.getCurrentResolution.returns({ + width: 1920, + height: 1080, + }); + + startupService.registerStartupCommands(COMMAND_IDS.STARTUP_LOGS); + await startupService.runStartup(); + + sinon.assert.calledWithMatch( + mockLogger.debug, + [ + "--- Startup debug logs ---", + "OS: mock type linux mock version", + "Modpack version: mock version", + "Launcher version: mock version", + "Modpack path: mock path", + 'Current screen resolution: {"width":1920,"height":1080}', + "--- End startup debug logs ---", + ].join(os.EOL) + ); + }); + + it("should quit if a blacklisted process is running", async () => { + mockBlacklistService.stubs.blacklistedProcessesRunning.resolves([ + { name: "mock name", processName: "mockProcess.exe", running: true }, + ]); + + startupService.registerStartupCommands(COMMAND_IDS.PROCESS_BLACKLIST); + await startupService.runStartup(); + + sinon.assert.called(mockWindowService.stubs.quit); + }); + + it("should update the app", async () => { + startupService.registerStartupCommands(COMMAND_IDS.UPDATE); + await startupService.runStartup(); + + sinon.assert.called(mockUpdateService.stubs.update); + }); + + it("should not quit if there are no blacklisted processes", async () => { + startupService.registerStartupCommands(COMMAND_IDS.PROCESS_BLACKLIST); + mockBlacklistService.stubs.blacklistedProcessesRunning.resolves([]); + + await startupService.runStartup(); + + sinon.assert.notCalled(mockWindowService.stubs.quit); + }); + + it("should delete the modpack preference if it is invalid", async () => { + mockModpackService.stubs.checkCurrentModpackPathIsValid.returns(false); + mockModpackService.stubs.isModpackSet.returns(true); + startupService.registerStartupCommands(COMMAND_IDS.CHECK_MODPACK_PATH); + + await startupService.runStartup(); + + sinon.assert.called(mockModpackService.stubs.deleteModpackDirectory); + }); + + it("should not delete the modpack preference if it is valid", async () => { + mockModpackService.stubs.checkCurrentModpackPathIsValid.returns(true); + mockModpackService.stubs.isModpackSet.returns(true); + startupService.registerStartupCommands(COMMAND_IDS.CHECK_MODPACK_PATH); + + await startupService.runStartup(); + + sinon.assert.notCalled(mockModpackService.stubs.deleteModpackDirectory); + }); + + it("should refresh the modpack", async () => { + mockModpackService.stubs.isModpackSet.returns(true); + startupService.registerStartupCommands(COMMAND_IDS.REFRESH_MODPACK); + + await startupService.runStartup(); + + sinon.assert.called(mockLauncherService.stubs.refreshModpack); + }); + + it("should run all startup commands if there is no filter", async () => { + startupService.registerStartupCommands(); + + expect( + startupService + .getStartupCommands() + .map((command) => command.id) + .sort() + ).to.deepEqual( + [ + COMMAND_IDS.CHECK_MODPACK_PATH, + COMMAND_IDS.PROCESS_BLACKLIST, + COMMAND_IDS.REFRESH_MODPACK, + COMMAND_IDS.STARTUP_LOGS, + COMMAND_IDS.UPDATE, + ].sort() + ); + }); + + it("should not execute anything if the command requires a modpack but it isn't set", async () => { + mockModpackService.stubs.isModpackSet.returns(false); + startupService.registerStartupCommands(COMMAND_IDS.REFRESH_MODPACK); + + await startupService.runStartup(); + + sinon.assert.notCalled(mockLauncherService.stubs.refreshModpack); + }); +}); diff --git a/src/__tests__/unit/main/services/system.service.test.ts b/src/__tests__/unit/main/services/system.service.test.ts new file mode 100644 index 00000000..8d65be1e --- /dev/null +++ b/src/__tests__/unit/main/services/system.service.test.ts @@ -0,0 +1,404 @@ +import { SystemService } from "@/main/services/system.service"; +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { ConfigService } from "@/main/services/config.service"; +import { ErrorService } from "@/main/services/error.service"; +import type psList from "ps-list"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import * as shutDownCommands from "electron-shutdown-command"; +import type { Logger } from "@/main/logger"; +import type { LogFile } from "electron-log"; +import fs, { promises as fsPromises } from "fs"; +import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import fetchInstalledSoftware from "fetch-installed-software"; +import stream from "stream/promises"; +import nock from "nock"; +import type child_process from "child_process"; +import { getChildProcessMock } from "@/__tests__/unit/helpers/mocks/child-process.mock"; +import { afterEach } from "mocha"; +import os from "os"; +import { Context } from "@loopback/core"; +import { ChildProcessBinding } from "@/main/bindings/child-process.binding"; +import { PsListBinding } from "@/main/bindings/psList.binding"; +import { + ProcessKill, + ProcessKillBinding, +} from "@/main/bindings/process-kill.binding"; + +describe("System service #main #service", () => { + let mockConfigService: StubbedInstanceWithSinonAccessor; + let mockErrorService: StubbedInstanceWithSinonAccessor; + let mockLogger: sinon.SinonStubbedInstance; + + let shellStub: sinon.SinonStub; + let systemService: SystemService; + let mockChildProcess: StubbedInstanceWithSinonAccessor; + let mockContext: sinon.SinonStubbedInstance; + + beforeEach(() => { + mockConfigService = createStubInstance(ConfigService); + mockErrorService = createStubInstance(ErrorService); + + shellStub = sinon.stub(); + mockLogger = getMockLogger(); + + const mockListProcess = () => + new Promise((resolve) => + resolve([{ name: "mockname.exe", pid: 1234, ppid: 1234 }]) + ); + + mockChildProcess = getChildProcessMock(); + + mockContext = sinon.createStubInstance(Context); + mockContext.getSync.withArgs(ChildProcessBinding).returns(mockChildProcess); + mockContext.getSync.withArgs(PsListBinding).returns(mockListProcess); + + const mockProcessKill: ProcessKill = sinon.stub().returns(true); + mockContext.getSync.withArgs(ProcessKillBinding).returns(mockProcessKill); + + systemService = new SystemService( + mockConfigService, + mockErrorService, + mockLogger, + { + app: { getPath: () => "/mock/path" }, + shell: { openPath: shellStub }, + } as unknown as typeof Electron, + mockContext + ); + }); + + afterEach(() => { + sinon.restore(); + }); + + describe("getLocalAppData", () => { + it("should return the path to the local app data", async () => { + process.env["APPDATA"] = "/mockappdata/test"; + expect(SystemService.getLocalAppData()).to.equal("/mockappdata/local"); + }); + }); + + describe("getCPlusPlusInstallerFile", () => { + it("should get the path to the file", async () => { + expect(systemService.getCPlusPlusInstallerFile()).to.equal( + "/mock/path/vc_redist.x64.exe" + ); + }); + }); + + describe("reboot", () => { + it("should reboot the system", async () => { + const rebootStub = sinon.stub(shutDownCommands, "reboot"); + + systemService.reboot(); + + sinon.assert.calledOnce(rebootStub); + }); + }); + + describe("openApplicationLogs", () => { + it("should open the application logs", async () => { + sinon.stub(mockLogger.transports.file, "getFile").returns({ + path: "/mock/path/to/logfile.txt", + } as unknown as LogFile); + + await systemService.openApplicationLogsPath(); + + sinon.assert.calledWith(shellStub, "/mock/path/to"); + }); + it("should log an error if the path cannot be opened", async () => { + sinon.stub(mockLogger.transports.file, "getFile").returns({ + path: "/mock/path/to/logfile.txt", + } as unknown as LogFile); + + shellStub.returns("mock error"); + + await systemService.openApplicationLogsPath(); + + sinon.assert.calledWith(mockLogger.error, "mock error"); + }); + }); + + describe("openCrashLogs", () => { + it("should open the log if it exists", async () => { + mockConfigService.stubs.modDirectory.returns("/mock/path/to/mods"); + sinon.stub(fs, "existsSync").returns(true); + + await systemService.openCrashLogs(); + + sinon.assert.calledWith( + shellStub, + "/mock/path/to/mods/overwrite/NetScriptFramework/Crash" + ); + }); + + it("should log an error if the path cannot be opened", async () => { + mockConfigService.stubs.modDirectory.returns("/mock/path/to/mods"); + sinon.stub(fs, "existsSync").returns(true); + shellStub.returns("mock error"); + + await systemService.openCrashLogs(); + + sinon.assert.calledWith(mockLogger.error, "mock error"); + }); + + it("should throw an error if the log doesn't exist", async () => { + mockConfigService.stubs.modDirectory.returns("/mock/path/to/mods"); + sinon.stub(fs, "existsSync").returns(false); + + await systemService.openCrashLogs(); + + sinon.assert.calledWith( + mockErrorService.stubs.handleError, + "Error while opening crash logs folder" + ); + }); + }); + + describe("listProcesses", () => { + it("should dynamically get psList from context and return process list", async () => { + const processes = await systemService.listProcesses(); + + sinon.assert.calledOnce(mockContext.getSync); + sinon.assert.calledWith(mockContext.getSync, PsListBinding); + expect(processes).to.eql([ + { name: "mockname.exe", pid: 1234, ppid: 1234 }, + ]); + }); + }); + + describe("isProcessRunning", () => { + it("should return true if a process is running", async () => { + expect(await systemService.isProcessRunning("mockname.exe")).to.eql(true); + }); + + it("should return false if a process is not running", async () => { + expect(await systemService.isProcessRunning("notrunning.exe")).to.eql( + false + ); + }); + }); + + describe("clearApplicationLogs", () => { + let writeStub: sinon.SinonStub; + + beforeEach(() => { + writeStub = sinon.stub(fsPromises, "writeFile"); + }); + + it("should clear the application logs", async () => { + sinon.stub(mockLogger.transports.file, "getFile").returns({ + clear: sinon.stub(), + path: "\\mock\\path\\to\\logfile.txt", + } as unknown as LogFile); + }); + + it("should clear the renderer logs if they exist", async () => { + const clearStub = sinon.stub(); + sinon.stub(mockLogger.transports.file, "getFile").returns({ + clear: clearStub, + path: "/mock/path/to/logfile.txt", + } as unknown as LogFile); + + sinon.stub(fs, "existsSync").returns(true); + + await systemService.clearApplicationLogs(); + + sinon.assert.calledWith(writeStub, "/mock/path/to/renderer.log", "", { + flag: "w", + }); + }); + + it("should not clear the renderer logs if they do not exist", async () => { + const clearStub = sinon.stub(); + sinon.stub(mockLogger.transports.file, "getFile").returns({ + clear: clearStub, + path: "/mock/path/to/main.log", + } as unknown as LogFile); + + sinon.stub(fs, "existsSync").returns(false); + + await systemService.clearApplicationLogs(); + + sinon.assert.notCalled(writeStub); + }); + }); + + describe("checkPrerequisitesInstalled", () => { + beforeEach(() => { + sinon.stub(os, "platform").returns("win32"); + }); + + it("should resolve with true when platform is not win32", async () => { + // Override the platform stub to return a non-Windows value + sinon.restore(); // Remove the previous stub + sinon.stub(os, "platform").returns("darwin"); + + expect(await systemService.checkPrerequisitesInstalled()).to.eql(true); + }); + + it("should return true if the user has disabled the check", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.CHECK_PREREQUISITES) + .returns(false); + + expect(await systemService.checkPrerequisitesInstalled()).to.eql(true); + }); + + it("should return false if C++ is not detected", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.CHECK_PREREQUISITES) + .returns(true); + + sinon + .stub(fetchInstalledSoftware, "getAllInstalledSoftware") + .resolves([ + { DisplayName: "Mock software", RegistryDirName: "Mock software" }, + ]); + + expect(await systemService.checkPrerequisitesInstalled()).to.eql(false); + }); + + it("should throw an error if the installed version is not 2019", async () => { + mockConfigService.stubs.getPreference + .withArgs(USER_PREFERENCE_KEYS.CHECK_PREREQUISITES) + .returns(true); + + sinon.stub(fetchInstalledSoftware, "getAllInstalledSoftware").resolves([ + { + DisplayName: "Microsoft Visual C++ 2017 Redistributable (x64)", + RegistryDirName: "Mock software", + }, + ]); + + expect(await systemService.checkPrerequisitesInstalled()).to.eql(false); + }); + }); + + describe("installPrerequisites", () => { + it("should download and install the prerequisites", async () => { + const downloadStub = sinon.stub(systemService, "downloadPrerequisites"); + sinon + .stub(systemService, "getCPlusPlusInstallerFile") + .returns("/mock/path/test.exe"); + + await systemService.installPrerequisites(); + + sinon.assert.calledOnce(downloadStub); + sinon.assert.calledWith( + mockChildProcess.stubs.exec, + `"/mock/path/test.exe"` + ); + }); + }); + + describe("exec", () => { + it("should dynamically get childProcess from context and call exec with the command", async () => { + const command = "test command"; + await systemService.exec(command); + + sinon.assert.calledOnce(mockContext.getSync); + sinon.assert.calledWith(mockContext.getSync, ChildProcessBinding); + sinon.assert.calledWith(mockChildProcess.stubs.exec, command); + }); + }); + + describe("kill", () => { + it("should dynamically get process.kill from context and call it with the pid and signal", () => { + const pid = 12345; + const signal = "SIGTERM"; + + systemService.kill(pid, signal); + + sinon.assert.calledOnce(mockContext.getSync); + sinon.assert.calledWith(mockContext.getSync, ProcessKillBinding); + + // Get the mock process.kill function + const mockProcessKill = mockContext.getSync.withArgs(ProcessKillBinding) + .returnValues[0] as sinon.SinonStub; + sinon.assert.calledWith(mockProcessKill, pid, signal); + }); + }); + + describe("downloadPrerequisites", () => { + it("should download the prerequisites", async () => { + const downloadStub = sinon.stub(systemService, "downloadFile"); + await systemService.downloadPrerequisites(); + + sinon.assert.calledWith( + downloadStub, + "https://aka.ms/vs/17/release/vc_redist.x64.exe", + "/mock/path/vc_redist.x64.exe" + ); + }); + }); + + describe("downloadFile", () => { + let mockFetch: nock.Scope; + + const resetNock = () => { + nock.cleanAll(); + nock.restore(); + }; + + beforeEach(() => { + if (!nock.isActive()) { + nock.activate(); + } + + nock.disableNetConnect(); + mockFetch = nock("https://mock.com") + .get("/") + .reply(200, "Mock content") + .persist(); + }); + + afterEach(() => { + resetNock(); + }); + + it("should download the file if it does not exist", async () => { + sinon.stub(fs, "existsSync").returns(false); + sinon.stub(fs, "createWriteStream"); + sinon.stub(stream, "pipeline").resolves(); + + await systemService.downloadFile( + "https://mock.com/", + "/mock/path/to/file" + ); + + expect(mockFetch.isDone()).to.eql(true); + }); + + it("should not download the file if it exists", async () => { + sinon.stub(fs, "existsSync").returns(true); + + await systemService.downloadFile( + "https://mock.com", + "/mock/path/to/file" + ); + + expect(mockFetch.isDone()).to.eql(false); + }); + + it("should log an error if there is no body in the download", async () => { + sinon.stub(fs, "existsSync").returns(false); + sinon.stub(fs, "createWriteStream"); + sinon.stub(stream, "pipeline").resolves(); + resetNock(); + nock.activate(); + nock("https://mock.com").get("/").reply(500, "Mock error"); + + await expect( + systemService.downloadFile("https://mock.com", "/mock/path/to/file") + ).to.be.rejectedWith( + "Failed to download file from https://mock.com with response status 500" + ); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/update.service.test.ts b/src/__tests__/unit/main/services/update.service.test.ts new file mode 100644 index 00000000..ab1a3319 --- /dev/null +++ b/src/__tests__/unit/main/services/update.service.test.ts @@ -0,0 +1,260 @@ +import { UpdateService } from "@/main/services/update.service"; +import { WindowService } from "@/main/services/window.service"; +import { + createStubInstance, + expect, + sinon, + type StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { ErrorService } from "@/main/services/error.service"; +import type { Logger } from "@/main/logger"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import { getAutoUpdaterMock } from "@/__tests__/unit/helpers/mocks/autoUpdater.mock"; +import { UPDATE_EVENTS } from "@/main/controllers/update/update.events"; +import type { AppUpdater } from "electron-updater"; +import type Electron from "electron"; +import mockFs from "mock-fs"; +import path from "path"; + +describe("Updateservice #main #service", () => { + let updateService: UpdateService; + let mockErrorService: StubbedInstanceWithSinonAccessor; + let mockWindowService: StubbedInstanceWithSinonAccessor; + let mockLogger: sinon.SinonStubbedInstance; + let autoUpdaterStub: StubbedInstanceWithSinonAccessor; + let mockElectron: typeof Electron; + let versionStub: sinon.SinonStub; + + beforeEach(() => { + mockWindowService = createStubInstance(WindowService); + mockErrorService = createStubInstance(ErrorService); + mockLogger = getMockLogger(); + autoUpdaterStub = getAutoUpdaterMock(); + versionStub = sinon.stub(); + mockElectron = { + app: { + getVersion: versionStub, + }, + } as unknown as typeof Electron; + + updateService = new UpdateService( + mockErrorService, + mockWindowService, + mockLogger, + true, + autoUpdaterStub, + mockElectron + ); + }); + + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); + + describe("update", () => { + it("should load a new browser window for updating", async () => { + sinon.stub(updateService, "shouldUpdate").returns(false); + + await updateService.update(); + + sinon.assert.calledWith(mockWindowService.stubs.load, "/auto-update"); + }); + + it("should resolve if there is no update available", async () => { + autoUpdaterStub.stubs.on + .withArgs(UPDATE_EVENTS.UPDATE_NOT_AVAILABLE, sinon.match.any) + .callsFake((_, callback) => { + callback(); + return autoUpdaterStub; + }); + + await updateService.update(); + + sinon.assert.calledWith(mockLogger.debug, "No update available"); + }); + + it("should resolve if it should not update", async () => { + sinon.stub(updateService, "shouldUpdate").returns(false); + + await updateService.update(); + }); + + it("should resolve if it should update and there is an error checking", async () => { + sinon.stub(updateService, "shouldUpdate").returns(true); + sinon + .stub(updateService, "checkForUpdate") + .rejects(new Error("mock error")); + + await updateService.update(); + + sinon.assert.calledWith( + mockLogger.debug, + "Update failed with error Error: mock error. Continuing anyway." + ); + }); + }); + + describe("shouldUpdate", () => { + it("should update if in development and devAppUpdatePath exists", () => { + mockFs({ + [path.join(`${__dirname}/../../../../../dev-app-update.yml`)]: + "autoUpdater", + }); + + updateService = new UpdateService( + mockErrorService, + mockWindowService, + mockLogger, + true, + autoUpdaterStub, + mockElectron + ); + + expect(updateService.shouldUpdate()).to.be.true(); + }); + }); + + it("should not update if in development and devAppUpdatePath is not present", async () => { + updateService = new UpdateService( + mockErrorService, + mockWindowService, + mockLogger, + true, + autoUpdaterStub, + mockElectron + ); + + expect(updateService.shouldUpdate()).to.be.false(); + }); + + it("should not update if the version number includes a dash", async () => { + updateService = new UpdateService( + mockErrorService, + mockWindowService, + mockLogger, + false, + autoUpdaterStub, + mockElectron + ); + + versionStub.returns("1.0.0-beta"); + + expect(updateService.shouldUpdate()).to.be.false(); + }); + + it("should update if nothing is disabling the update", async () => { + updateService = new UpdateService( + mockErrorService, + mockWindowService, + mockLogger, + false, + autoUpdaterStub, + mockElectron + ); + + versionStub.returns("1.0.0"); + + expect(updateService.shouldUpdate()).to.be.true(); + }); + + describe("register events", () => { + it("should register events for update available that sends an event to the renderer", () => { + updateService.registerEvents(); + + autoUpdaterStub.stubs.on + .withArgs(UPDATE_EVENTS.UPDATE_AVAILABLE, sinon.match.any) + .callsFake((_, callback) => { + callback(); + return autoUpdaterStub; + }); + + const sendStub = sinon.stub(); + mockWindowService.stubs.getWebContents.returns({ + send: sendStub, + } as unknown as Electron.WebContents); + + updateService.registerEvents(); + + sinon.assert.calledWith(sendStub, UPDATE_EVENTS.UPDATE_AVAILABLE); + }); + + it("should register events for download progress and send an event to the renderer with rounded progress", () => { + updateService.registerEvents(); + + autoUpdaterStub.stubs.on + .withArgs(UPDATE_EVENTS.DOWNLOAD_PROGRESS, sinon.match.any) + .callsFake((_, callback) => { + callback({ percent: 17.76 }); + return autoUpdaterStub; + }); + + const sendStub = sinon.stub(); + mockWindowService.stubs.getWebContents.returns({ + send: sendStub, + } as unknown as Electron.WebContents); + + updateService.registerEvents(); + + sinon.assert.calledWith(sendStub, UPDATE_EVENTS.DOWNLOAD_PROGRESS, 17); + }); + + it("should send an event when the update has downloaded that quits and installs", async () => { + autoUpdaterStub.stubs.on + .withArgs(UPDATE_EVENTS.UPDATE_DOWNLOADED, sinon.match.any) + .callsFake((_, callback) => { + callback(); + return autoUpdaterStub; + }); + + updateService.registerEvents(); + + sinon.assert.called(autoUpdaterStub.stubs.quitAndInstall); + }); + + it("should log an error if the autoupdater has an error", async () => { + autoUpdaterStub.stubs.on + .withArgs(UPDATE_EVENTS.ERROR, sinon.match.any) + .callsFake((_, callback) => { + callback(new Error("mock error")); + return autoUpdaterStub; + }); + + updateService.registerEvents(); + + sinon.assert.calledWith( + mockErrorService.stubs.handleError, + "Error checking for update", + "Cannot check for update. An unknown error has occurred. Please try relaunching the launcher." + ); + }); + + it("should throw an err if the message contains net::ERR_NAME_NOT_RESOLVED", async () => { + autoUpdaterStub.stubs.on + .withArgs(UPDATE_EVENTS.ERROR, sinon.match.any) + .callsFake((_, callback) => { + callback(new Error("net::ERR_NAME_NOT_RESOLVED")); + return autoUpdaterStub; + }); + + updateService.registerEvents(); + + sinon.assert.calledWith( + mockErrorService.stubs.handleError, + "Error checking for update", + "Cannot check for update. This likely means you are not connected to the internet. It is recommended you use the latest launcher version as it might contain bug fixes for the modpack itself." + ); + }); + }); + + describe("checkForUpdate", () => { + it("should register events and check for an update", async () => { + const registerEventsStub = sinon.stub(updateService, "registerEvents"); + + await updateService.checkForUpdate(); + + sinon.assert.called(registerEventsStub); + sinon.assert.called(autoUpdaterStub.stubs.checkForUpdates); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/wabbajack.service.test.ts b/src/__tests__/unit/main/services/wabbajack.service.test.ts new file mode 100644 index 00000000..2fe1f792 --- /dev/null +++ b/src/__tests__/unit/main/services/wabbajack.service.test.ts @@ -0,0 +1,399 @@ +import mockFs from "mock-fs"; +import { WabbajackService } from "@/main/services/wabbajack.service"; +import { SystemService } from "@/main/services/system.service"; +import { ModpackService } from "@/main/services/modpack.service"; +import { + createStubInstance, + expect, + sinon, + StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import type { Modpack } from "@/shared/types/modpack-metadata"; + +const mockLocalAppData = "mock/local/app/data"; + +const mockDate = new Date(); + +const getMockV2Wabbajack = () => { + return { + [`${mockLocalAppData}/Wabbajack/installed_modlists.json`]: JSON.stringify({ + "mock/install/location/3": { + ModList: { + Name: "Wildlander", + Version: "1.1.9", + }, + InstallationPath: "mock/install/location/3", + }, + "mock/install/location/4": { + ModList: { + Name: "Wildlander", + Version: "1.1.10", + }, + InstallationPath: "mock/install/location/4", + }, + }), + }; +}; + +const getMockV3Wabbajack = () => ({ + [`${mockLocalAppData}/Wabbajack/saved_settings`]: { + "install-settings-asdfghj.json": mockFs.file({ + content: JSON.stringify({ + InstallLocation: "mock/install/location/1", + Metadata: { + title: "Wildlander", + version: "1.1.9", + }, + }), + mtime: mockDate, + }), + "install-settings-lkjhgf.json": mockFs.file({ + content: JSON.stringify({ + InstallLocation: "mock/install/location/2", + Metadata: { + title: "Wildlander", + version: "1.1.10", + }, + }), + mtime: mockDate, + }), + "another-setting.json": JSON.stringify({ + something: "else", + }), + }, +}); + +describe("Wabbajack service #main #service", () => { + let mockModpackService: StubbedInstanceWithSinonAccessor; + let wabbajackService: WabbajackService; + + beforeEach(() => { + mockModpackService = createStubInstance(ModpackService); + + sinon.stub(SystemService, "getLocalAppData").returns(mockLocalAppData); + + wabbajackService = new WabbajackService( + mockModpackService, + getMockLogger() + ); + }); + + afterEach(() => { + mockFs.restore(); + sinon.restore(); + }); + + describe("getInstalledModpacks", () => { + it("should combine modlist info from wabbajack v2 and v3", async () => { + mockFs({ ...getMockV2Wabbajack(), ...getMockV3Wabbajack() }); + + expect(await wabbajackService.getInstalledModpacks()).to.eql({ + ["mock/install/location/1"]: { + title: "Wildlander", + installPath: "mock/install/location/1", + version: "1.1.9", + lastUpdated: mockDate, + }, + ["mock/install/location/2"]: { + title: "Wildlander", + installPath: "mock/install/location/2", + version: "1.1.10", + lastUpdated: mockDate, + }, + ["mock/install/location/3"]: { + title: "Wildlander", + installPath: "mock/install/location/3", + version: "1.1.9", + }, + ["mock/install/location/4"]: { + title: "Wildlander", + installPath: "mock/install/location/4", + version: "1.1.10", + }, + }); + }); + + it("should should return v2 modlists if only they are available", async () => { + mockFs({ ...getMockV2Wabbajack() }); + + expect(await wabbajackService.getInstalledModpacks()).to.eql({ + ["mock/install/location/3"]: { + title: "Wildlander", + installPath: "mock/install/location/3", + version: "1.1.9", + }, + ["mock/install/location/4"]: { + title: "Wildlander", + installPath: "mock/install/location/4", + version: "1.1.10", + }, + }); + }); + + it("should should return v3 modlists if only they are available", async () => { + mockFs({ ...getMockV3Wabbajack() }); + + expect(await wabbajackService.getInstalledModpacks()).to.eql({ + ["mock/install/location/1"]: { + title: "Wildlander", + installPath: "mock/install/location/1", + version: "1.1.9", + lastUpdated: mockDate, + }, + ["mock/install/location/2"]: { + title: "Wildlander", + installPath: "mock/install/location/2", + version: "1.1.10", + lastUpdated: mockDate, + }, + }); + }); + + it("should return only the latest v3 modpack for an install directory", async () => { + const laterDate = new Date(); + const olderDate = new Date(new Date().setDate(-1)); + + mockFs({ + [`${mockLocalAppData}/Wabbajack/saved_settings`]: { + "install-settings-asdfghj.json": mockFs.file({ + content: JSON.stringify({ + InstallLocation: "mock/install/location/1", + Metadata: { + title: "Wildlander", + version: "1.1.11", + }, + }), + mtime: laterDate, + }), + "install-settings-lksadfh.json": mockFs.file({ + content: JSON.stringify({ + InstallLocation: "mock/install/location/1", + Metadata: { + title: "Wildlander", + version: "1.1.9", + }, + }), + mtime: olderDate, + }), + "another-setting.json": JSON.stringify({ + something: "else", + }), + }, + }); + + expect(await wabbajackService.getInstalledModpacks()).to.eql({ + ["mock/install/location/1"]: { + title: "Wildlander", + installPath: "mock/install/location/1", + version: "1.1.11", + lastUpdated: laterDate, + }, + }); + }); + + it("should return null if there is no modlists available", async () => { + mockFs({ [mockLocalAppData]: {} }); + expect(await wabbajackService.getInstalledModpacks()).to.eql(null); + }); + }); + + describe("getInstalledModpacksFromWabbajackV2", () => { + it("should get all installed modpacks from wabbajack v2", async () => { + mockFs(getMockV2Wabbajack()); + + expect( + await wabbajackService.getInstalledModpacksFromWabbajackV2() + ).to.eql({ + ["mock/install/location/3"]: { + title: "Wildlander", + installPath: "mock/install/location/3", + version: "1.1.9", + }, + ["mock/install/location/4"]: { + title: "Wildlander", + installPath: "mock/install/location/4", + version: "1.1.10", + }, + }); + }); + }); + + describe("getInstalledModpacksFromWabbajackV3", () => { + it("should get installed modpacks from wabbajack v3", async () => { + mockFs(getMockV3Wabbajack()); + + expect( + await wabbajackService.getInstalledModpacksFromWabbajackV3() + ).to.eql({ + ["mock/install/location/1"]: { + title: "Wildlander", + installPath: "mock/install/location/1", + version: "1.1.9", + lastUpdated: mockDate, + }, + ["mock/install/location/2"]: { + title: "Wildlander", + installPath: "mock/install/location/2", + version: "1.1.10", + lastUpdated: mockDate, + }, + }); + }); + + it("should return null for the title and version if they are unknown", async () => { + mockFs({ + [`${mockLocalAppData}/Wabbajack/saved_settings`]: { + "install-settings-asdfghj.json": mockFs.file({ + content: JSON.stringify({ + InstallLocation: "mock/install/location/1", + Metadata: {}, + }), + mtime: mockDate, + }), + }, + }); + + expect( + await wabbajackService.getInstalledModpacksFromWabbajackV3() + ).to.eql({ + ["mock/install/location/1"]: { + title: null, + installPath: "mock/install/location/1", + version: null, + lastUpdated: mockDate, + }, + }); + }); + }); + + describe("getInstalledCurrentModpackPaths", () => { + it("should get the installed current modpack paths", async () => { + mockModpackService.stubs.getModpackMetadata.returns({ + name: "Wildlander", + } as unknown as Modpack); + + sinon.stub(wabbajackService, "getInstalledModpacks").resolves({ + "mock/install/location/1": { + title: "Wildlander", + installPath: "mock/install/location/1", + version: "1.1.9", + }, + "mock/install/location/2": { + title: "Wildlander", + installPath: "mock/install/location/2", + version: "1.1.10", + }, + "mock/install/location/3": { + title: "Another modpack", + installPath: "mock/install/location/3", + version: "1.1.9", + }, + }); + + expect(await wabbajackService.getInstalledCurrentModpackPaths()).to.eql([ + "mock/install/location/1", + "mock/install/location/2", + ]); + }); + + it("should return an empty array if there are no modpacks", async () => { + mockModpackService.stubs.getModpackMetadata.returns({ + name: "Wildlander", + } as unknown as Modpack); + + sinon.stub(wabbajackService, "getInstalledModpacks").resolves(null); + + expect(await wabbajackService.getInstalledCurrentModpackPaths()).to.eql( + [] + ); + }); + }); + + describe("getModpackMetadata", () => { + it("should get the modpack metadata", async () => { + sinon.stub(wabbajackService, "getInstalledModpacks").resolves({ + mockModpack: { + title: "mock", + version: "1234", + installPath: "mock", + lastUpdated: new Date("01-01-2024"), + }, + }); + + expect(await wabbajackService.getModpackMetadata("mockModpack")).to.eql({ + title: "mock", + version: "1234", + installPath: "mock", + lastUpdated: new Date("01-01-2024"), + }); + }); + + it("should return null if the modpack is not installed", async () => { + sinon.stub(wabbajackService, "getInstalledModpacks").resolves(null); + + expect(await wabbajackService.getModpackMetadata("mockModpack")).to.eql( + null + ); + }); + + it("should return null if the modpack is not found", async () => { + sinon.stub(wabbajackService, "getInstalledModpacks").resolves({ + mockModpack: { + title: "mock", + version: "1234", + installPath: "mock", + lastUpdated: new Date(), + }, + }); + + expect( + await wabbajackService.getModpackMetadata("anotherModpack") + ).to.eql(null); + }); + }); + + describe("getCurrentModpackMetadata", () => { + it("should get the current modpack metadata", async () => { + mockModpackService.stubs.getModpackDirectory.returns("mockModpack"); + + sinon.stub(wabbajackService, "getModpackMetadata").resolves({ + title: "mock", + version: "1234", + installPath: "mock", + lastUpdated: new Date("01-01-2024"), + }); + + expect(await wabbajackService.getCurrentModpackMetadata()).to.eql({ + title: "mock", + version: "1234", + installPath: "mock", + lastUpdated: new Date("01-01-2024"), + }); + }); + }); + + describe("getModpackVersion", () => { + it("should get the modpack version", async () => { + sinon.stub(wabbajackService, "getCurrentModpackMetadata").resolves({ + title: "mock", + version: "1234", + installPath: "mock", + lastUpdated: new Date(), + }); + + expect(await wabbajackService.getModpackVersion()).to.eql("1234"); + }); + + it("should return unknown if the modpack version is unknown", async () => { + sinon.stub(wabbajackService, "getCurrentModpackMetadata").resolves({ + title: "mock", + version: null, + installPath: "mock", + lastUpdated: new Date(), + }); + + expect(await wabbajackService.getModpackVersion()).to.eql("unknown"); + }); + }); +}); diff --git a/src/__tests__/unit/main/services/window.service.test.ts b/src/__tests__/unit/main/services/window.service.test.ts new file mode 100644 index 00000000..acab6718 --- /dev/null +++ b/src/__tests__/unit/main/services/window.service.test.ts @@ -0,0 +1,402 @@ +import { WindowService } from "@/main/services/window.service"; +import type { Logger } from "@/main/logger"; +import { getMockLogger } from "@/__tests__/unit/helpers/mocks/logger.mock"; +import sinon from "sinon"; +import { + expect, + type StubbedInstanceWithSinonAccessor, +} from "@loopback/testlab"; +import { getMockElectron } from "@/__tests__/unit/helpers/mocks/electron.mock"; +import type { BrowserWindow } from "electron"; +import { getMockDialog } from "@/__tests__/unit/helpers/mocks/dialog.mock"; + +describe("Window service #main #service", () => { + let windowService: WindowService; + + let mockLogger: sinon.SinonStubbedInstance; + let mockElectron: ReturnType; + let mockContextMenu: sinon.SinonStub; + let mockDialog: StubbedInstanceWithSinonAccessor; + + let originalEnv: typeof process.env; + + beforeEach(() => { + originalEnv = { ...process.env }; + + mockLogger = getMockLogger(); + mockElectron = getMockElectron(); + mockContextMenu = sinon.stub(); + mockDialog = getMockDialog(); + + windowService = new WindowService( + mockLogger, + false, + mockElectron, + mockContextMenu, + mockDialog + ); + }); + + afterEach(() => { + sinon.restore(); + process.env = { ...originalEnv }; + }); + + describe("getWindow", () => { + it("should return the window", async () => { + windowService.setWindow({ test: 1234 } as unknown as BrowserWindow); + const window = windowService.getWindow(); + expect(window).to.match({ test: 1234 }); + }); + }); + + describe("getWebContents", () => { + it("should return the web contents", async () => { + windowService.setWindow({ + webContents: { test: 1234 }, + } as unknown as BrowserWindow); + const webContents = windowService.getWebContents(); + expect(webContents).to.match({ test: 1234 }); + }); + }); + + describe("quit", () => { + it("should quit the application", async () => { + windowService.quit(); + sinon.assert.calledOnce(mockElectron.stubs.app.quit); + }); + }); + + describe("reload", () => { + it("should reload the window", async () => { + const reloadStub = sinon.stub(); + windowService.setWindow({ + reload: reloadStub, + } as unknown as BrowserWindow); + windowService.reload(); + sinon.assert.calledOnce(reloadStub); + }); + }); + + describe("minimize", () => { + it("should minimize the window", async () => { + const minimizeStub = sinon.stub(); + windowService.setWindow({ + minimize: minimizeStub, + } as unknown as BrowserWindow); + windowService.minimize(); + sinon.assert.calledOnce(minimizeStub); + }); + }); + + describe("focusWindow", () => { + it("should focus the window", async () => { + const focusStub = sinon.stub(); + const isMinimizedStub = sinon.stub().returns(false); + const restoreStub = sinon.stub(); + windowService.setWindow({ + focus: focusStub, + isMinimized: isMinimizedStub, + restore: restoreStub, + } as unknown as BrowserWindow); + windowService.focusWindow(); + sinon.assert.calledOnce(focusStub); + }); + + it("should restore the window if minimized", async () => { + const focusStub = sinon.stub(); + const isMinimizedStub = sinon.stub().returns(true); + const restoreStub = sinon.stub(); + windowService.setWindow({ + focus: focusStub, + isMinimized: isMinimizedStub, + restore: restoreStub, + } as unknown as BrowserWindow); + windowService.focusWindow(); + sinon.assert.calledOnce(restoreStub); + }); + }); + + describe("createBrowserWindow", () => { + it("should assign the browser window", async () => { + await windowService.createBrowserWindow(); + expect(windowService.getWindow()).to.match({ + getAllWindows: mockElectron.stubs.getAllWindows, + }); + }); + + it("should not create a browser window if one already exists", async () => { + windowService.setWindow({ test: 5678 } as unknown as BrowserWindow); + await windowService.createBrowserWindow(); + expect( + mockLogger.debug.calledWith("Browser window already exists") + ).to.be.true(); + }); + + it("should add a default context menu", async () => { + await windowService.createBrowserWindow(); + sinon.assert.calledWith(mockContextMenu, { + showSaveImageAs: true, + }); + }); + + it("should handle the error if creating a browser window fails", async () => { + const error = new Error("test error"); + mockElectron.stubs.BrowserWindow.throws(error); + await windowService.createBrowserWindow(); + sinon.assert.calledWith(mockDialog.stubs.showMessageBoxSync, { + type: "error", + title: "A fatal error occurred!", + message: + "\n Unable to create browser window\n Error: test error\n ", + }); + }); + + it("should handle unknown errors", async () => { + const mockNonError = { message: "test error" }; + mockElectron.stubs.BrowserWindow.throws(mockNonError); + await windowService.createBrowserWindow(); + sinon.assert.calledWith(mockDialog.stubs.showMessageBoxSync, { + type: "error", + title: "A fatal error occurred!", + message: + "\n Unable to create browser window with unknown error\n \n ", + }); + }); + }); + + describe("load", () => { + beforeEach(() => { + // TODO this is only needed while vue-cli still exists + process.env["VUECLI"] = "true"; + }); + + afterEach(() => { + process.env = { ...originalEnv }; + }); + + it("should load the local url if in development", async () => { + windowService = new WindowService( + mockLogger, + true, + mockElectron, + mockContextMenu, + mockDialog + ); + + const openDevToolsStub = sinon.stub(); + const showInactiveStub = sinon.stub(); + + windowService.setWindow({ + webContents: { + openDevTools: openDevToolsStub, + }, + showInactive: showInactiveStub, + } as unknown as BrowserWindow); + + const navigateStub = sinon.stub(windowService, "navigateInWindow"); + + await windowService.load("/test"); + + sinon.assert.calledWith(navigateStub, "http://localhost:8080/#/test"); + sinon.assert.calledOnce(openDevToolsStub); + sinon.assert.calledOnce(showInactiveStub); + }); + + it("should not open the dev tools if IS_TEST is true", async () => { + windowService = new WindowService( + mockLogger, + true, + mockElectron, + mockContextMenu, + mockDialog + ); + + process.env["IS_TEST"] = "true"; + + const openDevToolsStub = sinon.stub(); + const showInactiveStub = sinon.stub(); + + windowService.setWindow({ + webContents: { + openDevTools: openDevToolsStub, + }, + showInactive: showInactiveStub, + } as unknown as BrowserWindow); + + const navigateStub = sinon.stub(windowService, "navigateInWindow"); + + await windowService.load("/test"); + + sinon.assert.calledWith(navigateStub, "http://localhost:8080/#/test"); + sinon.assert.notCalled(openDevToolsStub); + sinon.assert.calledOnce(showInactiveStub); + }); + + it("should load the app url if not in development", async () => { + const showStub = sinon.stub(); + + windowService.setWindow({ + show: showStub, + } as unknown as BrowserWindow); + + const navigateStub = sinon.stub(windowService, "navigateInWindow"); + const createProtocolStub = sinon.stub(windowService, "createProtocol"); + + await windowService.load("/test"); + + sinon.assert.calledWith(navigateStub, "app://./index.html/#/test"); + sinon.assert.calledOnce(createProtocolStub); + sinon.assert.calledOnce(showStub); + }); + + it("should handle the error if loading the local url fails", async () => { + const error = new Error("test error"); + const createProtocolStub = sinon.stub(windowService, "createProtocol"); + createProtocolStub.throws(error); + await windowService.load("/test"); + sinon.assert.calledWith(mockDialog.stubs.showMessageBoxSync, { + type: "error", + title: "A fatal error occurred!", + message: + "\n Unable to load application page\n Error: test error\n ", + }); + }); + + it("should handle unknown errors", async () => { + const mockNonError = { message: "test error" }; + const createProtocolStub = sinon.stub(windowService, "createProtocol"); + createProtocolStub.throws(mockNonError); + await windowService.load("/test"); + sinon.assert.calledWith(mockDialog.stubs.showMessageBoxSync, { + type: "error", + title: "A fatal error occurred!", + message: + "\n Unable to load application page with unknown error\n \n ", + }); + }); + }); + + describe("navigateInWindow", () => { + it("should navigate to the url", async () => { + const loadURLStub = sinon.stub(); + windowService.setWindow({ + loadURL: loadURLStub, + isVisible: () => false, + } as unknown as BrowserWindow); + await windowService.navigateInWindow("test"); + sinon.assert.calledWith(loadURLStub, "test"); + }); + + it("should handle ERR_FAILED error with visible window by reloading", async () => { + const loadURLStub = sinon.stub(); + const reloadStub = sinon.stub(); + const isVisibleStub = sinon.stub().returns(true); + + // Create error with ERR_FAILED code + const errFailedError = new Error("Navigation failed") as Error & { + code: string; + }; + errFailedError.code = "ERR_FAILED"; + loadURLStub.rejects(errFailedError); + + windowService.setWindow({ + loadURL: loadURLStub, + isVisible: isVisibleStub, + reload: reloadStub, + } as unknown as BrowserWindow); + + // Should not throw error + await windowService.navigateInWindow("test"); + + sinon.assert.calledWith(loadURLStub, "test"); + sinon.assert.calledOnce(isVisibleStub); + sinon.assert.calledOnce(reloadStub); + sinon.assert.calledWith( + mockLogger.debug, + "Window already open. Reloading window" + ); + }); + + it("should re-throw other errors", async () => { + const loadURLStub = sinon.stub(); + const reloadStub = sinon.stub(); + const isVisibleStub = sinon.stub().returns(true); + + // Create error with different code + const otherError = new Error("Other navigation error") as Error & { + code: string; + }; + otherError.code = "OTHER_ERROR"; + loadURLStub.rejects(otherError); + + windowService.setWindow({ + loadURL: loadURLStub, + isVisible: isVisibleStub, + reload: reloadStub, + } as unknown as BrowserWindow); + + // Should throw the error + await expect(windowService.navigateInWindow("test")).to.be.rejectedWith( + otherError + ); + + sinon.assert.calledWith(loadURLStub, "test"); + sinon.assert.calledOnce(isVisibleStub); + sinon.assert.notCalled(reloadStub); + }); + + it("should re-throw ERR_FAILED error when window is not visible", async () => { + const loadURLStub = sinon.stub(); + const reloadStub = sinon.stub(); + const isVisibleStub = sinon.stub().returns(false); + + // Create error with ERR_FAILED code + const errFailedError = new Error("Navigation failed") as Error & { + code: string; + }; + errFailedError.code = "ERR_FAILED"; + loadURLStub.rejects(errFailedError); + + windowService.setWindow({ + loadURL: loadURLStub, + isVisible: isVisibleStub, + reload: reloadStub, + } as unknown as BrowserWindow); + + // Should throw the error because window is not visible + await expect(windowService.navigateInWindow("test")).to.be.rejectedWith( + errFailedError + ); + + sinon.assert.calledWith(loadURLStub, "test"); + sinon.assert.calledOnce(isVisibleStub); + sinon.assert.notCalled(reloadStub); + }); + + it("should re-throw errors without code property", async () => { + const loadURLStub = sinon.stub(); + const reloadStub = sinon.stub(); + const isVisibleStub = sinon.stub().returns(true); + + // Create error without code property + const errorWithoutCode = new Error("Error without code"); + loadURLStub.rejects(errorWithoutCode); + + windowService.setWindow({ + loadURL: loadURLStub, + isVisible: isVisibleStub, + reload: reloadStub, + } as unknown as BrowserWindow); + + // Should throw the error because it doesn't have code property + await expect(windowService.navigateInWindow("test")).to.be.rejectedWith( + errorWithoutCode + ); + + sinon.assert.calledWith(loadURLStub, "test"); + sinon.assert.calledOnce(isVisibleStub); + sinon.assert.notCalled(reloadStub); + }); + }); +}); diff --git a/src/__tests__/unit/renderer/App.vue.test.ts b/src/__tests__/unit/renderer/App.vue.test.ts new file mode 100644 index 00000000..4c157652 --- /dev/null +++ b/src/__tests__/unit/renderer/App.vue.test.ts @@ -0,0 +1,35 @@ +import { mount, VueWrapper } from "@vue/test-utils"; +import App from "@/renderer/src/App.vue"; +import TheTitleBar from "@/renderer/src/components/TheTitleBar.vue"; +import AppPage from "@/renderer/src/components/AppPage.vue"; +import { byTestId } from "./utils/test-utils"; + +describe("App.vue", () => { + let wrapper: VueWrapper; + + beforeEach(() => { + wrapper = mount(App, { shallow: true }); + }); + + it("applies background image style correctly", () => { + const appElement = wrapper.find(byTestId("app")); + + expect(appElement.exists()).toBe(true); + + expect(appElement.attributes("style")).toContain( + "background-image: url(/images/default-background.png)" + ); + }); + + it("renders TheTitleBar component", () => { + const titleBarComponent = wrapper.findComponent(TheTitleBar); + + expect(titleBarComponent.exists()).toBe(true); + }); + + it("renders AppPage component", () => { + const appPageComponent = wrapper.findComponent(AppPage); + + expect(appPageComponent.exists()).toBe(true); + }); +}); diff --git a/src/__tests__/unit/renderer/AppDropdownFileSelect.test.ts b/src/__tests__/unit/renderer/AppDropdownFileSelect.test.ts new file mode 100644 index 00000000..1968b6e7 --- /dev/null +++ b/src/__tests__/unit/renderer/AppDropdownFileSelect.test.ts @@ -0,0 +1,298 @@ +import { flushPromises, mount, VueWrapper } from "@vue/test-utils"; +import AppDropdownFileSelect from "@/renderer/src/components/AppDropdownFileSelect.vue"; +import BaseDropdown from "@/renderer/src/components/BaseDropdown.vue"; +import { DIALOG_EVENTS } from "@/main/controllers/dialog/dialog.events"; +import { injectStrict } from "@/renderer/src/services/service-container"; + +jest.mock("@/renderer/src/services/service-container", () => ({ + injectStrict: jest.fn(), + SERVICE_BINDINGS: { + IPC_SERVICE: Symbol("IPC_SERVICE"), + }, +})); + +const mockInjectStrict = injectStrict as jest.MockedFunction< + typeof injectStrict +>; + +jest.mock("@/main/controllers/dialog/dialog.events", () => ({ + DIALOG_EVENTS: { + DIRECTORY_SELECT: "DIRECTORY_SELECT", + }, +})); + +interface MockIpcService { + invoke: jest.MockedFunction<(event: string) => Promise>; +} + +// Note: We cannot import types or consts from vue components except for the component itself. +// Vue test utils cannot work with class based components. +// TODO remove this once vue3 composition api is implemented for this component. +const optionSelectedEvent = "file-selected"; + +// Note: We cannot infer the type of BaseDropdown's props, so we need to define it explicitly here. +// Vue test utils cannot work with class based components. +// TODO remove this once vue3 composition api is implemented for this component. +interface SelectOption { + text: string; + value: unknown; + disabled?: boolean; + hidden?: boolean; +} + +// Note: vue test utils cannot infer the type of BaseDropdown's props, so we need to define it explicitly here. +// Vue test utils cannot work with class based components. +// TODO remove this once vue3 composition api is implemented for this component. +interface BaseDropdownProps { + options: SelectOption[]; + currentSelection: SelectOption; + grow?: string; + small?: boolean; +} + +describe("AppDropdownFileSelect.vue", () => { + let wrapper: VueWrapper; + let mockIpcService: MockIpcService; + let defaultProps: { + options: SelectOption[]; + defaultText: string; + }; + + beforeEach(() => { + jest.clearAllMocks(); + + defaultProps = { + options: [ + { text: "Option 1", value: "/path/option1" }, + { text: "Option 2", value: "/path/option2" }, + ], + defaultText: "Mock default text", + }; + + mockIpcService = { + invoke: jest.fn(), + }; + + mockInjectStrict.mockReturnValue(mockIpcService); + }); + + afterEach(() => { + if (wrapper) { + wrapper.unmount(); + } + }); + + describe("Component Initialization", () => { + beforeEach(() => { + wrapper = mount(AppDropdownFileSelect, { + props: defaultProps, + shallow: true, + }); + }); + + it("mounts successfully with required props", () => { + expect(wrapper.exists()).toBe(true); + }); + + it("adds 'Choose another folder...' option when existing options are provided", () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + const options = props.options; + + expect(options).toHaveLength(4); // 2 options + 1 default text + 1 choose another folder option + expect(options[3]).toEqual({ + text: "Choose another folder...", + value: "SELECT_ANOTHER_FILE", + }); + }); + + it("adds 'Select folder...' option when no existing options are provided", () => { + const propsWithEmptyOptions = { + ...defaultProps, + options: [], + }; + + wrapper = mount(AppDropdownFileSelect, { + props: propsWithEmptyOptions, + shallow: true, + }); + + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + const options = props.options; + + expect(options[1]).toEqual({ + text: "Select folder...", + value: "SELECT_ANOTHER_FILE", + }); + }); + + it("adds default text option when no current selection is provided", () => { + wrapper = mount(AppDropdownFileSelect, { + props: { + ...defaultProps, + currentSelection: null, + }, + shallow: true, + }); + + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + const options = props.options; + + expect(options[0]).toEqual({ + text: "Mock default text", + value: null, + disabled: true, + hidden: true, + }); + }); + }); + + describe("Option Selection", () => { + beforeEach(() => { + wrapper = mount(AppDropdownFileSelect, { + props: defaultProps, + shallow: true, + }); + }); + + it("emits file-selected event with option value for regular options", () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const testOption: SelectOption = { + text: "Test Option", + value: "/test/path", + }; + + baseDropdown.vm.$emit("selected", testOption); + + expect(wrapper.emitted(optionSelectedEvent)).toBeTruthy(); + expect(wrapper.emitted(optionSelectedEvent)?.[0]).toEqual(["/test/path"]); + }); + + it("calls IPC service for directory selection when SELECT_ANOTHER_FILE is selected", () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const selectAnotherOption: SelectOption = { + text: "Choose another folder...", + value: "SELECT_ANOTHER_FILE", + }; + + mockIpcService.invoke.mockResolvedValue({ + canceled: false, + filePaths: ["/selected/directory"], + }); + + baseDropdown.vm.$emit("selected", selectAnotherOption); + + expect(mockIpcService.invoke).toHaveBeenCalledWith( + DIALOG_EVENTS.DIRECTORY_SELECT + ); + }); + + it("emits file-selected event with dialog result when directory is selected", async () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const selectAnotherOption: SelectOption = { + text: "Choose another folder...", + value: "SELECT_ANOTHER_FILE", + }; + + mockIpcService.invoke.mockResolvedValue({ + canceled: false, + filePaths: ["/selected/directory"], + }); + + baseDropdown.vm.$emit("selected", selectAnotherOption); + await flushPromises(); + + expect(wrapper.emitted(optionSelectedEvent)).toBeTruthy(); + expect(wrapper.emitted(optionSelectedEvent)?.[0]).toEqual([ + "/selected/directory", + ]); + }); + + it("does not emit file-selected event when dialog is canceled", async () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const selectAnotherOption: SelectOption = { + text: "Choose another folder...", + value: "SELECT_ANOTHER_FILE", + }; + + mockIpcService.invoke.mockResolvedValue({ + canceled: true, + filePaths: [], + }); + + baseDropdown.vm.$emit("selected", selectAnotherOption); + await wrapper.vm.$nextTick(); + + expect(wrapper.emitted(optionSelectedEvent)).toBeFalsy(); + }); + }); + + describe("Props Handling", () => { + beforeEach(() => { + wrapper = mount(AppDropdownFileSelect, { + props: defaultProps, + shallow: true, + }); + }); + + it("passes current selection to BaseDropdown when provided", () => { + const currentSelection: SelectOption = { + text: "Current", + value: "/current", + }; + + wrapper = mount(AppDropdownFileSelect, { + props: { + ...defaultProps, + currentSelection, + }, + shallow: true, + }); + + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + expect(props.currentSelection).toEqual(currentSelection); + }); + + it("uses first option as current selection when none provided", () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + expect(props.currentSelection).toEqual(defaultProps.options[0]); + }); + + it("passes other props to BaseDropdown correctly", () => { + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + expect(props.grow).toBe("true"); + expect(props.small).toBe(true); + }); + }); + + describe("Edge Cases", () => { + beforeEach(() => { + wrapper = mount(AppDropdownFileSelect, { + props: defaultProps, + shallow: true, + }); + }); + + it("handles empty options array correctly", () => { + wrapper = mount(AppDropdownFileSelect, { + props: { + ...defaultProps, + options: [], + }, + shallow: true, + }); + + const baseDropdown = wrapper.findComponent(BaseDropdown); + const props = baseDropdown.props() as BaseDropdownProps; + const options = props.options; + + expect(options).toHaveLength(2); // default text + select folder + expect(options[1]?.text).toBe("Select folder..."); + }); + }); +}); diff --git a/src/__tests__/unit/renderer/utils/test-utils.ts b/src/__tests__/unit/renderer/utils/test-utils.ts new file mode 100644 index 00000000..e0cd2215 --- /dev/null +++ b/src/__tests__/unit/renderer/utils/test-utils.ts @@ -0,0 +1,8 @@ +/** + * Creates a CSS selector for data-testid attribute + * @param id - The test ID string + * @returns CSS attribute selector for the test ID + */ +export const byTestId = (id: string): string => { + return `[data-testid="${id}"]`; +}; diff --git a/src/__tests__/unit/services/config.service.test.ts b/src/__tests__/unit/services/config.service.test.ts deleted file mode 100644 index d3f3b3c8..00000000 --- a/src/__tests__/unit/services/config.service.test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { ConfigService, UserPreferences } from "@/main/services/config.service"; -import { expect } from "@loopback/testlab"; -import mockFs from "mock-fs"; -import Store from "electron-store"; - -describe("Config Service", () => { - let mockStore: Store; - let mockModDirectory: string; - - beforeEach(() => { - const mockUserConfig = "/mock/config"; - const preferenceFile = "userPreferences"; - mockModDirectory = "mock/mod/directory"; - mockFs({ - [`${mockUserConfig}/${preferenceFile}.json`]: JSON.stringify({ - MOD_DIRECTORY: mockModDirectory, - }), - }); - mockStore = new Store({ - name: preferenceFile, - cwd: mockUserConfig, - }); - }); - - afterEach(() => { - mockFs.restore(); - }); - - it("should get the mod directory", () => { - const configService = new ConfigService(mockStore); - expect(configService.modDirectory()).to.eql("mock/mod/directory"); - }); - - it("should return the modlist launcher directory", () => { - const configService = new ConfigService(mockStore); - expect(configService.launcherDirectory()).to.eql( - `${mockModDirectory}/launcher` - ); - }); -}); diff --git a/src/__tests__/unit/services/modOrganizer.service.test.ts b/src/__tests__/unit/services/modOrganizer.service.test.ts deleted file mode 100644 index ed4738f7..00000000 --- a/src/__tests__/unit/services/modOrganizer.service.test.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - MO2Names, - ModOrganizerService, -} from "@/main/services/modOrganizer.service"; -import { - createStubInstance, - expect, - StubbedInstanceWithSinonAccessor, -} from "@loopback/testlab"; -import { EnbService } from "@/main/services/enb.service"; -import { ErrorService } from "@/main/services/error.service"; -import { ConfigService } from "@/main/services/config.service"; -import { ResolutionService } from "@/main/services/resolution.service"; -import { GameService } from "@/main/services/game.service"; -import { ProfileService } from "@/main/services/profile.service"; -import { SystemService } from "@/main/services/system.service"; -import { GraphicsService } from "@/main/services/graphics.service"; -import mockFs from "mock-fs"; - -describe("ModOrganizer service", () => { - let mockEnbService: StubbedInstanceWithSinonAccessor; - let mockErrorService: StubbedInstanceWithSinonAccessor; - let mockConfigService: StubbedInstanceWithSinonAccessor; - let mockResolutionService: StubbedInstanceWithSinonAccessor; - let mockGameService: StubbedInstanceWithSinonAccessor; - let mockProfileService: StubbedInstanceWithSinonAccessor; - let mockSystemService: StubbedInstanceWithSinonAccessor; - let mockGraphicsService: StubbedInstanceWithSinonAccessor; - - let modOrganizerService: ModOrganizerService; - - beforeEach(() => { - mockEnbService = createStubInstance(EnbService); - mockErrorService = createStubInstance(ErrorService); - mockConfigService = createStubInstance(ConfigService); - mockResolutionService = createStubInstance(ResolutionService); - mockGameService = createStubInstance(GameService); - mockProfileService = createStubInstance(ProfileService); - mockSystemService = createStubInstance(SystemService); - mockGraphicsService = createStubInstance(GraphicsService); - }); - - afterEach(() => { - mockFs.restore(); - }); - - it("should determine if Mod Organizer is running", async () => { - mockSystemService.stubs.isProcessRunning - .withArgs(MO2Names.MO2EXE) - .resolves(true); - - modOrganizerService = new ModOrganizerService( - mockEnbService, - mockErrorService, - mockConfigService, - mockResolutionService, - mockGameService, - mockProfileService, - mockSystemService, - mockGraphicsService - ); - - expect(await modOrganizerService.isRunning()).to.eql(true); - }); - - it("should get the first binary", async () => { - const mockModDirectory = "mock/mod/directory"; - - mockFs({ - [mockModDirectory]: { - [MO2Names.MO2Settings]: ` - [customExecutables] - size=1 - 1\\binary=mock/first/custom/executable.exe - 1\\title=SKSE - `, - }, - }); - - mockConfigService.stubs.modDirectory.returns(mockModDirectory); - - modOrganizerService = new ModOrganizerService( - mockEnbService, - mockErrorService, - mockConfigService, - mockResolutionService, - mockGameService, - mockProfileService, - mockSystemService, - mockGraphicsService - ); - - expect(await modOrganizerService.getFirstCustomExecutableTitle()).to.eql( - "SKSE" - ); - }); -}); diff --git a/src/__tests__/unit/services/profile.service.test.ts b/src/__tests__/unit/services/profile.service.test.ts deleted file mode 100644 index 344e4939..00000000 --- a/src/__tests__/unit/services/profile.service.test.ts +++ /dev/null @@ -1,120 +0,0 @@ -import mockFs from "mock-fs"; -import { FriendlyDirectoryMap } from "@/modpack-metadata"; -import { - createStubInstance, - expect, - sinon, - StubbedInstanceWithSinonAccessor, -} from "@loopback/testlab"; -import { ConfigService } from "@/main/services/config.service"; -import { ProfileService } from "@/main/services/profile.service"; -import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; - -describe("Profile service", () => { - let mockConfigService: StubbedInstanceWithSinonAccessor; - let profileService: ProfileService; - - beforeEach(() => { - mockConfigService = createStubInstance(ConfigService); - profileService = new ProfileService(mockConfigService); - }); - - afterEach(() => { - mockFs.restore(); - }); - - it("should get if the user is showing hidden profiles", () => { - mockConfigService.stubs.getPreference - .withArgs(USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE) - .returns(true); - - expect(profileService.getShowHiddenProfiles()).to.eql(true); - }); - - it("should default showing hidden profiles to false if the key doesn't exist", () => { - mockConfigService.stubs.getPreference - .withArgs(USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE) - .returns(undefined); - - expect(profileService.getShowHiddenProfiles()).to.eql(false); - }); - - it("should set if the user is showing hidden profiles", () => { - mockConfigService.stubs.getPreference - .withArgs(USER_PREFERENCE_KEYS.SHOW_HIDDEN_PROFILE) - .returns(true); - profileService.setShowHiddenProfiles(false); - - mockConfigService.stubs.setPreference.calledWith(sinon.match.string, false); - }); - - it("should get the profiles", async () => { - const modDirectory = "mod/directory"; - const launcherDirectory = `${modDirectory}/launcher`; - - mockConfigService.stubs.modDirectory.returns(modDirectory); - mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); - - mockFs({ - [`${launcherDirectory}/namesMO2.json`]: JSON.stringify([ - { - real: "mock-real-name", - friendly: "mock friendly name", - }, - ] as FriendlyDirectoryMap[]), - [`${modDirectory}/profiles/mock-real-name`]: {}, - [`${modDirectory}/profiles/unmapped`]: {}, - }); - - const profiles = await profileService.getProfiles(); - const expected: FriendlyDirectoryMap[] = [ - { - real: "mock-real-name", - friendly: "mock friendly name", - }, - { - real: "unmapped", - friendly: "unmapped", - }, - ]; - - expect(profiles).to.eql(expected); - }); - - it("should get the profile's directories", async () => { - const modDirectory = "mod/directory"; - const launcherDirectory = `${modDirectory}/launcher`; - - mockConfigService.stubs.modDirectory.returns(modDirectory); - mockConfigService.stubs.launcherDirectory.returns(launcherDirectory); - - mockFs({ - [`${launcherDirectory}/namesMO2.json`]: JSON.stringify([ - { - real: "mock-real-name", - friendly: "mock friendly name", - }, - ] as FriendlyDirectoryMap[]), - [`${modDirectory}/profiles/unmapped`]: {}, - [`${modDirectory}/profiles/mock-real-name`]: {}, - }); - - const profileDirectories = await profileService.getProfileDirectories(); - const expected = [ - `${modDirectory}/profiles/mock-real-name`, - `${modDirectory}/profiles/unmapped`, - ]; - - expect(profileDirectories).to.eql(expected); - }); - - it("should prepend the profile directory", () => { - const modDirectory = "mod/directory"; - - mockConfigService.stubs.modDirectory.returns(modDirectory); - - expect(profileService.prependProfileDirectory("mock-file.json")).to.eql( - "mod/directory/profiles/mock-file.json" - ); - }); -}); diff --git a/src/__tests__/unit/services/startup.service.test.ts b/src/__tests__/unit/services/startup.service.test.ts deleted file mode 100644 index 838f91cd..00000000 --- a/src/__tests__/unit/services/startup.service.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -import mock from "mock-require"; -// electron-is-dev throws an error if not running in electron -mock("electron-is-dev", () => { - return true; -}); - -import { StartupService } from "@/main/services/startup.service"; -import { - createStubInstance, - sinon, - StubbedInstanceWithSinonAccessor, -} from "@loopback/testlab"; -import { ModpackService } from "@/main/services/modpack.service"; -import { LauncherService } from "@/main/services/launcher.service"; -import { ConfigService } from "@/main/services/config.service"; -import { WabbajackService } from "@/main/services/wabbajack.service"; -import { ResolutionService } from "@/main/services/resolution.service"; -import { UpdateService } from "@/main/services/update.service"; -import { BlacklistService } from "@/main/services/blacklist.service"; -import { ErrorService } from "@/main/services/error.service"; -import { WindowService } from "@/main/services/window.service"; - -describe("Startup service", () => { - let mockModpackService: StubbedInstanceWithSinonAccessor; - let mockLauncherService: StubbedInstanceWithSinonAccessor; - let mockConfigService: StubbedInstanceWithSinonAccessor; - let mockWabbajackService: StubbedInstanceWithSinonAccessor; - let mockResolutionService: StubbedInstanceWithSinonAccessor; - let mockUpdateService: StubbedInstanceWithSinonAccessor; - let mockBlacklistService: StubbedInstanceWithSinonAccessor; - let mockErrorService: StubbedInstanceWithSinonAccessor; - let mockWindowService: StubbedInstanceWithSinonAccessor; - - let startupService: StartupService; - - beforeEach(() => { - mockModpackService = createStubInstance(ModpackService); - mockLauncherService = createStubInstance(LauncherService); - mockConfigService = createStubInstance(ConfigService); - mockWabbajackService = createStubInstance(WabbajackService); - mockResolutionService = createStubInstance(ResolutionService); - mockUpdateService = createStubInstance(UpdateService); - mockBlacklistService = createStubInstance(BlacklistService); - mockErrorService = createStubInstance(ErrorService); - mockWindowService = createStubInstance(WindowService); - - startupService = new StartupService( - mockModpackService, - mockLauncherService, - mockConfigService, - mockWabbajackService, - mockResolutionService, - mockUpdateService, - mockBlacklistService, - mockErrorService, - mockWindowService - ); - }); - - after(() => { - mock.stopAll(); - }); - - it("should quit if a blacklisted process is running", async () => { - mockBlacklistService.stubs.blacklistedProcessesRunning.resolves([ - { name: "mock name", processName: "mockProcess.exe", running: true }, - ]); - - startupService.registerStartupCommands("processBlacklist"); - await startupService.runStartup(); - - sinon.assert.called(mockWindowService.stubs.quit); - }); - - it("should not quit if there are no blacklisted processes", () => { - startupService.registerStartupCommands( - 'Check if blacklisted process is running"' - ); - startupService.runStartup(); - - sinon.assert.notCalled(mockWindowService.stubs.quit); - }); -}); diff --git a/src/__tests__/unit/services/system.service.test.ts b/src/__tests__/unit/services/system.service.test.ts deleted file mode 100644 index 40f5844b..00000000 --- a/src/__tests__/unit/services/system.service.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { SystemService } from "@/main/services/system.service"; -import { - createStubInstance, - expect, - StubbedInstanceWithSinonAccessor, -} from "@loopback/testlab"; -import { ConfigService } from "@/main/services/config.service"; -import { ErrorService } from "@/main/services/error.service"; -import psList from "ps-list"; - -describe("System service", () => { - let mockConfigService: StubbedInstanceWithSinonAccessor; - let mockErrorService: StubbedInstanceWithSinonAccessor; - - let systemService: SystemService; - - beforeEach(() => { - mockConfigService = createStubInstance(ConfigService); - mockErrorService = createStubInstance(ErrorService); - }); - - it("should return true if a process is running", async () => { - const mockListProcess = () => - new Promise((resolve) => - resolve([{ name: "mockname.exe", pid: 1234, ppid: 1234 }]) - ); - systemService = new SystemService( - mockConfigService, - mockErrorService, - mockListProcess - ); - - expect(await systemService.isProcessRunning("mockname.exe")).to.eql(true); - }); - - it("should return false if a process is not", async () => { - const mockListProcess = () => - new Promise((resolve) => - resolve([{ name: "mockname.exe", pid: 1234, ppid: 1234 }]) - ); - systemService = new SystemService( - mockConfigService, - mockErrorService, - mockListProcess - ); - - expect(await systemService.isProcessRunning("notrunning.exe")).to.eql( - false - ); - }); -}); diff --git a/src/__tests__/unit/services/wabbajack.service.test.ts b/src/__tests__/unit/services/wabbajack.service.test.ts deleted file mode 100644 index c3a59aa9..00000000 --- a/src/__tests__/unit/services/wabbajack.service.test.ts +++ /dev/null @@ -1,238 +0,0 @@ -import mockFs from "mock-fs"; -import { WabbajackService } from "@/main/services/wabbajack.service"; -import { SystemService } from "@/main/services/system.service"; -import { ModpackService } from "@/main/services/modpack.service"; -import { - createStubInstance, - expect, - sinon, - StubbedInstanceWithSinonAccessor, -} from "@loopback/testlab"; - -const mockLocalAppData = "mock/local/app/data"; - -const mockDate = new Date(); - -const getMockV2Wabbajack = () => { - return { - [`${mockLocalAppData}/Wabbajack/installed_modlists.json`]: JSON.stringify({ - "mock/install/location/3": { - ModList: { - Name: "Wildlander", - Version: "1.1.9", - }, - InstallationPath: "mock/install/location/3", - }, - "mock/install/location/4": { - ModList: { - Name: "Wildlander", - Version: "1.1.10", - }, - InstallationPath: "mock/install/location/4", - }, - }), - }; -}; - -const getMockV3Wabbajack = () => ({ - [`${mockLocalAppData}/Wabbajack/saved_settings`]: { - "install-settings-asdfghj.json": mockFs.file({ - content: JSON.stringify({ - InstallLocation: "mock/install/location/1", - Metadata: { - title: "Wildlander", - version: "1.1.9", - }, - }), - mtime: mockDate, - }), - "install-settings-lkjhgf.json": mockFs.file({ - content: JSON.stringify({ - InstallLocation: "mock/install/location/2", - Metadata: { - title: "Wildlander", - version: "1.1.10", - }, - }), - mtime: mockDate, - }), - "another-setting.json": JSON.stringify({ - something: "else", - }), - }, -}); - -describe("Wabbajack service", () => { - let mockSystemService: StubbedInstanceWithSinonAccessor; - let mockModpackService: StubbedInstanceWithSinonAccessor; - let wabbajackService: WabbajackService; - - beforeEach(() => { - mockSystemService = createStubInstance(SystemService); - mockModpackService = createStubInstance(ModpackService); - - sinon.stub(SystemService, "getLocalAppData").returns(mockLocalAppData); - - wabbajackService = new WabbajackService( - mockSystemService, - mockModpackService - ); - }); - - afterEach(() => { - mockFs.restore(); - sinon.restore(); - }); - - it("should combine modlist info from wabbajack v2 and v3", async () => { - mockFs({ ...getMockV2Wabbajack(), ...getMockV3Wabbajack() }); - - expect(await wabbajackService.getInstalledModpacks()).to.eql({ - ["mock/install/location/1"]: { - title: "Wildlander", - installPath: "mock/install/location/1", - version: "1.1.9", - lastUpdated: mockDate, - }, - ["mock/install/location/2"]: { - title: "Wildlander", - installPath: "mock/install/location/2", - version: "1.1.10", - lastUpdated: mockDate, - }, - ["mock/install/location/3"]: { - title: "Wildlander", - installPath: "mock/install/location/3", - version: "1.1.9", - }, - ["mock/install/location/4"]: { - title: "Wildlander", - installPath: "mock/install/location/4", - version: "1.1.10", - }, - }); - }); - - it("should should return v2 modlists if only they are available", async () => { - mockFs({ ...getMockV2Wabbajack() }); - - expect(await wabbajackService.getInstalledModpacks()).to.eql({ - ["mock/install/location/3"]: { - title: "Wildlander", - installPath: "mock/install/location/3", - version: "1.1.9", - }, - ["mock/install/location/4"]: { - title: "Wildlander", - installPath: "mock/install/location/4", - version: "1.1.10", - }, - }); - }); - - it("should should return v3 modlists if only they are available", async () => { - mockFs({ ...getMockV3Wabbajack() }); - - expect(await wabbajackService.getInstalledModpacks()).to.eql({ - ["mock/install/location/1"]: { - title: "Wildlander", - installPath: "mock/install/location/1", - version: "1.1.9", - lastUpdated: mockDate, - }, - ["mock/install/location/2"]: { - title: "Wildlander", - installPath: "mock/install/location/2", - version: "1.1.10", - lastUpdated: mockDate, - }, - }); - }); - - it("should return only the latest v3 modpack for an install directory", async () => { - const laterDate = new Date(); - const olderDate = new Date(new Date().setDate(-1)); - - mockFs({ - [`${mockLocalAppData}/Wabbajack/saved_settings`]: { - "install-settings-asdfghj.json": mockFs.file({ - content: JSON.stringify({ - InstallLocation: "mock/install/location/1", - Metadata: { - title: "Wildlander", - version: "1.1.11", - }, - }), - mtime: laterDate, - }), - "install-settings-lksadfh.json": mockFs.file({ - content: JSON.stringify({ - InstallLocation: "mock/install/location/1", - Metadata: { - title: "Wildlander", - version: "1.1.9", - }, - }), - mtime: olderDate, - }), - "another-setting.json": JSON.stringify({ - something: "else", - }), - }, - }); - - expect(await wabbajackService.getInstalledModpacks()).to.eql({ - ["mock/install/location/1"]: { - title: "Wildlander", - installPath: "mock/install/location/1", - version: "1.1.11", - lastUpdated: laterDate, - }, - }); - }); - - it("should return null if there is no modlists available", async () => { - mockFs({ [mockLocalAppData]: {} }); - expect(await wabbajackService.getInstalledModpacks()).to.eql(null); - }); - - it("should get all installed modpacks from wabbajack v2", async () => { - mockFs(getMockV2Wabbajack()); - - expect(await wabbajackService.getInstalledModpacksFromWabbajackV2()).to.eql( - { - ["mock/install/location/3"]: { - title: "Wildlander", - installPath: "mock/install/location/3", - version: "1.1.9", - }, - ["mock/install/location/4"]: { - title: "Wildlander", - installPath: "mock/install/location/4", - version: "1.1.10", - }, - } - ); - }); - - it("should get installed modpacks from wabbajack v3", async () => { - mockFs(getMockV3Wabbajack()); - - expect(await wabbajackService.getInstalledModpacksFromWabbajackV3()).to.eql( - { - ["mock/install/location/1"]: { - title: "Wildlander", - installPath: "mock/install/location/1", - version: "1.1.9", - lastUpdated: mockDate, - }, - ["mock/install/location/2"]: { - title: "Wildlander", - installPath: "mock/install/location/2", - version: "1.1.10", - lastUpdated: mockDate, - }, - } - ); - }); -}); diff --git a/src/__tests__/unit/setup/global-setup.ts b/src/__tests__/unit/setup/global-setup.ts deleted file mode 100644 index 047490eb..00000000 --- a/src/__tests__/unit/setup/global-setup.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { logger } from "@/main/logger"; - -// Disable logging -logger.transports.console.level = false; -logger.transports.file.level = false; diff --git a/src/__tests__/unit/shared/util/asyncFilter.test.ts b/src/__tests__/unit/shared/util/asyncFilter.test.ts new file mode 100644 index 00000000..652f818a --- /dev/null +++ b/src/__tests__/unit/shared/util/asyncFilter.test.ts @@ -0,0 +1,37 @@ +import { expect } from "@loopback/testlab"; +import { asyncFilter } from "@/shared/util/asyncFilter"; + +describe("asyncFilter", () => { + interface Person { + name: string; + age: number; + } + + async function filterAdults(person: Person): Promise { + return person.age >= 18; + } + + const people: Person[] = [ + { name: "John", age: 25 }, + { name: "Alice", age: 30 }, + { name: "Bob", age: 16 }, + ]; + + it("should filter data when the filter matches", async () => { + const filtered = await asyncFilter(people, filterAdults); + + expect(filtered).to.deepEqual([ + { name: "John", age: 25 }, + { name: "Alice", age: 30 }, + ]); + }); + + it("should filter no data when the filter does not match", async () => { + const filtered = await asyncFilter( + people, + async (person) => person.age >= 100 + ); + + expect(filtered).to.deepEqual([]); + }); +}); diff --git a/src/main.ts b/src/main.ts index ad12406f..fc3af313 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,22 +1,26 @@ -import { app, protocol } from "electron"; -import { isDevelopment } from "./main/services/config.service"; +import { app, dialog, protocol } from "electron"; import { autoUpdater } from "electron-updater"; -import { LauncherApplication } from "@/main/application"; -import { logger } from "@/main/logger"; -import { ErrorService } from "@/main/services/error.service"; -import { WindowService } from "@/main/services/window.service"; +import log from "electron-log/main"; +import { LauncherApplication } from "./main/application"; +import { ErrorService } from "./main/services/error.service"; +import { WindowService } from "./main/services/window.service"; +import type { ProcessWithGlobals } from "./main/types/process-globals"; +import { promisify } from "util"; -const isSingleInstance = app.requestSingleInstanceLock(); -if (!isSingleInstance) { - app.quit(); +if (process.env["MULTIPLE_INSTANCE"] !== "true") { + const isSingleInstance = app.requestSingleInstanceLock(); + if (!isSingleInstance) { + log.debug("Secondary instance opened, quitting"); + app.quit(); + } } // Ensure it's easy to tell where the logs for this application start const initialLog = `| ${new Date().toLocaleString()} |`; -logger.debug("-".repeat(initialLog.length)); -logger.debug(initialLog); -logger.debug("-".repeat(initialLog.length)); -autoUpdater.logger = require("electron-log"); +log.debug("-".repeat(initialLog.length)); +log.debug(initialLog); +log.debug("-".repeat(initialLog.length)); +autoUpdater.logger = log; // Scheme must be registered before the app is ready protocol.registerSchemesAsPrivileged([ @@ -24,7 +28,7 @@ protocol.registerSchemesAsPrivileged([ ]); // Exit cleanly on request from parent process in development mode. -if (isDevelopment) { +if (!app.isPackaged) { if (process.platform === "win32") { process.on("message", (data) => { if (data === "graceful-exit") { @@ -36,6 +40,14 @@ if (isDevelopment) { app.quit(); }); } + + if (process.platform !== "win32") { + if (!process.env["APPDATA"]) { + // The application requires a valid modpack installation. + // If not working on Windows, this is assumed to be local files generated from `npm run generate:modpack-files` for development purposes. + process.env["APPDATA"] = `${__dirname}/../mock-files/APP_DATA`; + } + } } const start = async () => { @@ -43,29 +55,44 @@ const start = async () => { await launcherApplication.boot(); await launcherApplication.start(); - app.on("second-instance", async () => { - const windowService = await launcherApplication.getServiceByClass( - WindowService - ); + app.on("second-instance", () => { + const windowService = + launcherApplication.getServiceByClassSync(WindowService); // Someone tried to run a second instance, so focus the original window. windowService.focusWindow(); }); + + return launcherApplication; }; // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. -app.on("ready", async () => { - try { - await start(); - } catch (error) { - const errorService = new ErrorService(); - await errorService.handleError( - "Failed to start application", - (error as Error).message - ); - process.exit(1); - } +// TODO this should probably use `app.whenReady().then(()` instead +app.on("ready", () => { + // Initialize electron-log IPC before window creation (required for v5) + log.initialize(); - logger.debug("App started"); + start() + .then((launcherApplication) => { + // In test mode, add some additional properties to the process object to be used later + if (process.env["IS_TEST"]) { + (process as ProcessWithGlobals)._globals_ = { + // Store the launcher application in the process so it can be accessed from tests to replace artefacts if necessary. + // This is due to playwright not being able to access `require` from the main process. + launcherApplication, + // Store the promisify unique symbol in the process so that promisified methods can be mocked correctly. + promisifyCustomSymbol: promisify.custom, + }; + } + }) + .then(() => log.debug("App started")) + .catch((error) => { + const errorService = new ErrorService(log, dialog); + errorService.handleError( + "Failed to start application", + (error as Error).message + ); + process.exit(1); + }); }); diff --git a/src/main/.eslintrc.js b/src/main/.eslintrc.js new file mode 100644 index 00000000..d96efdb5 --- /dev/null +++ b/src/main/.eslintrc.js @@ -0,0 +1,21 @@ +module.exports = { + extends: "@loopback/eslint-config", + root: false, + env: { + es6: true, + node: true, + }, + parserOptions: { + project: "../../tsconfig.main.json", + tsconfigRootDir: __dirname, + }, + rules: { + "@typescript-eslint/naming-convention": [ + "error", + { + selector: "enum", + format: ["UPPER_CASE"], + }, + ], + }, +}; diff --git a/src/main/application.ts b/src/main/application.ts index 64bebad4..3b63b21c 100644 --- a/src/main/application.ts +++ b/src/main/application.ts @@ -1,11 +1,29 @@ import { StartupService } from "@/main/services/startup.service"; -import { Constructor } from "@loopback/context"; +import type { Constructor } from "@loopback/context"; import { WindowService } from "@/main/services/window.service"; -import { logger } from "@/main/logger"; +import { LoggerBinding } from "@/main/logger"; import { BootMixin } from "@loopback/boot"; import { Application } from "@loopback/core"; -import { Controller } from "@/main/decorators/controller.decorator"; +import type { Controller } from "@/main/decorators/controller.decorator"; import { ErrorService } from "@/main/services/error.service"; +import logger from "electron-log"; +import { VersionBinding } from "@/main/bindings/version.binding"; +import electron, { app } from "electron"; +import { IsDevelopmentBinding } from "@/main/bindings/isDevelopment.binding"; +import { ChildProcessBinding } from "@/main/bindings/child-process.binding"; +import * as child_process from "child_process"; +import { PsListBinding } from "@/main/bindings/psList.binding"; +import psList from "ps-list"; +import { ProcessKillBinding } from "@/main/bindings/process-kill.binding"; +import { ElectronBinding } from "@/main/bindings/electron.binding"; +import { AutoUpdaterBinding } from "@/main/bindings/autoUpdater.binding"; +import { autoUpdater } from "electron-updater"; +import contextMenu from "electron-context-menu"; +import { ContextMenuBinding } from "@/main/bindings/context-menu.binding"; +import { ConfigBinding } from "@/main/bindings/config.binding"; +import { ConfigService } from "@/main/services/config.service"; +import { is } from "@electron-toolkit/utils"; +import log from "electron-log/main"; const serviceNamespace = "services"; @@ -13,6 +31,8 @@ export class LauncherApplication extends BootMixin(Application) { constructor() { super(); + this.bindLogger(); + this.projectRoot = __dirname; this.onStart(async () => { @@ -26,19 +46,43 @@ export class LauncherApplication extends BootMixin(Application) { await this.startBrowser(); } catch (error) { const errorService = await this.getServiceByClass(ErrorService); - await errorService.handleError( + errorService.handleError( "Failed to start application", (error as Error).message ); process.exit(1); } }); + + this.bindStaticValues(); + + this.bootOptions = { + controllers: { + dirs: ["controllers"], + extensions: [".controller.ts", ".controller.js"], + nested: true, + }, + services: { + dirs: ["services"], + extensions: [ + ".service.ts", + ".service.js", + ".provider.ts", + ".provider.js", + ], + nested: true, + }, + }; } public getServiceByClass(cls: Constructor): Promise { return this.get(`${serviceNamespace}.${cls.name}`); } + public getServiceByClassSync(cls: Constructor): T { + return this.getSync(`${serviceNamespace}.${cls.name}`); + } + private async registerHandlers() { logger.silly("Registering handlers"); @@ -54,4 +98,20 @@ export class LauncherApplication extends BootMixin(Application) { await renderService.createBrowserWindow(); await renderService.load("/"); } + + private bindLogger() { + this.bind(LoggerBinding).to(log); + } + + private bindStaticValues() { + this.bind(ElectronBinding).to(electron); + this.bind(VersionBinding).to(app.getVersion()); + this.bind(IsDevelopmentBinding).to(is.dev); + this.bind(ChildProcessBinding).to(child_process); + this.bind(PsListBinding).to(psList); + this.bind(ProcessKillBinding).to(process.kill); + this.bind(AutoUpdaterBinding).to(autoUpdater); + this.bind(ContextMenuBinding).to(contextMenu); + this.bind(ConfigBinding).to(ConfigService.getNewUserPreferencesStore()); + } } diff --git a/src/main/bindings/autoUpdater.binding.ts b/src/main/bindings/autoUpdater.binding.ts new file mode 100644 index 00000000..934ad540 --- /dev/null +++ b/src/main/bindings/autoUpdater.binding.ts @@ -0,0 +1,6 @@ +import { BindingKey } from "@loopback/core"; +import type { AppUpdater } from "electron-updater"; + +export const AutoUpdaterBinding = BindingKey.create( + "bindings.autoUpdater" +); diff --git a/src/main/bindings/child-process.binding.ts b/src/main/bindings/child-process.binding.ts new file mode 100644 index 00000000..accaa709 --- /dev/null +++ b/src/main/bindings/child-process.binding.ts @@ -0,0 +1,7 @@ +import { BindingKey } from "@loopback/core"; +import type * as child_process from "child_process"; + +export type ChildProcess = typeof child_process; +export const ChildProcessBinding = BindingKey.create( + "bindings.childProcess" +); diff --git a/src/main/bindings/config.binding.ts b/src/main/bindings/config.binding.ts new file mode 100644 index 00000000..f21b2b42 --- /dev/null +++ b/src/main/bindings/config.binding.ts @@ -0,0 +1,6 @@ +import { BindingKey } from "@loopback/core"; +import type { UserPreferences } from "@/main/services/config.service"; +import type Store from "electron-store"; + +export const ConfigBinding = + BindingKey.create>("bindings.config"); diff --git a/src/main/bindings/context-menu.binding.ts b/src/main/bindings/context-menu.binding.ts new file mode 100644 index 00000000..08e78b5d --- /dev/null +++ b/src/main/bindings/context-menu.binding.ts @@ -0,0 +1,7 @@ +import { BindingKey } from "@loopback/core"; +import type contextMenu from "electron-context-menu"; + +export type ContextMenu = typeof contextMenu; +export const ContextMenuBinding = BindingKey.create( + "bindings.context-menu" +); diff --git a/src/main/bindings/electron.binding.ts b/src/main/bindings/electron.binding.ts new file mode 100644 index 00000000..e331422a --- /dev/null +++ b/src/main/bindings/electron.binding.ts @@ -0,0 +1,5 @@ +import { BindingKey } from "@loopback/core"; +import type electron from "electron"; + +export const ElectronBinding = + BindingKey.create("bindings.electron"); diff --git a/src/main/bindings/isDevelopment.binding.ts b/src/main/bindings/isDevelopment.binding.ts new file mode 100644 index 00000000..42339e0e --- /dev/null +++ b/src/main/bindings/isDevelopment.binding.ts @@ -0,0 +1,5 @@ +import { BindingKey } from "@loopback/core"; + +export const IsDevelopmentBinding = BindingKey.create( + "bindings.isDevelopment" +); diff --git a/src/main/bindings/process-kill.binding.ts b/src/main/bindings/process-kill.binding.ts new file mode 100644 index 00000000..c8ee046d --- /dev/null +++ b/src/main/bindings/process-kill.binding.ts @@ -0,0 +1,6 @@ +import { BindingKey } from "@loopback/core"; + +export type ProcessKill = (pid: number, signal?: string | number) => boolean; +export const ProcessKillBinding = BindingKey.create( + "bindings.processKill" +); diff --git a/src/main/bindings/psList.binding.ts b/src/main/bindings/psList.binding.ts new file mode 100644 index 00000000..b0c69439 --- /dev/null +++ b/src/main/bindings/psList.binding.ts @@ -0,0 +1,6 @@ +import { BindingKey } from "@loopback/core"; +import type psList from "ps-list"; + +export type PSList = typeof psList; +export const PsListBinding = + BindingKey.create("bindings.psList"); diff --git a/src/main/bindings/version.binding.ts b/src/main/bindings/version.binding.ts new file mode 100644 index 00000000..269363e7 --- /dev/null +++ b/src/main/bindings/version.binding.ts @@ -0,0 +1,3 @@ +import { BindingKey } from "@loopback/core"; + +export const VersionBinding = BindingKey.create("bindings.version"); diff --git a/src/main/controllers/dialog/dialog.controller.ts b/src/main/controllers/dialog/dialog.controller.ts index bfa8170e..3891627c 100644 --- a/src/main/controllers/dialog/dialog.controller.ts +++ b/src/main/controllers/dialog/dialog.controller.ts @@ -10,7 +10,7 @@ export class DialogController { @handle(DIALOG_EVENTS.ERROR) async error({ title, error }: { title: string; error: string }) { - await this.errorService.handleError(title, error); + this.errorService.handleError(title, error); } @handle(DIALOG_EVENTS.CONFIRMATION) @@ -21,7 +21,7 @@ export class DialogController { message: string; buttons: string[]; }) { - return await dialog.showMessageBox({ message, buttons }); + return dialog.showMessageBox({ message, buttons }); } @handle(DIALOG_EVENTS.DIRECTORY_SELECT) diff --git a/src/main/controllers/enb/enb.controller.ts b/src/main/controllers/enb/enb.controller.ts index a950541a..65d64b36 100644 --- a/src/main/controllers/enb/enb.controller.ts +++ b/src/main/controllers/enb/enb.controller.ts @@ -2,7 +2,7 @@ import { controller, handle } from "@/main/decorators/controller.decorator"; import { ENB_EVENTS } from "@/main/controllers/enb/enb.events"; import { EnbService } from "@/main/services/enb.service"; import { service } from "@loopback/core"; -import { FriendlyDirectoryMap } from "@/modpack-metadata"; +import type { FriendlyDirectoryMap } from "@/shared/types/modpack-metadata"; @controller export class EnbController { @@ -10,17 +10,17 @@ export class EnbController { @handle(ENB_EVENTS.GET_ENB_PRESETS) getEnbPresets(): Promise { - return this.enbService.getENBPresets(); + return this.enbService.getEnbPresets(); } @handle(ENB_EVENTS.RESTORE_ENB_PRESETS) async restoreEnbPresets(): Promise { - await this.enbService.restoreENBPresets(); + await this.enbService.restoreEnbPresets(); } @handle(ENB_EVENTS.GET_ENB_PREFERENCE) async getEnbPreference(): Promise { - return await this.enbService.getEnbPreference(); + return this.enbService.getEnbPreference(); } @handle(ENB_EVENTS.SET_ENB_PREFERENCE) diff --git a/src/main/controllers/modpack/modpack.controller.ts b/src/main/controllers/modpack/modpack.controller.ts index 1084c367..f4cb6e08 100644 --- a/src/main/controllers/modpack/modpack.controller.ts +++ b/src/main/controllers/modpack/modpack.controller.ts @@ -3,16 +3,17 @@ import { IsModpackValidResponse, MODPACK_EVENTS, } from "@/main/controllers/modpack/mopack.events"; -import { service } from "@loopback/core"; +import { inject, service } from "@loopback/core"; import { ModpackService } from "@/main/services/modpack.service"; -import { logger } from "@/main/logger"; import { LauncherService } from "@/main/services/launcher.service"; +import { Logger, LoggerBinding } from "@/main/logger"; @controller export class ModpackController { constructor( @service(ModpackService) private modpackService: ModpackService, - @service(LauncherService) private launcherService: LauncherService + @service(LauncherService) private launcherService: LauncherService, + @inject(LoggerBinding) private logger: Logger ) {} @handle(MODPACK_EVENTS.IS_MODPACK_SET) @@ -23,7 +24,7 @@ export class ModpackController { @handle(MODPACK_EVENTS.IS_MODPACK_DIRECTORY_VALID) isValidModDirectory(filepath: string): IsModpackValidResponse { if (!filepath) { - logger.warn("No filepath specified when checking mod directory"); + this.logger.warn("No filepath specified when checking mod directory"); return { ok: false }; } return this.modpackService.checkModpackPathIsValid(filepath); @@ -32,7 +33,7 @@ export class ModpackController { @handle(MODPACK_EVENTS.SET_MODPACK) setModpack(filepath: string) { if (!filepath) { - logger.error("No filepath specified when setting mod directory"); + this.logger.error("No filepath specified when setting mod directory"); } return this.launcherService.setModpack(filepath); } diff --git a/src/main/controllers/resolution/resolution.controller.ts b/src/main/controllers/resolution/resolution.controller.ts index f95cdb72..10a1653a 100644 --- a/src/main/controllers/resolution/resolution.controller.ts +++ b/src/main/controllers/resolution/resolution.controller.ts @@ -2,7 +2,7 @@ import { controller, handle } from "@/main/decorators/controller.decorator"; import { RESOLUTION_EVENTS } from "@/main/controllers/resolution/resolution.events"; import { ResolutionService } from "@/main/services/resolution.service"; import { service } from "@loopback/core"; -import { Resolution } from "@/Resolution"; +import type { Resolution } from "@/shared/types/Resolution"; @controller export class ResolutionController { diff --git a/src/main/controllers/system/system.controller.ts b/src/main/controllers/system/system.controller.ts index 053495b7..1d272456 100644 --- a/src/main/controllers/system/system.controller.ts +++ b/src/main/controllers/system/system.controller.ts @@ -27,7 +27,7 @@ export class SystemController { try { await shell.openExternal(link); } catch (error) { - await this.errorService.handleError( + this.errorService.handleError( "Error opening link", (error as Error).message ); @@ -41,12 +41,12 @@ export class SystemController { @handle(SYSTEM_EVENTS.CHECK_PREREQUISITES) async checkPrerequisite() { - return await this.systemService.checkPrerequisitesInstalled(); + return this.systemService.checkPrerequisitesInstalled(); } @handle(SYSTEM_EVENTS.INSTALL_PREREQUISITES) async installPrerequisites() { - return await this.systemService.installPrerequisites(); + return this.systemService.installPrerequisites(); } @handle(SYSTEM_EVENTS.REBOOT) diff --git a/src/main/controllers/window/window.controller.ts b/src/main/controllers/window/window.controller.ts index 018a3d09..7d0a6a7d 100644 --- a/src/main/controllers/window/window.controller.ts +++ b/src/main/controllers/window/window.controller.ts @@ -1,33 +1,24 @@ import { controller, handle } from "@/main/decorators/controller.decorator"; import { WindowService } from "@/main/services/window.service"; import { service } from "@loopback/core"; -import { WindowEvents } from "@/main/controllers/window/window.events"; -import { ConfigService } from "@/main/services/config.service"; +import { WINDOW_EVENTS } from "@/main/controllers/window/window.events"; @controller export class WindowController { - constructor( - @service(WindowService) private renderService: WindowService, - @service(ConfigService) private configService: ConfigService - ) {} + constructor(@service(WindowService) private renderService: WindowService) {} - @handle(WindowEvents.CLOSE) + @handle(WINDOW_EVENTS.CLOSE) quit() { this.renderService.quit(); } - @handle(WindowEvents.RELOAD) + @handle(WINDOW_EVENTS.RELOAD) reload() { this.renderService.reload(); } - @handle(WindowEvents.MINIMIZE) + @handle(WINDOW_EVENTS.MINIMIZE) minimize() { this.renderService.minimize(); } - - @handle(WindowEvents.OPEN_LOG_PATH) - async openLogPath() { - await this.configService; - } } diff --git a/src/main/controllers/window/window.events.ts b/src/main/controllers/window/window.events.ts index d2812151..a4abc745 100644 --- a/src/main/controllers/window/window.events.ts +++ b/src/main/controllers/window/window.events.ts @@ -1,6 +1,5 @@ -export const enum WindowEvents { +export const enum WINDOW_EVENTS { CLOSE = "CLOSE", RELOAD = "RELOAD", MINIMIZE = "MINIMIZE", - OPEN_LOG_PATH = "OPEN_LOG_PATH", } diff --git a/src/main/decorators/controller.decorator.ts b/src/main/decorators/controller.decorator.ts index 4423cc25..cf802cbd 100644 --- a/src/main/decorators/controller.decorator.ts +++ b/src/main/decorators/controller.decorator.ts @@ -1,17 +1,21 @@ import { ipcMain, IpcMainInvokeEvent } from "electron"; -import { logger } from "@/main/logger"; -import { Constructor } from "@loopback/context"; +import type { Constructor } from "@loopback/context"; +import log from "electron-log/main"; +import "reflect-metadata"; export interface Controller { - registerHandlers: () => void; + registerHandlers(): void; } -const Handlers = "Handlers"; +const HandlersMetadataKey = Symbol("handlers"); +type HandlerMap = Map unknown>; +/* istanbul ignore next */ /** Add a method to controllers that can be called to register all IPC handlers. This is then automatically be called by the booter. e.g. + ```typescript @controller class ExampleController { @@ -21,34 +25,43 @@ const Handlers = "Handlers"; } } + ``` */ -export function controller>(Base: T) { +export function controller>(baseClass: T) { return { - [Base.name]: class extends Base implements Controller { + [baseClass.name]: class extends baseClass implements Controller { public registerHandlers() { - const handlers = Base.prototype[Handlers]; - handlers.forEach( - (method: (...args: unknown[]) => unknown, channel: string) => { - logger.silly(`Registered handler "${channel}"`); - ipcMain.handle( - channel, - (event: IpcMainInvokeEvent, ...args: unknown[]) => - method.apply(this, [...args, event]) - ); - } + const handlers: HandlerMap = Reflect.getMetadata( + HandlersMetadataKey, + this ); + handlers.forEach((method, channel) => { + log.silly(`Registered handler "${channel}"`); + ipcMain.handle( + channel, + (event: IpcMainInvokeEvent, ...args: unknown[]) => + method.apply(this, [...args, event]) + ); + }); } }, - }[Base.name]; + }[baseClass.name]; } +/** + * @handle decorator for controllers. + * This decorator is used to register a method as an IPC handler. + * @param channel - The channel name to listen for. + */ export function handle(channel: string) { return function ( - target: Record, - propertyKey: string, + target: object, + _propertyKey: string, propertyDescriptor: PropertyDescriptor ) { - target[Handlers] = target[Handlers] || new Map(); - target[Handlers].set(channel, propertyDescriptor.value); + const handlers = + Reflect.getMetadata(HandlersMetadataKey, target) || new Map(); + handlers.set(channel, propertyDescriptor.value); + Reflect.defineMetadata(HandlersMetadataKey, handlers, target); }; } diff --git a/src/main/logger.ts b/src/main/logger.ts index 34bfdeba..779ad610 100644 --- a/src/main/logger.ts +++ b/src/main/logger.ts @@ -1,4 +1,17 @@ -import log from "electron-log"; +import { BindingKey } from "@loopback/core"; +import log from "electron-log/main"; +import path from "path"; -// Export from here in case we want to write any wrappers around the methods or change logger -export const logger = log; +export type Logger = typeof log; +export const LoggerBinding = BindingKey.create("bindings.logger"); + +log.initialize(); + +const defaultFilePath = path.dirname(log.transports.file.getFile().path); +const filepath = process.env["LOG_PATH"] ?? defaultFilePath; + +log.transports.file.resolvePathFn = (_, message) => { + return message?.variables?.processType === "renderer" + ? path.join(filepath, "renderer.log") + : path.join(filepath, "main.log"); +}; diff --git a/src/main/services/config.service.ts b/src/main/services/config.service.ts index 9699da45..20f5e22a 100644 --- a/src/main/services/config.service.ts +++ b/src/main/services/config.service.ts @@ -1,14 +1,14 @@ import Store from "electron-store"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; -import { Resolution } from "@/Resolution"; +import type { Resolution } from "@/shared/types/Resolution"; import path from "path"; -import { BindingScope, injectable } from "@loopback/context"; -import { logger } from "@/main/logger"; +import { BindingScope, inject, injectable } from "@loopback/context"; +import { Logger, LoggerBinding } from "@/main/logger"; import fs from "fs"; +import { ConfigBinding } from "@/main/bindings/config.binding"; +import { Context } from "@loopback/core"; export const appRoot = path.resolve(`${__dirname}/../../`); -export const isDevelopment = path.extname(appRoot) !== ".asar"; - export interface UserPreferences { [USER_PREFERENCE_KEYS.MOD_DIRECTORY]: string; [USER_PREFERENCE_KEYS.PRESET]: string; @@ -20,33 +20,45 @@ export interface UserPreferences { [USER_PREFERENCE_KEYS.CHECK_PREREQUISITES]: boolean; } -type PreferenceWithValidator = { +export type PreferenceWithValidator = { [key in keyof UserPreferences]?: { value: UserPreferences[keyof UserPreferences]; - validate?: (...args: unknown[]) => boolean | Promise; + validate?: (...args: unknown[]) => Promise; }; }; -export const userPreferences = new Store({ - name: "userPreferences", -}); - @injectable({ scope: BindingScope.SINGLETON, }) export class ConfigService { - constructor(private config = userPreferences) {} + constructor( + @inject(LoggerBinding) private logger: Logger, + @inject.context() private context: Context + ) {} + + static getNewUserPreferencesStore(): Store { + return new Store({ + name: "userPreferences", + ...(process.env["CONFIG_PATH"] && { cwd: process.env["CONFIG_PATH"] }), + }); + } + + // Get config from the context dynamically so it can be mocked + private getConfig(): Store { + return this.context.getSync>(ConfigBinding); + } skyrimDirectory() { return `${this.modDirectory()}/Stock Game`; } getLogDirectory() { - return path.dirname(logger.transports?.file.getFile().path); + return path.dirname(this.logger.transports?.file.getFile().path); } modDirectory() { - return this.config.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY); + const config = this.getConfig(); + return config.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY); } backupDirectory() { @@ -60,7 +72,8 @@ export class ConfigService { getPreference( key: keyof UserPreferences ): T { - return this.config.get(key) as unknown as T; + const config = this.getConfig(); + return config.get(key) as unknown as T; } launcherDirectory() { @@ -68,50 +81,59 @@ export class ConfigService { } hasPreference(key: keyof UserPreferences) { - return this.config.has(key); + const config = this.getConfig(); + return config.has(key); } deletePreference(key: keyof UserPreferences) { - logger.debug(`Deleting preference: ${key}`); - return this.config.delete(key); + this.logger.debug(`Deleting preference: ${key}`); + const config = this.getConfig(); + return config.delete(key); } setPreference(key: keyof UserPreferences | string, value: unknown) { if (typeof value === "object") { - logger.debug(`Setting preference ${key} to ${JSON.stringify(value)}`); + this.logger.debug( + `Setting preference ${key} to ${JSON.stringify(value)}` + ); } else { - logger.debug(`Setting preference ${key} to ${value}`); + this.logger.debug(`Setting preference ${key} to ${value}`); } - return this.config.set(key, value); + const config = this.getConfig(); + return config.set(key, value); } /** Set the value specified if the key doesn't exist or the current value is invalid */ - async setDefaultPreferences(preferences: PreferenceWithValidator) { - logger.debug("Setting default user preferences"); - logger.debug(`Current preferences`); - logger.debug(this.getPreferences().store); + async setDefaultPreferences( + preferences: PreferenceWithValidator + ): Promise { + const config = this.getConfig(); + this.logger.debug("Setting default user preferences"); + this.logger.debug(`Current preferences`); + this.logger.debug(config.store); for (const [key, { value, validate }] of Object.entries(preferences)) { const valid = validate ? await validate() : true; if (!valid) { - logger.warn( + this.logger.warn( `Current ${key} preference is invalid. Setting to default: ${value}` ); } - if ((!this.config.has(key) || !valid) && value) { + if ((!config.has(key) || !valid) && value) { this.setPreference(key, value); } } - logger.debug("New preferences"); - logger.debug(this.getPreferences().store); + this.logger.debug("New preferences"); + this.logger.debug(config.store); } getPreferences() { - return this.config; + return this.getConfig(); } editPreferences() { - return userPreferences.openInEditor(); + const config = this.getConfig(); + return config.openInEditor(); } } diff --git a/src/main/services/dialog.service.ts b/src/main/services/dialog.service.ts new file mode 100644 index 00000000..4145db9a --- /dev/null +++ b/src/main/services/dialog.service.ts @@ -0,0 +1,15 @@ +import { + injectable, + /* inject, */ BindingScope, + Provider, +} from "@loopback/core"; +import { dialog } from "electron"; + +export type Dialog = typeof dialog; + +@injectable({ scope: BindingScope.TRANSIENT }) +export class DialogProvider implements Provider { + value() { + return dialog; + } +} diff --git a/src/main/services/enb.service.ts b/src/main/services/enb.service.ts index 987a69c4..833dbfa2 100644 --- a/src/main/services/enb.service.ts +++ b/src/main/services/enb.service.ts @@ -1,47 +1,53 @@ import fs from "fs"; -import { logger } from "@/main/logger"; -import { ConfigService, userPreferences } from "@/main/services/config.service"; +import { ConfigService } from "@/main/services/config.service"; import { copy, existsSync } from "fs-extra"; import { not as isNotJunk } from "junk"; -import { FriendlyDirectoryMap } from "@/modpack-metadata"; +import type { FriendlyDirectoryMap } from "@/shared/types/modpack-metadata"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; import { service } from "@loopback/core"; -import { BindingScope, injectable } from "@loopback/context"; -import { AdditionalInstruction } from "@/additional-instructions"; +import { BindingScope, inject, injectable } from "@loopback/context"; +import type { AdditionalInstruction } from "@/shared/types/additional-instructions"; import { InstructionService } from "@/main/services/instruction.service"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { NoEnbsError } from "@/shared/errors/no-enbs.error"; +import type { NonEmptyArray } from "@/shared/types/non-empty-array"; const noEnb = "noEnb"; -type noEnb = typeof noEnb; @injectable({ scope: BindingScope.SINGLETON, }) export class EnbService { - private ENBNameMappingFile = "namesENB.json"; + private enbNameMappingFile = "namesENB.json"; constructor( @service(ConfigService) private configService: ConfigService, @service(InstructionService) - private modpackInstructionsService: InstructionService + private modpackInstructionsService: InstructionService, + @inject(LoggerBinding) private logger: Logger ) {} + private static getEnbInstruction(instruction: AdditionalInstruction) { + return instruction.type === "enb"; + } + enbDirectory() { - return `${userPreferences.get( + return `${this.configService.getPreference( USER_PREFERENCE_KEYS.MOD_DIRECTORY )}/launcher/ENB Presets`; } - async getENBPresets(): Promise { + async getEnbPresets(): Promise> { const mappedEnbs = JSON.parse( await fs.promises.readFile( - `${userPreferences.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY)}/launcher/${ - this.ENBNameMappingFile - }`, + `${this.configService.getPreference( + USER_PREFERENCE_KEYS.MOD_DIRECTORY + )}/launcher/${this.enbNameMappingFile}`, "utf-8" ) ) as FriendlyDirectoryMap[]; - const unmappedENBs = ( + const unmappedEnbs = ( await fs.promises.readdir(this.enbDirectory(), { withFileTypes: true }) ) .filter((dirent) => dirent.isDirectory()) @@ -57,9 +63,13 @@ export class EnbService { ) ); + if (mappedEnbs.length === 0 && unmappedEnbs.length === 0) { + throw new NoEnbsError("No enbs found"); + } + return [ ...mappedEnbs, - ...unmappedENBs, + ...unmappedEnbs, { real: noEnb, friendly: "No Shaders", @@ -74,7 +84,7 @@ export class EnbService { } async getDefaultPreference() { - return (await this.getENBPresets())[0].real; + return (await this.getEnbPresets())[0].real; } isValid(preset: string) { @@ -82,10 +92,10 @@ export class EnbService { } async isInPresetList(preset: string) { - const presets = await this.getENBPresets(); + const presets = await this.getEnbPresets(); const isInList = presets.filter(({ real }) => real === preset).length > 0; if (!isInList) { - logger.debug( + this.logger.debug( `enb preset "${preset}" in not in preset list: ${JSON.stringify( presets )}` @@ -116,12 +126,13 @@ export class EnbService { * Defined in additional-instructions.json */ async postSetEnb(enb: string) { - logger.info("Handling additional enb set instructions"); + this.logger.info("Handling additional enb set instructions"); const modpackEnbInstructions = this.modpackInstructionsService .getInstructions() .filter(EnbService.getEnbInstruction); - if (modpackEnbInstructions) { - logger.debug( + + if (modpackEnbInstructions.length > 0) { + this.logger.debug( `Found modpack instructions: ${JSON.stringify(modpackEnbInstructions)}` ); await this.modpackInstructionsService.execute( @@ -131,31 +142,27 @@ export class EnbService { } } - private static getEnbInstruction(instruction: AdditionalInstruction) { - return instruction.type === "enb"; - } - - async backupOriginalENBs() { - const ENBBackupDirectory = `${this.configService.backupDirectory()}/ENB Presets`; - const backupExists = existsSync(ENBBackupDirectory); - logger.debug(`Backup for ENBs exists: ${backupExists}`); + async backupOriginalEnbs() { + const enbBackupDirectory = `${this.configService.backupDirectory()}/ENB Presets`; + const backupExists = existsSync(enbBackupDirectory); + this.logger.debug(`Backup for ENBs exists: ${backupExists}`); if (!backupExists) { - logger.info("No ENB backup exists. Backing up..."); + this.logger.info("No ENB backup exists. Backing up..."); await fs.promises.mkdir(this.configService.backupDirectory(), { recursive: true, }); - await copy(this.enbDirectory(), ENBBackupDirectory); + await copy(this.enbDirectory(), enbBackupDirectory); } } - async restoreENBPresets() { - logger.info("Restoring ENB presets"); - const ENBBackupDirectory = `${this.configService.backupDirectory()}/ENB Presets`; - await copy(ENBBackupDirectory, this.enbDirectory(), { overwrite: true }); + async restoreEnbPresets() { + this.logger.info("Restoring ENB presets"); + const enbBackupDirectory = `${this.configService.backupDirectory()}/ENB Presets`; + await copy(enbBackupDirectory, this.enbDirectory(), { overwrite: true }); await this.copyEnbFiles( - userPreferences.get(USER_PREFERENCE_KEYS.ENB_PROFILE), + this.configService.getPreference(USER_PREFERENCE_KEYS.ENB_PROFILE), false ); } @@ -165,27 +172,27 @@ export class EnbService { * Different presets can have different files, * this will list all possible files. */ - async getAllPossibleENBFiles() { + async getAllPossibleEnbFiles() { const files = []; - for (const ENB of (await this.getENBPresets()).filter( - (enb) => enb.real !== noEnb + for (const enb of (await this.getEnbPresets()).filter( + (x) => x.real !== noEnb )) { files.push( - await fs.promises.readdir(`${this.enbDirectory()}/${ENB.real}`) + await fs.promises.readdir(`${this.enbDirectory()}/${enb.real}`) ); } // Flatten and remove duplicates return new Set([...files.flat().filter(isNotJunk)]); } - async getExistingENBFiles() { - const ENBFiles = await this.getAllPossibleENBFiles(); + async getExistingEnbFiles() { + const enbFiles = await this.getAllPossibleEnbFiles(); return ( await fs.promises.readdir(this.configService.skyrimDirectory()) - ).filter((file) => ENBFiles.has(file)); + ).filter((file) => enbFiles.has(file)); } - async getENBFilesForPreset(preset: string) { + async getEnbFilesForPreset(preset: string) { return fs.promises.readdir(`${this.enbDirectory()}/${preset}`); } @@ -194,38 +201,38 @@ export class EnbService { * Different ENB presets will contain different files, * so all presets need to be read to ensure everything is removed */ - async deleteAllENBFiles() { - logger.info("Deleting ENB Files"); + async deleteAllEnbFiles() { + this.logger.info("Deleting ENB Files"); - const existingENBFiles = await this.getExistingENBFiles(); + const existingEnbFiles = await this.getExistingEnbFiles(); - for (const file of existingENBFiles) { + for (const file of existingEnbFiles) { const fileWithPath = `${this.configService.skyrimDirectory()}/${file}`; - logger.debug(`Deleting ENB file ${file} with path ${fileWithPath}`); + this.logger.debug(`Deleting ENB file ${file} with path ${fileWithPath}`); const isDirectory = (await fs.promises.lstat(fileWithPath)).isDirectory(); await fs.promises.rm(fileWithPath, { recursive: isDirectory }); } } - async syncENBFromGameToPresets(preset: string | noEnb) { - logger.info(`Syncing ENB changes back to presets for ${preset}`); + async syncEnbFromGameToPresets(preset: string | typeof noEnb) { + this.logger.info(`Syncing ENB changes back to presets for ${preset}`); if (preset !== noEnb) { - const enbFiles = await this.getENBFilesForPreset(preset); - logger.debug( + const enbFiles = await this.getEnbFilesForPreset(preset); + this.logger.debug( `ENB files that need to be synced: ${JSON.stringify(enbFiles)}` ); for (const file of enbFiles) { const fileWithPath = `${this.configService.skyrimDirectory()}/${file}`; const fileDestination = `${this.enbDirectory()}/${preset}/${file}`; - logger.debug(`Copying ${file} to ${fileDestination}`); + this.logger.debug(`Copying ${file} to ${fileDestination}`); if (existsSync(fileWithPath)) { await copy(fileWithPath, fileDestination, { overwrite: true }); } } } - logger.info("Finished syncing ENB presets"); + this.logger.info("Finished syncing ENB presets"); } /** @@ -233,30 +240,30 @@ export class EnbService { * @param profile - Must be the actual ENB profile name, not the friendly name. noEnb will remove all ENB files. * @param sync - Whether to sync the changes from Stock Game back to the ENB Preset directory */ - async copyEnbFiles(profile: string | noEnb, sync = true) { - logger.info(`Copying ${profile} ENB Files prerequisite`); + async copyEnbFiles(profile: string | typeof noEnb, sync = true) { + this.logger.info(`Copying ${profile} ENB Files prerequisite`); const previousProfile = - (userPreferences.get( + (this.configService.getPreference( USER_PREFERENCE_KEYS.PREVIOUS_ENB_PROFILE ) as string) || ""; if (sync && previousProfile && previousProfile !== noEnb) { // Sync the previous profile first so changes are not lost - await this.syncENBFromGameToPresets(previousProfile); + await this.syncEnbFromGameToPresets(previousProfile); } - await this.deleteAllENBFiles(); + await this.deleteAllEnbFiles(); - logger.info(`Copying ${profile} ENB Files`); + this.logger.info(`Copying ${profile} ENB Files`); // All ENB files have been deleted already so nothing to do if the preset is noEnb if (profile !== noEnb) { - const ENBFiles = await this.getENBFilesForPreset(profile); + const enbFiles = await this.getEnbFilesForPreset(profile); - for (const file of ENBFiles) { + for (const file of enbFiles) { const fileWithPath = `${this.enbDirectory()}/${profile}/${file}`; const fileDestination = `${this.configService.skyrimDirectory()}/${file}`; - logger.debug( + this.logger.debug( `Copy ENB file ${file} with path ${fileWithPath} to ${fileDestination}` ); await copy(fileWithPath, fileDestination); diff --git a/src/main/services/error.service.ts b/src/main/services/error.service.ts index 0d3e01fd..58be12f7 100644 --- a/src/main/services/error.service.ts +++ b/src/main/services/error.service.ts @@ -1,23 +1,29 @@ -import { dialog } from "electron"; -import { logger } from "@/main/logger"; -import { BindingScope, injectable } from "@loopback/context"; +import { BindingScope, inject, injectable } from "@loopback/context"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { Dialog, DialogProvider } from "./dialog.service"; +import { service } from "@loopback/core"; @injectable({ scope: BindingScope.SINGLETON, }) export class ErrorService { - async handleError(title: string, message: string) { - logger.error(`${title}: ${message}`); - logger.error(new Error().stack); - await dialog.showErrorBox(title, message); + constructor( + @inject(LoggerBinding) private logger: Logger, + @service(DialogProvider) private dialog: Dialog + ) {} + + handleError(title: string, message: string) { + this.logger.error(`${title}: ${message}`); + this.logger.error(new Error().stack); + this.dialog.showErrorBox(title, message); } - async handleUnknownError(error?: unknown) { - logger.error( + handleUnknownError(error?: unknown) { + this.logger.error( `Unknown error. The stack trace might hold more details. ${error}` ); - logger.error(new Error().stack); - await dialog.showErrorBox( + this.logger.error(new Error().stack); + this.dialog.showErrorBox( "An unknown error has occurred", "If you require more support, please post a message in the official modpack Discord and send your launcher log files." ); diff --git a/src/main/services/game.service.ts b/src/main/services/game.service.ts index 5baa0825..263968e6 100644 --- a/src/main/services/game.service.ts +++ b/src/main/services/game.service.ts @@ -1,17 +1,20 @@ -import { BindingScope, injectable } from "@loopback/context"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { ConfigService } from "@/main/services/config.service"; import { service } from "@loopback/core"; import fs from "fs"; -import { logger } from "@/main/logger"; +import { Logger, LoggerBinding } from "@/main/logger"; @injectable({ scope: BindingScope.SINGLETON, }) export class GameService { - constructor(@service(ConfigService) private configService: ConfigService) {} + constructor( + @service(ConfigService) private configService: ConfigService, + @inject(LoggerBinding) private logger: Logger + ) {} async copySkyrimLaunchLogs() { - logger.info("Copying Skyrim launch logs"); + this.logger.info("Copying Skyrim launch logs"); const launchLogPath = `${this.configService.skyrimDirectory()}/d3dx9_42.log`; const logPath = this.configService.getLogDirectory(); if (fs.existsSync(launchLogPath)) { diff --git a/src/main/services/graphics.service.ts b/src/main/services/graphics.service.ts index e3f0afff..178f1a55 100644 --- a/src/main/services/graphics.service.ts +++ b/src/main/services/graphics.service.ts @@ -1,18 +1,20 @@ -import { FriendlyDirectoryMap } from "@/modpack-metadata"; import fs from "fs"; import { ConfigService } from "@/main/services/config.service"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; import { not as isNotJunk } from "junk"; -import { service } from "@loopback/core"; +import { inject, service } from "@loopback/core"; import { ProfileService } from "@/main/services/profile.service"; import path from "path"; -import { logger } from "@/main/logger"; import { copy, existsSync } from "fs-extra"; +import { Logger, LoggerBinding } from "@/main/logger"; +import type { FriendlyDirectoryMap } from "@/shared/types/modpack-metadata"; +import { NoGraphicsError } from "@/shared/errors/no-graphics.error"; export class GraphicsService { constructor( @service(ConfigService) private configService: ConfigService, - @service(ProfileService) private profileService: ProfileService + @service(ProfileService) private profileService: ProfileService, + @inject(LoggerBinding) private logger: Logger ) {} graphicsDirectory() { @@ -27,10 +29,6 @@ export class GraphicsService { return `${this.configService.launcherDirectory()}/${this.graphicsMappingFile()}`; } - private graphicsBackupDirectory() { - return `${this.configService.backupDirectory()}/graphics`; - } - async isInGraphicsList(graphics: string) { return ( (await this.getGraphics()).filter(({ real }) => real === graphics) @@ -43,46 +41,21 @@ export class GraphicsService { } async getDefaultPreference() { - return (await this.getGraphics())[0].real; - } - - private async getMappedGraphics(): Promise { - return JSON.parse( - await fs.promises.readFile(`${this.graphicsMappingPath()}`, "utf-8") - ); - } - - private async getUnmappedGraphics(mappedGraphics: FriendlyDirectoryMap[]) { return ( - ( - await fs.promises.readdir(this.graphicsDirectory(), { - withFileTypes: true, - }) - ) - .filter((dirent) => dirent.isDirectory()) - .map((dirent) => dirent.name) - .filter(isNotJunk) - .map( - (preset): FriendlyDirectoryMap => ({ real: preset, friendly: preset }) - ) - // Remove any graphics that have a mapping - .filter( - (unmappedSetting) => - !mappedGraphics.find( - (mappedSetting: FriendlyDirectoryMap) => - mappedSetting.real === unmappedSetting.real - ) - ) + (await this.getGraphics())?.[0]?.real ?? + (() => { + throw new NoGraphicsError("No graphics found"); + })() ); } async syncGraphicsFromGameToPresets(graphicsPreset: string, profile: string) { - logger.info( + this.logger.info( `Syncing graphics changes back to presets for ${graphicsPreset}` ); const graphicsFiles = await this.getGraphicsFilesForPreset(graphicsPreset); - logger.debug( + this.logger.debug( `Graphics files that need to be synced: ${JSON.stringify(graphicsFiles)}` ); @@ -90,12 +63,12 @@ export class GraphicsService { const fileWithPath = `${this.profileService.profileDirectory()}/${profile}/${file}`; const fileDestination = `${this.graphicsDirectory()}/${graphicsPreset}/${file}`; if (existsSync(fileWithPath)) { - logger.debug(`Copying ${fileWithPath} to ${fileDestination}`); + this.logger.debug(`Copying ${fileWithPath} to ${fileDestination}`); await copy(fileWithPath, fileDestination, { overwrite: true }); } } - logger.info("Finished syncing graphics presets"); + this.logger.info("Finished syncing graphics presets"); } async getGraphics(): Promise { @@ -115,7 +88,7 @@ export class GraphicsService { } async setGraphics(graphics: string) { - logger.info(`Setting graphics to ${graphics}`); + this.logger.info(`Setting graphics to ${graphics}`); this.setGraphicsPreference(graphics); await this.updateProfilesWithGraphics(graphics); } @@ -125,7 +98,7 @@ export class GraphicsService { } async updateProfilesWithGraphics(preset: string) { - logger.debug("Updating profiles with graphics settings"); + this.logger.debug("Updating profiles with graphics settings"); const graphics = (await this.getGraphicsFilesForPreset(preset)).map( (file) => `${this.graphicsDirectory()}/${preset}/${file}` ); @@ -133,7 +106,7 @@ export class GraphicsService { return Promise.all( profiles.map((profile) => graphics.map(async (file) => { - logger.debug(`Copying ${file} to ${profile}`); + this.logger.debug(`Copying ${file} to ${profile}`); await fs.promises.copyFile(file, `${profile}/${path.basename(file)}`); }) ) @@ -146,10 +119,10 @@ export class GraphicsService { async backupOriginalGraphics() { const backupExists = existsSync(this.graphicsBackupDirectory()); - logger.debug(`Backup for graphics exists: ${backupExists}`); + this.logger.debug(`Backup for graphics exists: ${backupExists}`); if (!backupExists) { - logger.info("No graphics backup exists. Backing up..."); + this.logger.info("No graphics backup exists. Backing up..."); await fs.promises.mkdir(this.configService.backupDirectory(), { recursive: true, }); @@ -168,14 +141,55 @@ export class GraphicsService { } async restoreGraphics() { - logger.info("Restoring graphics settings"); - logger.debug( + this.logger.info("Restoring graphics settings"); + this.logger.debug( `Copying ${this.graphicsBackupDirectory()} to ${this.graphicsDirectory()}` ); await copy(this.graphicsBackupDirectory(), this.graphicsDirectory(), { overwrite: true, }); await this.updateProfilesWithGraphics(this.getGraphicsPreference()); - logger.info("Graphics restored"); + this.logger.info("Graphics restored"); + } + + private graphicsBackupDirectory() { + return `${this.configService.backupDirectory()}/graphics`; + } + + private async getMappedGraphics(): Promise { + return JSON.parse( + await fs.promises.readFile(`${this.graphicsMappingPath()}`, "utf-8") + ); + } + + private async getUnmappedGraphics(mappedGraphics: FriendlyDirectoryMap[]) { + if (fs.existsSync(this.graphicsDirectory())) { + return ( + ( + await fs.promises.readdir(this.graphicsDirectory(), { + withFileTypes: true, + }) + ) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name) + .filter(isNotJunk) + .map( + (preset): FriendlyDirectoryMap => ({ + real: preset, + friendly: preset, + }) + ) + // Remove any graphics that have a mapping + .filter( + (unmappedSetting) => + !mappedGraphics.find( + (mappedSetting: FriendlyDirectoryMap) => + mappedSetting.real === unmappedSetting.real + ) + ) + ); + } else { + return []; + } } } diff --git a/src/main/services/instruction.service.ts b/src/main/services/instruction.service.ts index 012fca69..2f3461c1 100644 --- a/src/main/services/instruction.service.ts +++ b/src/main/services/instruction.service.ts @@ -1,38 +1,48 @@ -import { +import type { AdditionalInstructions, PluginOrModInstruction, -} from "@/additional-instructions"; -import modpackAdditionalInstructions from "@/additional-instructions.json"; +} from "@/shared/types/additional-instructions"; +import modpackAdditionalInstructions from "@/shared/wildlander/additional-instructions.json"; import fs from "fs"; -import { BindingScope, injectable } from "@loopback/context"; -import { logger } from "@/main/logger"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { service } from "@loopback/core"; -import { ConfigService } from "@/main/services/config.service"; import { ProfileService } from "@/main/services/profile.service"; -import * as readline from "readline"; import * as os from "os"; -import { PathLike } from "fs-extra"; +import type { PathLike } from "fs-extra"; import { WabbajackService } from "@/main/services/wabbajack.service"; +import { Logger, LoggerBinding } from "@/main/logger"; @injectable({ scope: BindingScope.SINGLETON, }) export class InstructionService { constructor( - @service(ConfigService) private configService: ConfigService, @service(ProfileService) private profileService: ProfileService, - @service(WabbajackService) private wabbajackService: WabbajackService + @service(WabbajackService) private wabbajackService: WabbajackService, + @inject(LoggerBinding) private logger: Logger ) {} + private static checkTargetMatches( + instruction: PluginOrModInstruction, + target: string + ) { + return typeof instruction.target === "string" + ? instruction.target === target + : instruction.target.includes(target); + } + getInstructions(): AdditionalInstructions { return modpackAdditionalInstructions as AdditionalInstructions; } - async execute(instructions: AdditionalInstructions, target?: string) { + async execute( + instructions: AdditionalInstructions, + target?: string + ): Promise { const modpackVersion = await this.wabbajackService.getModpackVersion(); for (const instruction of instructions) { - logger.debug( + this.logger.debug( `Handling instruction ${JSON.stringify( instruction )} for modpack version ${modpackVersion}` @@ -110,20 +120,20 @@ export class InstructionService { plugin: string, state: "enable" | "disable" ): Promise { - logger.info(`Toggling plugin ${plugin} to state ${state}`); + this.logger.info(`Toggling plugin ${plugin} to state ${state}`); for (const pluginsFile of await this.getPluginFiles()) { - logger.debug(`Toggling plugin in ${pluginsFile}`); - const plugins = this.getPluginsFromFile(pluginsFile); + this.logger.debug(`Toggling plugin in ${pluginsFile}`); + const plugins = await this.readLinesFromFile(pluginsFile); const editedFile = []; for await (let currentPlugin of plugins) { - if (currentPlugin.replace("*", "") === plugin) { + if (currentPlugin.replace("*", "").trim() === plugin) { if (state === "disable" && currentPlugin.startsWith("*")) { - logger.debug(`Disabling plugin ${plugin}`); + this.logger.debug(`Disabling plugin ${plugin}`); currentPlugin = currentPlugin.replace("*", ""); } else if (state === "enable" && !currentPlugin.startsWith("*")) { - logger.debug(`Enabling plugin ${plugin}`); + this.logger.debug(`Enabling plugin ${plugin}`); currentPlugin = `*${currentPlugin}`; } } @@ -145,11 +155,11 @@ export class InstructionService { * Disabled mods have a - symbol, like this: -Wildlander FULL */ async toggleMod(mod: string, state: "enable" | "disable"): Promise { - logger.info(`Toggling mod ${mod} to state ${state}`); + this.logger.info(`Toggling mod ${mod} to state ${state}`); for (const modlistFile of await this.getModlistFiles()) { - logger.debug(`Toggling mod in ${modlistFile}`); - const mods = this.getModsFromFile(modlistFile); + this.logger.debug(`Toggling mod in ${modlistFile}`); + const mods = await this.readLinesFromFile(modlistFile); const editedFile = []; for await (let currentMod of mods) { @@ -158,10 +168,10 @@ export class InstructionService { currentMod.replace("-", "") === mod ) { if (state === "disable" && currentMod.startsWith("+")) { - logger.debug(`Disabling mod ${mod}`); + this.logger.debug(`Disabling mod ${mod}`); currentMod = currentMod.replace("+", "-"); } else if (state === "enable" && currentMod.startsWith("-")) { - logger.debug(`Enabling mod ${mod}`); + this.logger.debug(`Enabling mod ${mod}`); currentMod = currentMod.replace("-", "+"); } } @@ -184,18 +194,10 @@ export class InstructionService { ); } - getModsFromFile(modsFile: string) { - return readline.createInterface({ - input: fs.createReadStream(modsFile), - crlfDelay: Infinity, - }); - } - - getPluginsFromFile(pluginsFile: PathLike) { - return readline.createInterface({ - input: fs.createReadStream(pluginsFile), - crlfDelay: Infinity, - }); + async readLinesFromFile(file: PathLike) { + return (await fs.promises.readFile(file, { encoding: "utf-8" })).split( + os.EOL + ); } async getPluginFiles() { @@ -204,13 +206,4 @@ export class InstructionService { `${this.profileService.profileDirectory()}/${name}/plugins.txt` ); } - - private static checkTargetMatches( - instruction: PluginOrModInstruction, - target: string - ) { - return typeof instruction.target === "string" - ? instruction.target === target - : instruction.target.includes(target); - } } diff --git a/src/main/services/launcher.service.ts b/src/main/services/launcher.service.ts index 8bfe0180..95799a10 100644 --- a/src/main/services/launcher.service.ts +++ b/src/main/services/launcher.service.ts @@ -1,18 +1,17 @@ import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; import { service } from "@loopback/core"; -import { ModOrganizerService } from "@/main/services/modOrganizer.service"; import { ProfileService } from "@/main/services/profile.service"; import { EnbService } from "@/main/services/enb.service"; import { ConfigService } from "@/main/services/config.service"; import { ResolutionService } from "@/main/services/resolution.service"; import { ModpackService } from "@/main/services/modpack.service"; -import { BindingScope, injectable } from "@loopback/context"; -import { app } from "electron"; -import { logger } from "@/main/logger"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { ErrorService } from "@/main/services/error.service"; import { WindowService } from "@/main/services/window.service"; import { GraphicsService } from "@/main/services/graphics.service"; import { MigrationService } from "@/main/services/migration.service"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { VersionBinding } from "@/main/bindings/version.binding"; @injectable({ scope: BindingScope.SINGLETON, @@ -24,22 +23,22 @@ export class LauncherService { @service(ResolutionService) private resolutionService: ResolutionService, @service(ModpackService) private modpackService: ModpackService, @service(ProfileService) private profileService: ProfileService, - @service(ModOrganizerService) - private modOrganizerService: ModOrganizerService, @service(ErrorService) private errorService: ErrorService, @service(WindowService) private windowService: WindowService, @service(GraphicsService) private graphicsService: GraphicsService, - @service(MigrationService) private migrationService: MigrationService + @service(MigrationService) private migrationService: MigrationService, + @inject(LoggerBinding) private logger: Logger, + @inject(VersionBinding) private version: string ) {} async refreshModpack() { - logger.debug("Refreshing modpack"); + this.logger.debug("Refreshing modpack"); return this.setModpack(this.modpackService.getModpackDirectory()); } async setModpack(filepath: string) { try { - await this.configService.setPreference( + this.configService.setPreference( USER_PREFERENCE_KEYS.MOD_DIRECTORY, filepath ); @@ -56,7 +55,7 @@ export class LauncherService { ); } catch (error) { if (error instanceof Error && error.message.includes("EPERM")) { - await this.errorService.handleError( + this.errorService.handleError( "Permission error", ` The launcher has been unable to create/modify some files due to a permissions error. @@ -65,13 +64,13 @@ export class LauncherService { ); this.windowService.quit(); } else { - await this.errorService.handleUnknownError(error); + this.errorService.handleUnknownError(error); } } } async validateConfig() { - logger.debug("Validating config..."); + this.logger.debug("Validating config..."); await this.configService.setDefaultPreferences({ [USER_PREFERENCE_KEYS.ENB_PROFILE]: { value: await this.enbService.getDefaultPreference(), @@ -96,17 +95,17 @@ export class LauncherService { ), }, }); - logger.debug("Config validated"); + this.logger.debug("Config validated"); } async backupAssets() { - await this.enbService.backupOriginalENBs(); + await this.enbService.backupOriginalEnbs(); await this.profileService.backupOriginalProfiles(); await this.graphicsService.backupOriginalGraphics(); } getVersion() { - return app.getVersion(); + return this.version; } setCheckPrerequisites(value: boolean) { diff --git a/src/main/services/migration.service.ts b/src/main/services/migration.service.ts index 0c7bcb84..e5e67bcb 100644 --- a/src/main/services/migration.service.ts +++ b/src/main/services/migration.service.ts @@ -1,23 +1,24 @@ -import { service } from "@loopback/core"; +import { inject, service } from "@loopback/core"; import { GraphicsService } from "@/main/services/graphics.service"; -import { logger } from "@/main/logger"; import { ProfileService } from "@/main/services/profile.service"; import fs from "fs"; import path from "path"; import { ConfigService } from "@/main/services/config.service"; import { copy } from "fs-extra"; import { asyncFilter } from "@/shared/util/asyncFilter"; +import { Logger, LoggerBinding } from "@/main/logger"; export class MigrationService { + private standardProfileName = "0_Wildlander-STANDARD"; + private performanceProfileName = "0_Wildlander-PERFORMANCE"; + constructor( @service(GraphicsService) private graphicsService: GraphicsService, @service(ProfileService) private profileService: ProfileService, - @service(ConfigService) private configService: ConfigService + @service(ConfigService) private configService: ConfigService, + @inject(LoggerBinding) private logger: Logger ) {} - private standardProfileName = "0_Wildlander-STANDARD"; - private performanceProfileName = "0_Wildlander-PERFORMANCE"; - /** * Wildlander originally shipped with graphics settings in the profiles. * This makes maintenance of profiles that have the same modlists but different graphics difficult. @@ -30,48 +31,52 @@ export class MigrationService { this.standardProfileName }`; - const potatoProfilePath = `${this.profileService.profileDirectory()}/${ + const performanceProfilePath = `${this.profileService.profileDirectory()}/${ this.performanceProfileName }`; - logger.debug("Separate profile from graphics migration"); + this.logger.debug("Separate profile from graphics migration"); if (!(await this.graphicsService.graphicsExist())) { - logger.debug("Creating graphics presets from profiles"); + this.logger.debug("Creating graphics presets from profiles"); const profiles = await this.profileService.getProfileDirectories(); - logger.debug(`Creating ${this.graphicsService.graphicsMappingFile()}`); + this.logger.debug( + `Creating ${this.graphicsService.graphicsMappingFile()}` + ); await copy( this.profileService.profileMappingFile(), this.graphicsService.graphicsMappingPath() ); - logger.debug("Creating new standard profile"); + this.logger.debug("Creating new standard profile"); await this.createNewProfiles( standardProfilePath, - potatoProfilePath, + performanceProfilePath, profiles ); - logger.debug("Moving graphics out of profiles"); + this.logger.debug("Moving graphics out of profiles"); await this.moveGraphicsFromProfiles(profiles); - logger.debug("Create new mapped profile file"); + this.logger.debug("Create new mapped profile file"); await this.createMappedProfileFile(); - logger.debug("Select first profile so the old original one isn't reused"); - await this.profileService.setProfilePreference( - ( - await this.profileService.getProfiles() - )[0].real + this.logger.debug( + "Select first profile so the old original one isn't reused" ); - logger.debug( + this.profileService.setProfilePreference( + (await this.profileService.getProfiles())[0]!.real + ); + this.logger.debug( `New profile is ${await this.profileService.getProfilePreference()}` ); - logger.debug("Migration complete"); + this.logger.debug("Migration complete"); } else { - logger.debug("Graphics presets already exist, not performing migration"); + this.logger.debug( + "Graphics presets already exist, not performing migration" + ); } } @@ -82,7 +87,7 @@ export class MigrationService { ) { if (this.configService.backupsExist()) { // Create the new profiles from the backup taken when the launcher first ran - logger.debug( + this.logger.debug( "Create the new standard and performance profile from backup" ); const backedUpProfiles = @@ -91,18 +96,18 @@ export class MigrationService { backedUpProfiles.find((profile) => profile.toLowerCase().includes("potato") ) ?? backedUpProfiles[backedUpProfiles.length - 1]; - await copy(backedUpProfiles[0], standardProfilePath); - await copy(backedUpPerformanceProfile, performanceProfilePath); + await copy(backedUpProfiles[0]!, standardProfilePath); + await copy(backedUpPerformanceProfile!, performanceProfilePath); } else { // If there is no backup, just use the first one - logger.debug( + this.logger.debug( "Create the new standard profile from the first profile in the list because no backup exists" ); const performanceProfile = profiles.find((profile) => profile.toLowerCase().includes("potato")) ?? profiles[[profiles].length - 1]; - await copy(profiles[0], standardProfilePath); - await copy(performanceProfile, performanceProfilePath); + await copy(profiles[0]!, standardProfilePath); + await copy(performanceProfile!, performanceProfilePath); } } @@ -129,7 +134,7 @@ export class MigrationService { recursive: true, }); const dest = `${graphicsDirectory}/${path.basename(file)}`; - logger.debug(`Move ${file} to ${dest}`); + this.logger.debug(`Move ${file} to ${dest}`); await fs.promises.rename(file, dest); } diff --git a/src/main/services/modOrganizer.service.ts b/src/main/services/modOrganizer.service.ts index 0c5790f0..6ba9a255 100644 --- a/src/main/services/modOrganizer.service.ts +++ b/src/main/services/modOrganizer.service.ts @@ -1,30 +1,23 @@ import path from "path"; -import childProcess from "child_process"; -import { ConfigService, userPreferences } from "@/main/services/config.service"; -import psList from "ps-list"; -import { dialog } from "electron"; +import { ConfigService } from "@/main/services/config.service"; import fs from "fs"; -import { parse, stringify } from "js-ini"; -import { IIniObjectSection } from "js-ini/src/interfaces/ini-object-section"; -import { promisify } from "util"; -import { IIniObject } from "js-ini/lib/interfaces/ini-object"; +import { IIniObject, IIniObjectSection, parse, stringify } from "js-ini"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; -import { logger } from "@/main/logger"; import { EnbService } from "@/main/services/enb.service"; import { service } from "@loopback/core"; import { ErrorService } from "@/main/services/error.service"; -import { BindingScope, injectable } from "@loopback/context"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { ResolutionService } from "@/main/services/resolution.service"; import { GameService } from "@/main/services/game.service"; import { ProfileService } from "@/main/services/profile.service"; import { SystemService } from "@/main/services/system.service"; import { GraphicsService } from "@/main/services/graphics.service"; -import { ModOrganizerIni } from "@/ModOrganizer.ini"; - -export const enum MO2Names { - MO2EXE = "ModOrganizer.exe", - MO2Settings = "ModOrganizer.ini", -} +import type { ModOrganizerIni } from "@/shared/types/ModOrganizer.ini"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { MO2_NAMES } from "@/shared/enums/mo2"; +import type { ProcessDescriptor } from "ps-list"; +import { Dialog, DialogProvider } from "@/main/services/dialog.service"; +import { IsDevelopmentBinding } from "@/main/bindings/isDevelopment.binding"; @injectable({ scope: BindingScope.SINGLETON, @@ -40,33 +33,38 @@ export class ModOrganizerService { @service(GameService) private gameService: GameService, @service(ProfileService) private profileService: ProfileService, @service(SystemService) private systemService: SystemService, - @service(GraphicsService) private graphicsService: GraphicsService + @service(GraphicsService) private graphicsService: GraphicsService, + @service(DialogProvider) private dialog: Dialog, + @inject(LoggerBinding) private logger: Logger, + @inject(IsDevelopmentBinding) private isDevelopment: boolean ) {} - private static filterMO2(process: psList.ProcessDescriptor) { - return process.name === MO2Names.MO2EXE; + private static filterMO2(process: ProcessDescriptor) { + return process.name === MO2_NAMES.MO2EXE; } async isRunning() { - return this.systemService.isProcessRunning(MO2Names.MO2EXE); + return this.systemService.isProcessRunning(MO2_NAMES.MO2EXE); } async closeMO2() { - logger.info("Killing MO2 forcefully"); - (await psList()) + this.logger.info("Killing MO2 forcefully"); + (await this.systemService.listProcesses()) .filter(ModOrganizerService.filterMO2) .forEach((mo2Instance) => { - logger.debug(`Found process to kill: ${JSON.stringify(mo2Instance)}`); - process.kill(mo2Instance.pid); + this.logger.debug( + `Found process to kill: ${JSON.stringify(mo2Instance)}` + ); + this.systemService.kill(mo2Instance.pid); }); - logger.info("Killed all MO2 processes"); + this.logger.info("Killed all MO2 processes"); } async handleMO2Running(): Promise { - logger.info( + this.logger.info( "MO2 already running. Giving user option to cancel or continue" ); - const buttonSelectionIndex = await dialog.showMessageBox({ + const buttonSelectionIndex = await this.dialog.showMessageBox({ title: "Mod Organizer running", message: "Mod Organizer 2 is already running. This could launch the wrong mod list. Would you like to close it first?", @@ -83,7 +81,7 @@ export class ModOrganizerService { async readSettings() { return parse( await fs.promises.readFile( - `${this.configService.modDirectory()}/${MO2Names.MO2Settings}`, + `${this.configService.modDirectory()}/${MO2_NAMES.MO2Settings}`, "utf-8" ) ) as ModOrganizerIni; @@ -95,7 +93,7 @@ export class ModOrganizerService { } async updateSelectedProfile(profile: string) { - logger.info(`Updating selected profile to ${profile}`); + this.logger.info(`Updating selected profile to ${profile}`); const settings = await this.readSettings(); (settings.General as IIniObjectSection)[ @@ -103,13 +101,15 @@ export class ModOrganizerService { ] = `@ByteArray(${profile})`; await fs.promises.writeFile( - `${this.configService.modDirectory()}/${MO2Names.MO2Settings}`, + `${this.configService.modDirectory()}/${MO2_NAMES.MO2Settings}`, stringify(settings) ); + + this.logger.info(`Updated selected profile to ${profile}`); } async preventMO2GUIFromShowing() { - logger.info(`Preventing the MO2 GUI from showing`); + this.logger.info(`Preventing the MO2 GUI from showing`); const settings = await this.readSettings(); // Copy the object so changes don't mutate it this.previousMO2Settings = JSON.parse( @@ -119,22 +119,22 @@ export class ModOrganizerService { (settings.Settings as IIniObjectSection)["lock_gui"] = false; await fs.promises.writeFile( - `${this.configService.modDirectory()}/${MO2Names.MO2Settings}`, + `${this.configService.modDirectory()}/${MO2_NAMES.MO2Settings}`, stringify(settings) ); } async restoreMO2Settings() { - logger.info("Restoring MO2 settings"); + this.logger.info("Restoring MO2 settings"); // If we have some previous settings saved, restore them if (this.previousMO2Settings) { await fs.promises.writeFile( - `${this.configService.modDirectory()}/${MO2Names.MO2Settings}`, + `${this.configService.modDirectory()}/${MO2_NAMES.MO2Settings}`, stringify(this.previousMO2Settings) ); this.previousMO2Settings = null; } - logger.info("Finished restoring MO2 settings"); + this.logger.info("Finished restoring MO2 settings"); } /** @@ -145,22 +145,24 @@ export class ModOrganizerService { if (await this.isRunning()) { const continueLaunching = await this.handleMO2Running(); if (!continueLaunching) { - logger.info("MO2 already running, user chose to abort"); + this.logger.info("MO2 already running, user chose to abort"); return false; } } await this.resolutionService.setResolutionInGraphicsSettings(); - logger.debug( - `User configuration: ${JSON.stringify(userPreferences.store)}` + this.logger.debug( + `User configuration: ${JSON.stringify( + this.configService.getPreferences().store + )}` ); return true; } async launchMO2() { - logger.info("Preparing MO2 for launch"); + this.logger.info("Preparing MO2 for launch"); try { const continueLaunch = await this.prepareForLaunch(); @@ -168,7 +170,7 @@ export class ModOrganizerService { return; } - logger.info("Launching MO2"); + this.logger.info("Launching MO2"); // MO2 will not respect the profile set in the launcher until the config is edited await this.updateSelectedProfile( @@ -176,21 +178,25 @@ export class ModOrganizerService { ); const MO2Path = path.join( - userPreferences.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY), - MO2Names.MO2EXE + this.configService.getPreference(USER_PREFERENCE_KEYS.MOD_DIRECTORY), + MO2_NAMES.MO2EXE ); - const { stderr } = await promisify(childProcess.exec)(`"${MO2Path}"`); + + const { stdout, stderr } = await this.systemService.exec(`"${MO2Path}"`); + if (this.isDevelopment) { + this.logger.debug(`MO2 stdout: ${stdout}`); + } if (stderr) { - logger.error(`Error while executing ModOrganizer - ${stderr}`); + this.logger.error(`Error while executing ModOrganizer - ${stderr}`); } } catch (error) { - logger.error(`Error while opening MO2 - ${error}`); + this.logger.error(`Error while opening MO2 - ${error}`); throw error; } } async launchGame() { - logger.info("Preparing to launch game"); + this.logger.info("Preparing to launch game"); try { const continueLaunch = await this.prepareForLaunch(); @@ -200,41 +206,43 @@ export class ModOrganizerService { await this.preventMO2GUIFromShowing(); - logger.info("Launching game"); + this.logger.info("Launching game"); const MO2Path = path.join( - userPreferences.get(USER_PREFERENCE_KEYS.MOD_DIRECTORY), - MO2Names.MO2EXE + this.configService.modDirectory(), + MO2_NAMES.MO2EXE ); - const profile = userPreferences.get(USER_PREFERENCE_KEYS.PRESET); + const profile = await this.profileService.getProfilePreference(); const mo2Command = `"${MO2Path}" -p "${profile}" "moshortcut://:${await this.getFirstCustomExecutableTitle()}"`; - logger.debug(`Executing MO2 command: ${mo2Command}`); + this.logger.debug(`Executing MO2 command: ${mo2Command}`); - const { stderr } = await promisify(childProcess.exec)(mo2Command); - await this.postLaunch(); + const { stdout, stderr } = await this.systemService.exec(mo2Command); + if (this.isDevelopment) { + this.logger.debug(`MO2 stdout: ${stdout}`); + } if (stderr) { - await this.errorService.handleError( - "Error launching game", - `${stderr}` - ); + // noinspection ExceptionCaughtLocallyJS + throw new Error(stderr); } + await this.postLaunch(); } catch (error) { await this.postLaunch(); - await this.errorService.handleError("Error launching game", `${error}`); + this.errorService.handleError("Error launching game", `${error}`); + throw error; } } async postLaunch() { - logger.info("MO2 exited, starting post launch actions"); + this.logger.info("MO2 exited, starting post launch actions"); await this.gameService.copySkyrimLaunchLogs(); await this.restoreMO2Settings(); - await this.enbService.syncENBFromGameToPresets( - userPreferences.get(USER_PREFERENCE_KEYS.ENB_PROFILE) + await this.enbService.syncEnbFromGameToPresets( + this.configService.getPreference(USER_PREFERENCE_KEYS.ENB_PROFILE) ); await this.graphicsService.syncGraphicsFromGameToPresets( - userPreferences.get(USER_PREFERENCE_KEYS.GRAPHICS), - userPreferences.get(USER_PREFERENCE_KEYS.PRESET) + this.configService.getPreference(USER_PREFERENCE_KEYS.GRAPHICS), + this.configService.getPreference(USER_PREFERENCE_KEYS.PRESET) ); } } diff --git a/src/main/services/modpack.service.ts b/src/main/services/modpack.service.ts index 43f10a10..4eab3450 100644 --- a/src/main/services/modpack.service.ts +++ b/src/main/services/modpack.service.ts @@ -1,25 +1,28 @@ import fs from "fs"; -import { logger } from "@/main/logger"; -import { MO2Names } from "@/main/services/modOrganizer.service"; -import { BindingScope, injectable } from "@loopback/context"; -import modpack from "@/modpack.json"; -import { IsModpackValidResponse } from "@/main/controllers/modpack/mopack.events"; -import { Modpack } from "@/modpack-metadata"; +import { BindingScope, inject, injectable } from "@loopback/context"; +import { WildlanderModpack } from "@/shared/wildlander/modpack"; +import type { IsModpackValidResponse } from "@/main/controllers/modpack/mopack.events"; +import type { Modpack } from "@/shared/types/modpack-metadata"; import { service } from "@loopback/core"; import { ConfigService } from "@/main/services/config.service"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { MO2_NAMES } from "@/shared/enums/mo2"; @injectable({ scope: BindingScope.SINGLETON, }) export class ModpackService { - constructor(@service(ConfigService) private configService: ConfigService) {} + constructor( + @service(ConfigService) private configService: ConfigService, + @inject(LoggerBinding) private logger: Logger + ) {} checkModpackPathIsValid(modpackPath: string): IsModpackValidResponse { - const missingPaths = [MO2Names.MO2EXE, "profiles", "launcher"] + const missingPaths = [MO2_NAMES.MO2EXE, "profiles", "launcher"] .filter((path) => !fs.existsSync(`${modpackPath}/${path}`)) .map((path) => { - logger.warn( + this.logger.warn( `Selected mod directory "${modpackPath}" doesn't contain a "${path}" directory/file` ); return path; @@ -42,7 +45,7 @@ export class ModpackService { } getModpackMetadata(): Modpack { - return modpack; + return WildlanderModpack; } deleteModpackDirectory() { diff --git a/src/main/services/profile.service.ts b/src/main/services/profile.service.ts index de037610..5d4597c1 100644 --- a/src/main/services/profile.service.ts +++ b/src/main/services/profile.service.ts @@ -1,14 +1,17 @@ import { ConfigService } from "@/main/services/config.service"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; -import { FriendlyDirectoryMap } from "@/modpack-metadata"; +import type { FriendlyDirectoryMap } from "@/shared/types/modpack-metadata"; import fs from "fs"; import { not as isNotJunk } from "junk"; -import { logger } from "@/main/logger"; import { copy, existsSync } from "fs-extra"; -import { service } from "@loopback/core"; +import { inject, service } from "@loopback/core"; +import { Logger, LoggerBinding } from "@/main/logger"; export class ProfileService { - constructor(@service(ConfigService) private configService: ConfigService) {} + constructor( + @service(ConfigService) private configService: ConfigService, + @inject(LoggerBinding) private logger: Logger + ) {} profileDirectory() { return `${this.configService.modDirectory()}/profiles`; @@ -109,7 +112,12 @@ export class ProfileService { } async getDefaultPreference() { - return (await this.getPhysicalProfiles())[0].name; + return ( + (await this.getPhysicalProfiles())[0]?.name ?? + (() => { + throw new Error("No physical profiles found"); + })() + ); } setProfilePreference(profile: string) { @@ -129,10 +137,10 @@ export class ProfileService { async backupOriginalProfiles() { const backupExists = existsSync(this.profileBackupDirectory()); - logger.debug(`Backup for profiles exists: ${backupExists}`); + this.logger.debug(`Backup for profiles exists: ${backupExists}`); if (!backupExists) { - logger.info("No profiles backup exists. Backing up..."); + this.logger.info("No profiles backup exists. Backing up..."); await fs.promises.mkdir(this.configService.backupDirectory(), { recursive: true, }); @@ -142,7 +150,7 @@ export class ProfileService { } async restoreProfiles() { - logger.info("Restoring MO2 profiles"); + this.logger.info("Restoring MO2 profiles"); await copy(this.profileBackupDirectory(), this.profileDirectory(), { overwrite: true, }); diff --git a/src/main/services/resolution.service.ts b/src/main/services/resolution.service.ts index a7684703..2abaf857 100644 --- a/src/main/services/resolution.service.ts +++ b/src/main/services/resolution.service.ts @@ -1,22 +1,22 @@ import * as os from "os"; import { promisify } from "util"; -import childProcess from "child_process"; -import { - ConfigService, - isDevelopment, - userPreferences, -} from "@/main/services/config.service"; -import { parse, stringify } from "js-ini"; +import { ConfigService } from "@/main/services/config.service"; +import { IIniObjectSection, parse, stringify } from "js-ini"; import fs from "fs"; -import { IIniObjectSection } from "js-ini/src/interfaces/ini-object-section"; -import { screen } from "electron"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; -import { Resolution } from "@/Resolution"; -import { logger } from "@/main/logger"; -import { BindingScope, injectable } from "@loopback/context"; +import type { Resolution } from "@/shared/types/Resolution"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { service } from "@loopback/core"; -import { name as modpackName } from "@/modpack.json"; +import { WildlanderModpack } from "@/shared/wildlander/modpack"; import { InstructionService } from "@/main/services/instruction.service"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { IsDevelopmentBinding } from "@/main/bindings/isDevelopment.binding"; +import { ElectronBinding } from "@/main/bindings/electron.binding"; +import type Electron from "electron"; +import { + ChildProcess, + ChildProcessBinding, +} from "@/main/bindings/child-process.binding"; @injectable({ scope: BindingScope.SINGLETON, @@ -24,56 +24,62 @@ import { InstructionService } from "@/main/services/instruction.service"; export class ResolutionService { private resolutionsCache!: Resolution[]; private ultraWidescreenDisabled: boolean | undefined; + private supportedRatios = [ + { + key: "16:9", + value: 16 / 9, + }, + { + key: "21:9", + value: 21 / 9, + }, + { + key: "32:9", + value: 32 / 9, + }, + ]; constructor( @service(ConfigService) private configService: ConfigService, @service(InstructionService) - private instructionsService: InstructionService + private instructionsService: InstructionService, + @inject(LoggerBinding) private logger: Logger, + @inject(IsDevelopmentBinding) private isDevelopment: boolean, + @inject(ElectronBinding) private electron: typeof Electron, + @inject(ChildProcessBinding) private childProcess: ChildProcess ) {} - getResourcePath() { - return isDevelopment + public getResourcePath() { + return this.isDevelopment ? `${process.cwd()}/src/assets` : process.resourcesPath; } - isUltraWidescreen({ width, height }: Resolution) { + public isUltraWidescreen({ width, height }: Resolution) { // Anything above this is an ultra widescreen resolution. // Most 16:9 resolutions are 1.7777777777777777. // There are some legacy resolutions that aren't quite 16:9. return width / height > 1.78; } - getSupportedRatios() { - return [ - { - key: "16:9", - value: 16 / 9, - }, - { - key: "21:9", - value: 21 / 9, - }, - { - key: "32:9", - value: 32 / 9, - }, - ]; - } - - getClosestSupportedRatio({ width, height }: Resolution) { - const supportedRatios = this.getSupportedRatios(); + public getClosestSupportedRatio({ + width, + height, + }: Resolution): string | undefined { const ratio = width / height; - const closestValue = supportedRatios - .map((x) => x.value) - .reduce((prev, curr) => - Math.abs(curr - ratio) < Math.abs(prev - ratio) ? curr : prev - ); - const closestRatio = supportedRatios.find( + const closestValue = this.supportedRatios.reduce((prev, curr) => + Math.abs(curr.value - ratio) < Math.abs(prev.value - ratio) ? curr : prev + ).value; + + const closestRatio = this.supportedRatios.find( (x) => x.value === closestValue )?.key; - logger.debug(`Found closest ratio for ${width}x${height}: ${closestRatio}`); + + this.logger.debug( + `Found closest ratio for ${width}x${height}: ${closestRatio}` + ); + return closestRatio; } @@ -83,35 +89,33 @@ export class ResolutionService { .filter((x) => x.action === "disable-ultra-widescreen"); this.ultraWidescreenDisabled = (await this.instructionsService.execute(instructions)) ?? false; - logger.debug(`Ultra-widescreen disabled: ${this.ultraWidescreenDisabled}`); + this.logger.debug( + `Ultra-widescreen disabled: ${this.ultraWidescreenDisabled}` + ); } - async isUnsupportedResolution(resolution: Resolution) { + public async isUnsupportedResolution(resolution: Resolution) { return this.ultraWidescreenDisabled && this.isUltraWidescreen(resolution); } - getCurrentResolution(): Resolution { + public getCurrentResolution(): Resolution { const { size: { height, width }, scaleFactor, - } = screen.getPrimaryDisplay(); + } = this.electron.screen.getPrimaryDisplay(); return { width: width * scaleFactor, height: height * scaleFactor, }; } - getResolutionPreference() { + public getResolutionPreference() { return this.configService.getPreference( USER_PREFERENCE_KEYS.RESOLUTION ); } - hasResolutionPreference() { - return this.configService.hasPreference(USER_PREFERENCE_KEYS.RESOLUTION); - } - - async setResolution(resolution: Resolution) { + public async setResolution(resolution: Resolution) { this.configService.setPreference( USER_PREFERENCE_KEYS.RESOLUTION, resolution @@ -120,66 +124,84 @@ export class ResolutionService { return this.postSetResolution(resolution); } - postSetResolution(resolution: Resolution) { - const resolutionInstructions = this.getResolutionInstructions(); - const closestRatio = this.getClosestSupportedRatio(resolution); - return this.instructionsService.execute( - resolutionInstructions, - closestRatio - ); - } + public async getSupportedResolutions() { + const currentResolution = this.getCurrentResolution(); - getResolutionInstructions() { - return this.instructionsService - .getInstructions() - .filter((instruction) => instruction.type === "resolution-ratio"); - } + let resolutionOutput: string; - async getSupportedResolutions() { - const { stdout: resolutionOutput, stderr } = await promisify( - childProcess.exec - )(`"${this.getResourcePath()}/tools/QRes.exe" /L`); - if (stderr) { - logger.error(`Error getting resolutions ${stderr}`); - throw new Error(stderr); + // The application is only supported on Windows machines. + // However, development is supported on other OSs so just return the current resolution and some test resolutions. + if (os.platform() !== "win32" || process.env["IS_TEST"] === "true") { + resolutionOutput = [ + // The first 2 items of the real output contains version and copyright information + { width: 0, height: 0 }, + { width: 0, height: 0 }, + currentResolution, + { width: 7680, height: 4320 }, // 16:9 + { width: 3840, height: 1080 }, // Ultra widescreen (32:9) + { width: 3440, height: 1440 }, // Ultra widescreen (21:9) + { width: 1920, height: 1080 }, // 16:9 + { width: 1280, height: 800 }, // 16:10 + ] + .map((resolution) => `${resolution.width}x${resolution.height}`) + .join(os.EOL); + } else { + const { stdout, stderr } = await promisify(this.childProcess.exec)( + `"${this.getResourcePath()}/tools/QRes.exe" /L` + ); + + resolutionOutput = stdout; + + if (stderr) { + this.logger.error(`Error getting resolutions ${stderr}`); + throw new Error(stderr); + } } - return ( - resolutionOutput - /** - * QRes.exe outputs resolutions in the format: - * 640x480, 32 bits @ 60 Hz. - * 720x480, 32 bits @ 60 Hz. - */ - .split(/\r*\n/) - // The first 2 items in the array will contain copyright and version information - .slice(2) - // Remove empty entries - .filter((resolution) => resolution !== "") - // Only save the resolution - .map((resolution) => resolution.split(",")[0]) - ); + return [ + ...new Set( + resolutionOutput + /** + * QRes.exe outputs resolutions in the format: + * 640x480, 32 bits @ 60 Hz. + * 720x480, 32 bits @ 60 Hz. + */ + .split(/\r*\n/) + // The first 2 items in the array will contain copyright and version information + .slice(2) + // Remove empty entries + .filter((resolution) => resolution !== "") + // Only save the resolution + .map((resolution) => resolution.split(",")[0] as string) + ), + ].map((resolution) => ({ + width: Number(resolution.split("x")[0]), + height: Number(resolution.split("x")[1]), + })); } - sortResolutions(resolution: Resolution, previousResolution: Resolution) { + public sortResolutions( + resolution: Resolution, + previousResolution: Resolution + ) { return ( previousResolution.width - resolution.width || previousResolution.height - resolution.height ); } - resolutionsContain(resolutions: Resolution[], resolution: Resolution) { + public resolutionsContain(resolutions: Resolution[], resolution: Resolution) { return resolutions.some( ({ width, height }) => resolution.height === height && resolution.width === width ); } - async getResolutions(): Promise { - logger.debug("Getting resolutions"); + public async getResolutions(): Promise { + this.logger.debug("Getting resolutions"); if (this.resolutionsCache) { - logger.debug( + this.logger.debug( `Resolutions cached ${JSON.stringify(this.resolutionsCache)}` ); return this.resolutionsCache; @@ -187,71 +209,46 @@ export class ResolutionService { const currentResolution = this.getCurrentResolution(); - // The application is only supported on Windows machines. - // However, development is supported on other OSs so just return the current resolution - // Also, return an ultrawide resolution for testing - if (os.platform() !== "win32") { - return [ - { width: 7680, height: 4320 }, // 16:9 - currentResolution, - { width: 3840, height: 1080 }, // Ultra widescreen (32:9) - { width: 3440, height: 1440 }, // Ultra widescreen (21:9) - { width: 1920, height: 1080 }, // 16:9 - { width: 1280, height: 800 }, // 16:10 - ]; - } else { - const resolutions = [...new Set(await this.getSupportedResolutions())] - // Format the QRes output - .map((resolution) => ({ - width: Number(resolution.split("x")[0]), - height: Number(resolution.split("x")[1]), - })); - - logger.debug(`Supported resolutions: ${JSON.stringify(resolutions)}`); - - // Sometimes, QRes.exe cannot recognise some resolutions. - // As a safety measure, add the users current resolution if it wasn't detected. - if (!this.resolutionsContain(resolutions, currentResolution)) { - logger.debug( - `Native resolution (${JSON.stringify( - currentResolution - )}) not found. Adding to the list.` - ); - resolutions.push(currentResolution); - } + const resolutions = await this.getSupportedResolutions(); - // If a user has manually edited the preferences, add that resolution too - if ( - this.hasResolutionPreference() && - !this.resolutionsContain(resolutions, this.getResolutionPreference()) - ) { - resolutions.push(this.getResolutionPreference()); - } + this.logger.debug(`Supported resolutions: ${JSON.stringify(resolutions)}`); - const sortedResolutions = resolutions.sort(this.sortResolutions); - - logger.debug( - `Resolutions: ${sortedResolutions.map( - ({ width, height }) => `${width}x${height}` - )}` + // Sometimes, QRes.exe cannot recognise some resolutions. + // As a safety measure, add the users current resolution if it wasn't detected. + if (!this.resolutionsContain(resolutions, currentResolution)) { + this.logger.debug( + `Native resolution (${JSON.stringify( + currentResolution + )}) not found. Adding to the list.` ); + resolutions.push(currentResolution); + } - // Add resolutions to a cache to computing them later - this.resolutionsCache = sortedResolutions; - - return sortedResolutions; + // If a user has manually edited the preferences, add that resolution too + if ( + this.hasResolutionPreference() && + !this.resolutionsContain(resolutions, this.getResolutionPreference()) + ) { + resolutions.push(this.getResolutionPreference()); } - } - skyrimGraphicsSettingsPath() { - return `${this.configService.getPreference( - USER_PREFERENCE_KEYS.MOD_DIRECTORY - )}/mods/${modpackName}/SKSE/Plugins/SSEDisplayTweaks.ini`; + const sortedResolutions = resolutions.sort(this.sortResolutions); + + this.logger.debug( + `Resolutions: ${sortedResolutions.map( + ({ width, height }) => `${width}x${height}` + )}` + ); + + // Add resolutions to a cache to save computing them later + this.resolutionsCache = sortedResolutions; + + return sortedResolutions; } /** * Borderless upscale will need to be toggled depending on if the user is using an ultra-widescreen monitor. - * Without upscale, users on ultra-widescreen but using a smaller resolution will get stretching + * Without upscale, users on ultra-widescreen using a smaller resolution will get stretching * User has non-ultra-widescreen monitor resolution and selects non-ultra-widescreen resolution - Enable upscale * User has non-ultra-widescreen monitor resolution and selects ultra-widescreen resolution - Disable upscale * User has ultra-widescreen and selects non-ultra-widescreen resolution - Disable upscale @@ -262,47 +259,71 @@ export class ResolutionService { const monitorIsUltraWidescreen = this.isUltraWidescreen({ width, height }); const preferenceIsUltraWidescreen = this.isUltraWidescreen(resolution); - let borderlessUpscale; - if (!monitorIsUltraWidescreen && !preferenceIsUltraWidescreen) { - borderlessUpscale = true; - } else if (!monitorIsUltraWidescreen && preferenceIsUltraWidescreen) { - borderlessUpscale = false; - } else { + let borderlessUpscale = + !monitorIsUltraWidescreen && !preferenceIsUltraWidescreen; + if (monitorIsUltraWidescreen) { borderlessUpscale = !( monitorIsUltraWidescreen && !preferenceIsUltraWidescreen ); } - logger.info( - `Setting borderless upscale for ${width}x${height}: ${borderlessUpscale}` + this.logger.info( + `Setting borderless upscale for screen resolution ${width}x${height} and selected resolution ${resolution.width}x${resolution.height}: ${borderlessUpscale}` ); return borderlessUpscale; } - async setResolutionInGraphicsSettings() { - const { width, height } = userPreferences.get( + public async setResolutionInGraphicsSettings() { + const { width, height } = this.configService.getPreference( USER_PREFERENCE_KEYS.RESOLUTION ) as Resolution; - logger.info( + this.logger.info( `Setting resolution in ${this.skyrimGraphicsSettingsPath()} to ${width} x ${height}` ); + const SkyrimGraphicSettings = parse( await fs.promises.readFile(this.skyrimGraphicsSettingsPath(), "utf-8"), { comment: "#" } ) as IIniObjectSection; - ( - SkyrimGraphicSettings.Render as IIniObjectSection - ).Resolution = `${width}x${height}`; + (SkyrimGraphicSettings["Render"] as IIniObjectSection)[ + "Resolution" + ] = `${width}x${height}`; // If the selected resolution is ultra-widescreen, don't upscale the image otherwise it gets stretched - (SkyrimGraphicSettings.Render as IIniObjectSection).BorderlessUpscale = - this.shouldEnableBorderlessUpscale({ width, height }); + (SkyrimGraphicSettings["Render"] as IIniObjectSection)[ + "BorderlessUpscale" + ] = this.shouldEnableBorderlessUpscale({ width, height }); await fs.promises.writeFile( this.skyrimGraphicsSettingsPath(), - stringify(SkyrimGraphicSettings) + stringify(SkyrimGraphicSettings).trim() ); } + + private hasResolutionPreference() { + return this.configService.hasPreference(USER_PREFERENCE_KEYS.RESOLUTION); + } + + private postSetResolution(resolution: Resolution) { + const resolutionInstructions = this.getResolutionInstructions(); + const closestRatio = this.getClosestSupportedRatio(resolution); + return this.instructionsService.execute( + resolutionInstructions, + closestRatio + ); + } + + private getResolutionInstructions() { + return this.instructionsService + .getInstructions() + .filter((instruction) => instruction.type === "resolution-ratio"); + } + + private skyrimGraphicsSettingsPath() { + return `${this.configService.getPreference( + USER_PREFERENCE_KEYS.MOD_DIRECTORY + )}/mods/${WildlanderModpack.name}/SKSE/Plugins/SSEDisplayTweaks.ini`; + } } diff --git a/src/main/services/startup.service.ts b/src/main/services/startup.service.ts index 3d691140..ea5d28f5 100644 --- a/src/main/services/startup.service.ts +++ b/src/main/services/startup.service.ts @@ -1,10 +1,9 @@ -import { BindingScope, injectable } from "@loopback/context"; -import { logger } from "@/main/logger"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { service } from "@loopback/core"; -import { app } from "electron"; -import { ConfigService } from "@/main/services/config.service"; +import type Electron from "electron"; import { ModpackService } from "@/main/services/modpack.service"; import { LauncherService } from "@/main/services/launcher.service"; +import * as os from "os"; import { platform, type, version } from "os"; import { WabbajackService } from "@/main/services/wabbajack.service"; import { ResolutionService } from "@/main/services/resolution.service"; @@ -12,6 +11,8 @@ import { UpdateService } from "@/main/services/update.service"; import { BlacklistService } from "@/main/services/blacklist.service"; import { ErrorService } from "@/main/services/error.service"; import { WindowService } from "@/main/services/window.service"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { ElectronBinding } from "@/main/bindings/electron.binding"; interface StartupCommand { // Only needed if the command is being filtered @@ -22,6 +23,14 @@ interface StartupCommand { requiresModpack?: boolean; } +export const enum COMMAND_IDS { + STARTUP_LOGS = "STARTUP_LOGS", + PROCESS_BLACKLIST = "PROCESS_BLACKLIST", + CHECK_MODPACK_PATH = "CHECK_MODPACK_PATH", + UPDATE = "UPDATE", + REFRESH_MODPACK = "REFRESH_MODPACK", +} + @injectable({ scope: BindingScope.SINGLETON, }) @@ -31,50 +40,56 @@ export class StartupService { constructor( @service(ModpackService) private modpackService: ModpackService, @service(LauncherService) private launcherService: LauncherService, - @service(ConfigService) private configService: ConfigService, @service(WabbajackService) private wabbajackService: WabbajackService, @service(ResolutionService) private resolutionService: ResolutionService, @service(UpdateService) private updateService: UpdateService, @service(BlacklistService) private blacklistService: BlacklistService, @service(ErrorService) private errorService: ErrorService, - @service(WindowService) private windowService: WindowService + @service(WindowService) private windowService: WindowService, + @inject(ElectronBinding) private electron: typeof Electron, + @inject(LoggerBinding) private logger: Logger ) {} - public registerStartupCommands(filter?: string) { + public registerStartupCommands(filter?: COMMAND_IDS) { this.startupCommands = [ { + id: COMMAND_IDS.STARTUP_LOGS, name: "Startup logs", execute: async () => { - logger.debug(` - --- Startup debug logs --- - OS: ${type()} ${platform()} ${version()} - Modpack version: ${await this.wabbajackService.getModpackVersion()} - Launcher version: ${app.getVersion()} - Modpack path: ${this.modpackService.getModpackDirectory()} - Current screen resolution: ${JSON.stringify( - this.resolutionService.getCurrentResolution() - )} - `); + this.logger.debug( + [ + "--- Startup debug logs ---", + `OS: ${type()} ${platform()} ${version()}`, + `Modpack version: ${await this.wabbajackService.getModpackVersion()}`, + `Launcher version: ${this.electron.app.getVersion()}`, + `Modpack path: ${this.modpackService.getModpackDirectory()}`, + `Current screen resolution: ${JSON.stringify( + this.resolutionService.getCurrentResolution() + )}`, + "--- End startup debug logs ---", + ].join(os.EOL) + ); }, }, { + id: COMMAND_IDS.UPDATE, name: "Auto update", - execute: async () => await this.updateService.update(), + execute: async () => this.updateService.update(), }, { - id: "processBlacklist", + id: COMMAND_IDS.PROCESS_BLACKLIST, name: "Check if blacklisted process is running", execute: async () => { const runningBlacklistedProcesses = await this.blacklistService.blacklistedProcessesRunning(); - if (runningBlacklistedProcesses.length > 0) { + if (runningBlacklistedProcesses[0]) { // Throw an error and don't continue until the process has been closed - logger.debug( + this.logger.debug( `Blacklisted process running ${JSON.stringify( runningBlacklistedProcesses )}` ); - await this.errorService.handleError( + this.errorService.handleError( "Incompatible program running", ` Please note that ${runningBlacklistedProcesses[0].name} is incompatible with the modpack/launcher. @@ -86,11 +101,12 @@ export class StartupService { }, }, { + id: COMMAND_IDS.CHECK_MODPACK_PATH, name: "Check for invalid modpack preference", execute: () => { if (!this.modpackService.checkCurrentModpackPathIsValid()) { const modpackDirectory = this.modpackService.getModpackDirectory(); - logger.error( + this.logger.error( `Current selected modpack (${modpackDirectory}) is invalid. Removing so the user can select a valid one.` ); this.modpackService.deleteModpackDirectory(); @@ -99,7 +115,8 @@ export class StartupService { requiresModpack: true, }, { - name: "Select modpack", + id: COMMAND_IDS.REFRESH_MODPACK, + name: "Refresh modpack selection", execute: () => this.launcherService.refreshModpack(), requiresModpack: true, }, @@ -112,15 +129,19 @@ export class StartupService { } } + public getStartupCommands() { + return this.startupCommands; + } + public async runStartup() { for (const command of this.startupCommands) { if ( (command.requiresModpack && this.modpackService.isModpackSet()) || !command.requiresModpack ) { - logger.debug(`Running startup command: ${command.name}`); + this.logger.debug(`Running startup command: ${command.name}`); await command.execute(); - logger.debug(`Command "${command.name}" completed`); + this.logger.debug(`Command "${command.name}" completed`); } } } diff --git a/src/main/services/system.service.ts b/src/main/services/system.service.ts index 91dc0d1f..42fec98a 100644 --- a/src/main/services/system.service.ts +++ b/src/main/services/system.service.ts @@ -1,20 +1,27 @@ import path from "path"; -import { BindingScope, injectable } from "@loopback/context"; -import { shell, app } from "electron"; -import { logger } from "@/main/logger"; +import { BindingScope, inject, injectable } from "@loopback/context"; import fs, { createWriteStream } from "fs"; -import { service } from "@loopback/core"; +import { Context, service } from "@loopback/core"; import { ConfigService } from "@/main/services/config.service"; import { ErrorService } from "@/main/services/error.service"; -import log from "electron-log"; import { pipeline } from "stream/promises"; import fetch from "node-fetch"; import { promisify } from "util"; -import childProcess from "child_process"; import { reboot } from "electron-shutdown-command"; import { getAllInstalledSoftware } from "fetch-installed-software"; -import psList from "ps-list"; import { USER_PREFERENCE_KEYS } from "@/shared/enums/userPreferenceKeys"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { ElectronBinding } from "@/main/bindings/electron.binding"; +import { + ChildProcess, + ChildProcessBinding, +} from "@/main/bindings/child-process.binding"; +import { type PSList, PsListBinding } from "@/main/bindings/psList.binding"; +import { + ProcessKill, + ProcessKillBinding, +} from "@/main/bindings/process-kill.binding"; +import * as os from "node:os"; @injectable({ scope: BindingScope.SINGLETON, @@ -23,30 +30,32 @@ export class SystemService { constructor( @service(ConfigService) private configService: ConfigService, @service(ErrorService) private errorService: ErrorService, - private listProcesses = psList + @inject(LoggerBinding) private logger: Logger, + @inject(ElectronBinding) private electron: typeof Electron, + @inject.context() private context: Context ) {} - private static getInstallerFile() { - return path.normalize(`${app.getPath("userData")}/vc_redist.x64.exe`); + static getLocalAppData() { + return path.resolve(`${process.env["APPDATA"]}/../local`); } - private prerequisitesDownloaded = false; - - static getLocalAppData() { - return path.resolve(`${process.env.APPDATA}/../local`); + public getCPlusPlusInstallerFile() { + return path.normalize( + `${this.electron.app.getPath("userData")}/vc_redist.x64.exe` + ); } reboot() { - logger.debug("Rebooting system"); + this.logger.debug("Rebooting system"); reboot(); } async openApplicationLogsPath() { - const error = await shell.openPath( - path.parse(log.transports?.file.getFile().path).dir + const error = await this.electron.shell.openPath( + path.parse(this.logger.transports?.file.getFile().path).dir ); if (error) { - logger.error(error); + this.logger.error(error); } } @@ -57,12 +66,12 @@ export class SystemService { ); if (fs.existsSync(logPath)) { - const error = await shell.openPath(logPath); + const error = await this.electron.shell.openPath(logPath); if (error) { - logger.error(error); + this.logger.error(error); } } else { - await this.errorService.handleError( + this.errorService.handleError( "Error while opening crash logs folder", `Crash logs directory at ${logPath} does not exist. This likely means you do not have any crash logs.` ); @@ -70,33 +79,37 @@ export class SystemService { } async clearApplicationLogs() { - logger.transports?.file.getFile().clear(); + this.logger.transports?.file.getFile().clear(); /* - Due to the fact that the renderer proc has little to no node func / lib access, + Due to the fact that the renderer process has little to no node func / lib access, the renderer logs have to be manually cleared here. Because even if the entire logging object is exposed to the renderer it is unable to clear the file. */ - const path = logger.transports?.file.getFile().path.split("\\") || []; - // replace main.log with renderer.log - path.pop(); - path.push("renderer.log"); + const logFilePath = this.logger.transports?.file.getFile().path; + const loggerDir = path.dirname(logFilePath); + const renderLog = path.join(loggerDir, "renderer.log"); //clear renderer.log - const renderLog = path.join("\\"); if (fs.existsSync(renderLog)) { await fs.promises.writeFile(renderLog, "", { flag: "w" }); } } async checkPrerequisitesInstalled() { - logger.debug("Checking prerequisites are installed"); + // If developing on a non-windows machine, just pretend everything is installed because the game will not launch anyway + + if (os.platform() !== "win32") { + return true; + } + + this.logger.debug("Checking prerequisites are installed"); if ( this.configService.getPreference( USER_PREFERENCE_KEYS.CHECK_PREREQUISITES ) === false ) { - logger.debug("Skip checking prerequisites due to user setting"); + this.logger.debug("Skip checking prerequisites due to user setting"); return true; } @@ -106,7 +119,7 @@ export class SystemService { .map((x) => x.DisplayName); if (installedSoftware.length === 0) { - logger.debug(`${productTester} not detected`); + this.logger.debug(`${productTester} not detected`); return false; } @@ -117,46 +130,52 @@ export class SystemService { ); const sortedVersions = [...new Set(installedVersions.sort())]; - logger.debug(`Installed ${productTester} versions ${sortedVersions}`); + this.logger.debug(`Installed ${productTester} versions ${sortedVersions}`); return installedVersions.filter((x) => Number(x) >= 2019).length > 0; } - async installPrerequisites() { await this.downloadPrerequisites(); - logger.debug("Downloads completed"); - logger.debug(`Installing ${SystemService.getInstallerFile()}`); - return promisify(childProcess.exec)( - `"${SystemService.getInstallerFile()}"` - ); + this.logger.debug("Downloads completed"); + this.logger.debug(`Installing ${this.getCPlusPlusInstallerFile()}`); + return this.exec(`"${this.getCPlusPlusInstallerFile()}"`); } async downloadPrerequisites() { - logger.debug("Downloading prerequisites"); + this.logger.debug("Downloading prerequisites"); await this.downloadFile( "https://aka.ms/vs/17/release/vc_redist.x64.exe", - SystemService.getInstallerFile() + this.getCPlusPlusInstallerFile() ); - - this.prerequisitesDownloaded = true; } async downloadFile(url: string, output: string) { if (fs.existsSync(output)) { - logger.debug("Download already exists, skipping"); + this.logger.debug("Download already exists, skipping"); return; } - logger.debug(`Downloading from ${url} to ${output}`); + this.logger.debug(`Downloading from ${url} to ${output}`); - const body = (await fetch(url)).body; - if (body) { - logger.debug(`Download complete, writing to ${output}`); - await pipeline(body, createWriteStream(output)); - logger.debug(`Finished writing to ${output}`); - } else { - logger.error(`Failed to download file from ${url}`); + const response = await fetch(url); + + if (!response.ok) { + const message = `Failed to download file from ${url} with response status ${response.status}`; + this.logger.error(message); + throw new Error(message); } + + const body = response.body; + + this.logger.debug(`Download complete, writing to ${output}`); + await pipeline(body, createWriteStream(output)); + this.logger.debug(`Finished writing to ${output}`); + } + + async listProcesses(): ReturnType { + // Get psList from the context so it can be replaced dynamically if necessary + const psList = this.context.getSync(PsListBinding); + return psList(); } async isProcessRunning(process: string): Promise { @@ -166,4 +185,17 @@ export class SystemService { ).length > 0 ); } + + async exec(command: string): Promise<{ stdout: string; stderr: string }> { + // Get childProcess from the context so it can be replaced dynamically if necessary + const childProcess = + this.context.getSync(ChildProcessBinding); + return promisify(childProcess.exec)(command); + } + + kill(pid: number, signal?: string | number): boolean { + // Get process.kill from the context so it can be replaced dynamically if necessary + const processKill = this.context.getSync(ProcessKillBinding); + return processKill(pid, signal); + } } diff --git a/src/main/services/update.service.ts b/src/main/services/update.service.ts index a603038d..2baf27d5 100644 --- a/src/main/services/update.service.ts +++ b/src/main/services/update.service.ts @@ -1,14 +1,16 @@ -import { autoUpdater } from "electron-updater"; -import { app } from "electron"; +import type Electron from "electron"; import path from "path"; -import { isDevelopment } from "@/main/services/config.service"; import fs from "fs"; import { service } from "@loopback/core"; import { WindowService } from "@/main/services/window.service"; -import { logger } from "@/main/logger"; -import { BindingScope, injectable } from "@loopback/context"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { UPDATE_EVENTS } from "@/main/controllers/update/update.events"; import { ErrorService } from "@/main/services/error.service"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { IsDevelopmentBinding } from "@/main/bindings/isDevelopment.binding"; +import { AutoUpdaterBinding } from "@/main/bindings/autoUpdater.binding"; +import type { AppUpdater } from "electron-updater"; +import { ElectronBinding } from "@/main/bindings/electron.binding"; @injectable({ scope: BindingScope.SINGLETON, @@ -20,9 +22,12 @@ export class UpdateService { ); constructor( - @service(WindowService) private renderService: WindowService, @service(ErrorService) private errorService: ErrorService, - @service(WindowService) private windowService: WindowService + @service(WindowService) private windowService: WindowService, + @inject(LoggerBinding) private logger: Logger, + @inject(IsDevelopmentBinding) private isDevelopment: boolean, + @inject(AutoUpdaterBinding) private autoUpdater: AppUpdater, + @inject(ElectronBinding) private electron: typeof Electron ) {} async update() { @@ -31,14 +36,16 @@ export class UpdateService { return new Promise((resolve) => { // Only register if there is no update available. If there is an update, the window will close itself anyway. - autoUpdater.on(UPDATE_EVENTS.UPDATE_NOT_AVAILABLE, () => { - logger.debug("No update available"); + this.autoUpdater.on(UPDATE_EVENTS.UPDATE_NOT_AVAILABLE, () => { + this.logger.debug("No update available"); resolve(); }); if (this.shouldUpdate()) { this.checkForUpdate().catch((error) => { - logger.debug(`Update failed with error ${error}. Continuing anyway.`); + this.logger.debug( + `Update failed with error ${error}. Continuing anyway.` + ); resolve(); }); } else { @@ -50,17 +57,17 @@ export class UpdateService { shouldUpdate() { let shouldUpdate; - if (isDevelopment && fs.existsSync(this.devAppUpdatePath)) { - logger.debug(`Setting auto update path to ${this.devAppUpdatePath}`); - autoUpdater.updateConfigPath = this.devAppUpdatePath; + if (this.isDevelopment && fs.existsSync(this.devAppUpdatePath)) { + this.logger.debug(`Setting auto update path to ${this.devAppUpdatePath}`); + this.autoUpdater.updateConfigPath = this.devAppUpdatePath; shouldUpdate = true; - } else if (isDevelopment) { - logger.debug( + } else if (this.isDevelopment) { + this.logger.debug( "Skipping app update check because we're in development mode" ); shouldUpdate = false; - } else if (app.getVersion().includes("-")) { - logger.debug( + } else if (this.electron.app.getVersion().includes("-")) { + this.logger.debug( "Skipping app update check because this is a pre-release version" ); shouldUpdate = false; @@ -72,23 +79,23 @@ export class UpdateService { } registerEvents() { - autoUpdater.on(UPDATE_EVENTS.UPDATE_AVAILABLE, () => { - logger.info(`Update available`); - this.renderService.getWebContents().send(UPDATE_EVENTS.UPDATE_AVAILABLE); + this.autoUpdater.on(UPDATE_EVENTS.UPDATE_AVAILABLE, () => { + this.logger.info(`Update available`); + this.windowService.getWebContents().send(UPDATE_EVENTS.UPDATE_AVAILABLE); }); - autoUpdater.on(UPDATE_EVENTS.DOWNLOAD_PROGRESS, ({ percent }) => { - this.renderService + this.autoUpdater.on(UPDATE_EVENTS.DOWNLOAD_PROGRESS, ({ percent }) => { + this.windowService .getWebContents() .send(UPDATE_EVENTS.DOWNLOAD_PROGRESS, Math.floor(percent)); }); - autoUpdater.on(UPDATE_EVENTS.UPDATE_DOWNLOADED, () => { - logger.debug("Update downloaded"); - autoUpdater.quitAndInstall(); + this.autoUpdater.on(UPDATE_EVENTS.UPDATE_DOWNLOADED, () => { + this.logger.debug("Update downloaded"); + this.autoUpdater.quitAndInstall(); }); - autoUpdater.on(UPDATE_EVENTS.ERROR, async (error: Error) => { + this.autoUpdater.on(UPDATE_EVENTS.ERROR, (error: Error) => { let message; if (error.message.includes("net::ERR_NAME_NOT_RESOLVED")) { message = `This likely means you are not connected to the internet. It is recommended you use the latest launcher version as it might contain bug fixes for the modpack itself.`; @@ -96,7 +103,7 @@ export class UpdateService { message = `An unknown error has occurred. Please try relaunching the launcher.`; } - await this.errorService.handleError( + this.errorService.handleError( "Error checking for update", `Cannot check for update. ${message}` ); @@ -105,8 +112,8 @@ export class UpdateService { async checkForUpdate() { this.registerEvents(); - const updateCheckResult = await autoUpdater.checkForUpdates(); - logger.debug("Auto update check result"); - logger.debug(updateCheckResult); + const updateCheckResult = await this.autoUpdater.checkForUpdates(); + this.logger.debug("Auto update check result"); + this.logger.debug(updateCheckResult); } } diff --git a/src/main/services/wabbajack.service.ts b/src/main/services/wabbajack.service.ts index 6c79d715..f7a86c4c 100644 --- a/src/main/services/wabbajack.service.ts +++ b/src/main/services/wabbajack.service.ts @@ -1,14 +1,14 @@ import fs from "fs"; -import { +import type { WabbajackInstallSettings, WabbajackModpackMetadata, WabbajackV2SettingsFile, -} from "@/wabbajack"; -import { logger } from "@/main/logger"; +} from "@/shared/types/wabbajack"; import { SystemService } from "@/main/services/system.service"; import { service } from "@loopback/core"; -import { BindingScope, injectable } from "@loopback/context"; +import { BindingScope, inject, injectable } from "@loopback/context"; import { ModpackService } from "@/main/services/modpack.service"; +import { Logger, LoggerBinding } from "@/main/logger"; @injectable({ scope: BindingScope.SINGLETON, @@ -21,8 +21,8 @@ export class WabbajackService { private wabbajackV3InstalledModpacksPath = `${SystemService.getLocalAppData()}/Wabbajack/saved_settings`; constructor( - @service(SystemService) private systemService: SystemService, - @service(ModpackService) private modpackService: ModpackService + @service(ModpackService) private modpackService: ModpackService, + @inject(LoggerBinding) private logger: Logger ) {} async getInstalledModpacks(): Promise { @@ -31,13 +31,17 @@ export class WabbajackService { if (fs.existsSync(this.wabbajackV2InstalledModpacksPath)) { v2Modpacks = await this.getInstalledModpacksFromWabbajackV2(); } else { - logger.warn(`${this.wabbajackV2InstalledModpacksPath} does not exist.`); + this.logger.warn( + `Wabbajack V2 ${this.wabbajackV2InstalledModpacksPath} does not exist.` + ); } if (fs.existsSync(this.wabbajackV3InstalledModpacksPath)) { v3Modpacks = await this.getInstalledModpacksFromWabbajackV3(); } else { - logger.warn(`${this.wabbajackV3InstalledModpacksPath} does not exist.`); + this.logger.warn( + `Wabbajack V3 ${this.wabbajackV3InstalledModpacksPath}/ does not exist.` + ); } const combined = { @@ -57,10 +61,10 @@ export class WabbajackService { .reduce( (accumulator, current) => ({ ...accumulator, - [modpackMeta[current].InstallationPath]: { - title: modpackMeta[current].ModList.Name, - installPath: modpackMeta[current].InstallationPath, - version: modpackMeta[current].ModList.Version, + [modpackMeta[current]!.InstallationPath]: { + title: modpackMeta[current]!.ModList.Name, + installPath: modpackMeta[current]!.InstallationPath, + version: modpackMeta[current]!.ModList.Version, }, }), {} @@ -91,8 +95,7 @@ export class WabbajackService { // This means a later install might appear before a previous one, // we need to find the latest install and remove the others if ( - currentInAccumulator && - currentInAccumulator.lastUpdated && + currentInAccumulator?.lastUpdated && currentInAccumulator.lastUpdated > current.lastUpdated ) { return accumulator; @@ -101,9 +104,9 @@ export class WabbajackService { return { ...accumulator, [current.contents.InstallLocation]: { - title: current.contents.Metadata?.title, + title: current.contents.Metadata?.title ?? null, installPath: current.contents.InstallLocation, - version: current.contents.Metadata?.version, + version: current.contents.Metadata?.version ?? null, lastUpdated: current.lastUpdated, }, }; @@ -119,19 +122,19 @@ export class WabbajackService { modpacks !== null ? Object.keys(modpacks).filter( (modpack) => - modpack !== "$type" && modpacks[modpack].title === modpackName + modpack !== "$type" && modpacks[modpack]?.title === modpackName ) : []; - logger.info( + this.logger.info( `Discovered ${wildlanderModpacks.length} ${modpackName} modpack installations in ${this.installedModpacksFilename}` ); - logger.debug(wildlanderModpacks); + this.logger.debug(wildlanderModpacks); return wildlanderModpacks; } async getModpackMetadata(path: string) { const modpacks = await this.getInstalledModpacks(); - return modpacks && modpacks[path] ? modpacks[path] : null; + return modpacks?.[path] ? modpacks[path] : null; } async getCurrentModpackMetadata() { diff --git a/src/main/services/window.service.ts b/src/main/services/window.service.ts index 8d7412b9..c82244ba 100644 --- a/src/main/services/window.service.ts +++ b/src/main/services/window.service.ts @@ -1,11 +1,19 @@ -import { app, BrowserWindow, dialog, protocol } from "electron"; +import type Electron from "electron"; +import { BrowserWindow, protocol } from "electron"; import { URL } from "url"; import { readFile } from "fs"; import path from "path"; -import { appRoot, isDevelopment } from "@/main/services/config.service"; -import { logger } from "@/main/logger"; -import { BindingScope, injectable } from "@loopback/context"; -import contextMenu from "electron-context-menu"; +import { appRoot } from "@/main/services/config.service"; +import { BindingScope, inject, injectable } from "@loopback/context"; +import { Logger, LoggerBinding } from "@/main/logger"; +import { ElectronBinding } from "@/main/bindings/electron.binding"; +import { + ContextMenu, + ContextMenuBinding, +} from "@/main/bindings/context-menu.binding"; +import { service } from "@loopback/core"; +import { Dialog, DialogProvider } from "@/main/services/dialog.service"; +import { IsDevelopmentBinding } from "@/main/bindings/isDevelopment.binding"; @injectable({ scope: BindingScope.SINGLETON, @@ -13,21 +21,17 @@ import contextMenu from "electron-context-menu"; export class WindowService { private window!: BrowserWindow; - private static handleFatalError(message: string, err: string | Error) { - logger.error(`${message}. ${err}`); + constructor( + @inject(LoggerBinding) private logger: Logger, + @inject(IsDevelopmentBinding) private isDevelopment: boolean, + @inject(ElectronBinding) private electron: typeof Electron, + @inject(ContextMenuBinding) private contextMenu: ContextMenu, + @service(DialogProvider) private dialog: Dialog + ) {} - dialog.showMessageBoxSync({ - type: "error", - title: "A fatal error occurred!", - message: ` - ${message} - ${err} - `, - }); - - app.quit(); + setWindow(window: BrowserWindow) { + this.window = window; } - getWindow() { return this.window; } @@ -37,17 +41,17 @@ export class WindowService { } quit() { - logger.debug("Quit application"); - app.quit(); + this.logger.debug("Quit application"); + this.electron.app.quit(); } reload() { - logger.debug("Reload window"); + this.logger.debug("Reload window"); this.getWindow().reload(); } minimize() { - logger.debug("Minimize window"); + this.logger.debug("Minimize window"); this.getWindow().minimize(); } @@ -60,28 +64,30 @@ export class WindowService { } async createBrowserWindow() { - logger.debug("Creating browser window"); + this.logger.debug("Creating browser window"); if (this.window) { - logger.debug("Browser window already exists"); + this.logger.debug("Browser window already exists"); return; } try { // Add default context menu - contextMenu({ + this.contextMenu({ showSaveImageAs: true, }); - // Create the browser window. - this.window = new BrowserWindow({ + const width = 1000; + const height = 580; + + this.window = new this.electron.BrowserWindow({ frame: false, - height: 580, - minHeight: 580, - maxHeight: 580, - width: 1000, - minWidth: 1000, - maxWidth: 1000, + height, + minHeight: height, + maxHeight: height, + width, + minWidth: width, + maxWidth: width, resizable: false, maximizable: false, // disable initial window from showing so focus can be prevented while developing @@ -91,17 +97,14 @@ export class WindowService { // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info nodeIntegration: false, contextIsolation: true, - preload: path.join(appRoot, "main/preload.js"), + preload: path.join(appRoot, "preload/index.js"), }, }); } catch (error) { if (error instanceof Error) { - WindowService.handleFatalError( - "Unable to create browser window", - error - ); + this.handleFatalError("Unable to create browser window", error); } else { - WindowService.handleFatalError( + this.handleFatalError( "Unable to create browser window with unknown error", "" ); @@ -110,34 +113,44 @@ export class WindowService { } /** - * - * @param path - Must start with a '/' + * @param urlPath - Must start with a '/' */ - async load(path: string) { + async load(urlPath: string) { try { - if (isDevelopment) { - const url = new URL(`http://localhost:8080/#${path}`).toString(); + if (this.isDevelopment) { + // HMR for renderer base on electron-vite cli. + // Load the remote URL for development or the local html file for production. + // TODO remove localhost once vue-cli is removed + const host = + process.env["ELECTRON_RENDERER_URL"] ?? "http://localhost:8080/"; + const url = new URL(`${host}#${urlPath}`).toString(); await this.navigateInWindow(url); - if (!process.env.IS_TEST) { + if (!process.env["IS_TEST"]) { this.window.webContents.openDevTools(); } // Show window without setting focus this.window.showInactive(); } else { + // TODO remove elseif once vue cli is removed and add test once this is default + /* istanbul ignore next */ + if (process.env["VUECLI"] !== "true") { + await this.window.loadFile( + path.join(__dirname, "../renderer/index.html") + ); + return; + } + this.createProtocol("app"); // Load the index.html when not in development - const url = new URL(`app://./index.html/#${path}`).toString(); + const url = new URL(`app://./index.html/#${urlPath}`).toString(); await this.navigateInWindow(url); this.window.show(); } } catch (error) { if (error instanceof Error) { - WindowService.handleFatalError( - "Unable to load application page", - error - ); + this.handleFatalError("Unable to load application page", error); } else { - WindowService.handleFatalError( + this.handleFatalError( "Unable to load application page with unknown error", "" ); @@ -145,34 +158,58 @@ export class WindowService { } } - private async navigateInWindow(url: string) { - // If the browser window is already open, a URL change will cause electron to think the request is aborted. - // When the app loads a URL, the hash is changed immediately. If the window is already open, - // electron considers this a change in URl and a failure so it errors. - // If the window is open, just navigate from the browser instead. - logger.debug(`Loading url: ${url}`); - if (this.window.isVisible()) { - await this.window.webContents.executeJavaScript( - `window.location.href = '${url}'` - ); - this.window.reload(); - } else { + private handleFatalError(message: string, err: string | Error) { + this.logger.error(`${message}. ${err}`); + + this.dialog.showMessageBoxSync({ + type: "error", + title: "A fatal error occurred!", + message: ` + ${message} + ${err} + `, + }); + + this.electron.app.quit(); + } + + async navigateInWindow(url: string) { + this.logger.debug(`Loading url: ${url}`); + + const windowOpen = this.window.isVisible(); + + try { await this.window.loadURL(url); + } catch (error) { + if ((error as { code?: string })?.code === "ERR_FAILED" && windowOpen) { + // If the browser window is already open, a URL change will cause electron to think the request is aborted. + // When the app loads a URL, the hash is changed immediately. + // If the window is already open, electron considers this a change in URL and a failure so it errors. + // Reload the window to continue the navigation + // TODO this is only necessary because of the hash based history. Replacing this with non-hash history should solve this + this.logger.debug(`Window already open. Reloading window`); + this.window.reload(); + } else { + throw error; + } } } + // TODO this method is untested because it is essentially a library method. + // TODO this needs clarifying and simplifying /** * Taken from vue-cli-plugin-electron-builder to remove import/export because the plugin doesn't ship a dist. * If imported directly, it causes issues when dynamically requiring services that might require this file */ - private createProtocol(scheme: string) { + /* istanbul ignore next */ + createProtocol(scheme: string) { protocol.registerBufferProtocol(scheme, (request, respond) => { let pathName = new URL(request.url).pathname; pathName = decodeURI(pathName); // Needed in case URL contains spaces readFile(path.join(appRoot, pathName), (error, data) => { if (error) { - logger.error( + this.logger.error( `Failed to read ${pathName} on ${scheme} protocol`, error ); diff --git a/src/main/types/process-globals.d.ts b/src/main/types/process-globals.d.ts new file mode 100644 index 00000000..dc4b2a98 --- /dev/null +++ b/src/main/types/process-globals.d.ts @@ -0,0 +1,9 @@ +import { LauncherApplication } from "@/main/application"; + +export type ProcessWithGlobals = NodeJS.Process & { + // TODO rename this to __globals when TS is updated + _globals_: { + launcherApplication: LauncherApplication; + promisifyCustomSymbol: symbol; + }; +}; diff --git a/src/modpack.json b/src/modpack.json deleted file mode 100644 index 458c0fb7..00000000 --- a/src/modpack.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "Wildlander", - "logo": "/images/logos/wildlander-full-light.svg", - "backgroundImage": "/images/default-background.png", - "website": "https://www.wildlandermod.com", - "wiki": "https://wiki.wildlandermod.com/", - "patreon": "https://www.patreon.com/dylanbperry", - "roadmap": "https://airtable.com/shrvAxHcCeCqKfnGe" -} diff --git a/src/main/preload.ts b/src/preload/index.ts similarity index 65% rename from src/main/preload.ts rename to src/preload/index.ts index 2885885f..e8243971 100644 --- a/src/main/preload.ts +++ b/src/preload/index.ts @@ -1,5 +1,4 @@ import { contextBridge, ipcRenderer } from "electron"; -import log from "electron-log"; // Expose protected methods that allow the renderer process to use // the ipcRenderer without exposing the entire object @@ -7,10 +6,8 @@ contextBridge.exposeInMainWorld("ipcRenderer", { invoke: (channel: string, data: unknown) => { return ipcRenderer.invoke(channel, data); }, - on: (channel: string, callback: Function) => { + on: (channel: string, callback: (...args: unknown[]) => unknown) => { // Deliberately strip event as it includes `sender` - ipcRenderer.on(channel, (event, ...args) => callback(...args)); + ipcRenderer.on(channel, (_event, ...args) => callback(...args)); }, }); - -contextBridge.exposeInMainWorld("logger", log.functions); diff --git a/src/renderer/.eslintrc.js b/src/renderer/.eslintrc.js new file mode 100644 index 00000000..9ea8bb45 --- /dev/null +++ b/src/renderer/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + env: { + node: false, + browser: false, + es6: true, + }, + extends: [ + "eslint:recommended", + "@vue/typescript/recommended", + "plugin:vue/vue3-recommended", + "prettier", + ], + parser: "vue-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + }, +}; diff --git a/src/renderer/index.html b/src/renderer/index.html new file mode 100644 index 00000000..9388cba5 --- /dev/null +++ b/src/renderer/index.html @@ -0,0 +1,17 @@ + + + + + Electron + + + + + +
+ + + diff --git a/src/renderer/shims.d.ts b/src/renderer/shims.d.ts new file mode 100644 index 00000000..a9ee30a3 --- /dev/null +++ b/src/renderer/shims.d.ts @@ -0,0 +1,24 @@ +declare module "*.svg" { + const content: string; + export default content; +} + +declare module "*.png" { + const content: string; + export default content; +} + +declare module "*.jpg" { + const content: string; + export default content; +} + +declare module "*.jpeg" { + const content: string; + export default content; +} + +declare module "*.gif" { + const content: string; + export default content; +} diff --git a/src/renderer/App.vue b/src/renderer/src/App.vue similarity index 71% rename from src/renderer/App.vue rename to src/renderer/src/App.vue index 2df1ad64..6bd8d7d0 100644 --- a/src/renderer/App.vue +++ b/src/renderer/src/App.vue @@ -1,6 +1,7 @@