├── .gitattributes ├── .gitignore ├── .prettierignore ├── .vscode └── settings.json ├── .editorconfig ├── .prettierrc ├── tsup.config.ts ├── .eslintrc.cjs ├── lib └── inquirer-file-tree-selection-prompt │ ├── types.ts │ └── index.ts ├── .github ├── renovate.json5 └── workflows │ ├── release.yml │ └── unit-test.yml ├── tsconfig.json ├── src ├── types.ts ├── setup-cli-options.ts ├── check-tsc-version.ts ├── show-console-print.ts ├── utils.ts ├── ts-errs-map.ts └── index.ts ├── LICENSE ├── README-CN.md ├── README.md ├── package.json └── pnpm-lock.yaml /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | *.log 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | pnpm-lock.yaml 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true 3 | } 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_size = 2 5 | end_of_line = lf 6 | insert_final_newline = true 7 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/prettierrc", 3 | "semi": false, 4 | "singleQuote": true 5 | } 6 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['./src'], 5 | format: ['esm'], 6 | target: 'node16', 7 | clean: true, 8 | dts: true, 9 | sourcemap: true, 10 | splitting: false, 11 | }) 12 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | const { defineConfig } = require('eslint-define-config') 2 | 3 | module.exports = defineConfig({ 4 | root: true, 5 | extends: ['@sxzz/eslint-config-ts', '@sxzz/eslint-config-prettier'], 6 | rules: { 7 | 'no-console': 'off', 8 | }, 9 | }) 10 | -------------------------------------------------------------------------------- /lib/inquirer-file-tree-selection-prompt/types.ts: -------------------------------------------------------------------------------- 1 | export interface Node { 2 | name: string 3 | path: string 4 | type: 'directory' | 'file' 5 | parent?: Node | undefined 6 | children?: Node[] 7 | open?: boolean 8 | isValid?: boolean 9 | hasValidChild?: boolean 10 | _rootNode?: boolean 11 | } 12 | -------------------------------------------------------------------------------- /.github/renovate.json5: -------------------------------------------------------------------------------- 1 | { 2 | extends: ['config:base', 'schedule:weekly', 'group:allNonMajor'], 3 | labels: ['dependencies'], 4 | pin: false, 5 | rangeStrategy: 'bump', 6 | node: false, 7 | packageRules: [ 8 | { 9 | depTypeList: ['peerDependencies'], 10 | enabled: false, 11 | }, 12 | ], 13 | ignoreDeps: ['node'], 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "lib": ["es2019"], 6 | "strict": true, 7 | "esModuleInterop": true, 8 | "moduleResolution": "node", 9 | "skipLibCheck": true, 10 | "noUnusedLocals": true, 11 | "resolveJsonModule": true, 12 | "types": ["node"] 13 | }, 14 | "include": ["src", "tests", "scripts"], 15 | "exclude": ["tests/fixtures"] 16 | } 17 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | with: 14 | fetch-depth: 0 15 | 16 | - name: Set node 17 | uses: actions/setup-node@v3 18 | with: 19 | node-version: 16.x 20 | 21 | - run: npx changelogithub 22 | env: 23 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 24 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type RawErrsMap = Map 2 | export interface TscErrorInfo { 3 | filePath: string 4 | errCode: number 5 | errMsg: string 6 | line: number 7 | col: number 8 | } 9 | export interface CollectLineNumbers { 10 | target: number 11 | next: number 12 | prev?: number 13 | } 14 | export type CollectLines = { 15 | [key in keyof CollectLineNumbers]: string 16 | } 17 | export interface RootAndTarget { 18 | root: string 19 | targetAbsPath: string 20 | } 21 | export interface OptionContext { 22 | engine: 'tsc' | 'vue-tsc' 23 | } 24 | export type Context = RootAndTarget & { 25 | rawErrsMap: RawErrsMap 26 | openedDirs: Set 27 | options: OptionContext 28 | lastActivePath?: string 29 | } 30 | -------------------------------------------------------------------------------- /src/setup-cli-options.ts: -------------------------------------------------------------------------------- 1 | import type { OptionContext } from './types' 2 | import type { CAC } from 'cac' 3 | 4 | const optionsDefMap: Record = { 5 | engine: ['e', 'engine'], 6 | } 7 | const createDefaultOptionsContext = (): OptionContext => { 8 | return { 9 | engine: 'tsc', 10 | } 11 | } 12 | 13 | export function getCliOptionsContext(cli: CAC) { 14 | const optionsContext = createDefaultOptionsContext() 15 | Object.entries(cli.options).forEach(([cliOptionKey, cliOptionValue]) => { 16 | Object.entries(optionsDefMap).forEach( 17 | ([cliOptionDefKey, cliOptionDefKeys]) => { 18 | if (cliOptionDefKeys.includes(cliOptionKey)) { 19 | Reflect.set(optionsContext, cliOptionDefKey, cliOptionValue) 20 | } 21 | } 22 | ) 23 | }) 24 | 25 | return optionsContext 26 | } 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright © 2022 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/check-tsc-version.ts: -------------------------------------------------------------------------------- 1 | import semver from 'semver' 2 | import binaryVersion from 'bin-version' 3 | import semverTruncate from 'semver-truncate' 4 | import chalk from 'chalk' 5 | import type { Options } from 'bin-version' 6 | 7 | async function checkBinaryVersion( 8 | binary: string, 9 | semverRange: string, 10 | options?: Options 11 | ) { 12 | if (typeof binary !== 'string' || typeof semverRange !== 'string') { 13 | throw new TypeError('`binary` and `semverRange` arguments required') 14 | } 15 | 16 | if (!semver.validRange(semverRange)) { 17 | throw new Error('Invalid version range') 18 | } 19 | 20 | const version = await binaryVersion(binary, options) 21 | 22 | if (semver.satisfies(semverTruncate(version, 'patch'), semverRange)) { 23 | return 24 | } 25 | 26 | const error = new Error( 27 | `${binary} ${version} doesn't satisfy the version requirement of ${semverRange}` 28 | ) 29 | error.name = 'InvalidBinaryVersion' 30 | throw error 31 | } 32 | 33 | export default async function ensureTscVersion() { 34 | try { 35 | await checkBinaryVersion('tsc', '>=4.5') 36 | } catch (tscVersionErr) { 37 | console.log(`\n${chalk.red(tscVersionErr)}\n`) 38 | process.exit() 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /.github/workflows/unit-test.yml: -------------------------------------------------------------------------------- 1 | name: Unit Test 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | jobs: 10 | lint: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v3 14 | - name: Set node 15 | uses: actions/setup-node@v3 16 | with: 17 | node-version: 16.x 18 | 19 | - name: Setup 20 | run: npm i -g @antfu/ni 21 | 22 | - name: Install 23 | run: nci 24 | 25 | - name: Lint 26 | run: nr lint 27 | 28 | test: 29 | runs-on: ${{ matrix.os }} 30 | 31 | strategy: 32 | matrix: 33 | os: [ubuntu-latest, windows-latest] 34 | node: [14.19.0, 16.x, 18] 35 | fail-fast: false 36 | 37 | steps: 38 | - uses: actions/checkout@v3 39 | - name: Set node ${{ matrix.node }} 40 | uses: actions/setup-node@v3 41 | with: 42 | node-version: ${{ matrix.node }} 43 | 44 | - name: Setup 45 | run: npm i -g @antfu/ni 46 | 47 | - name: Install 48 | run: nci 49 | 50 | - name: Build 51 | run: nr build 52 | 53 | # Todo: add unit test 54 | # - name: Test 55 | # run: nr test 56 | -------------------------------------------------------------------------------- /README-CN.md: -------------------------------------------------------------------------------- 1 | # tsc-err-dirs [![npm](https://img.shields.io/npm/v/@slackoff/tsc-err-dirs.svg)](https://npmjs.com/package/@slackoff/tsc-err-dirs) 2 | 3 | 按文件树目录展示 tsc 错误数量,可以在更改文件后实时更新。 4 | 5 | ## 效果截图 6 | 7 | image 8 | 9 | ## 环境需求 10 | 11 | - node 版本: >=16 12 | - tsc 版本: >=4.5.5 13 | - 安装 [Nerd Font](https://github.com/ryanoasis/nerd-fonts) 14 | 15 | > **Warning** 16 | > 推荐在 Mac OS 或 Linux 下使用该 CLI 应用,在 Windows 的 shell 中可能有诸多限制导致效果无法实现。 17 | 18 | ## 安装 19 | 20 | ```bash 21 | npm i -g @slackoff/tsc-err-dirs 22 | ``` 23 | 24 | ## 使用方法 25 | 26 | ```bash 27 | # the project root path MUST contains `tsconfig.json` 28 | tsc-err-dirs 29 | ``` 30 | 31 | ## 选项 32 | 33 | - `--engine` 缩写: `-e` 34 | 35 | **类型:** `'tsc' | 'vue-tsc'` 36 | 37 | 选择你想要执行哪一种 tsc。 38 | 39 | ## 原理 40 | 41 | 因为 `tsc` 无法在单独编译一个大项目中的某一个文件,我们必须找一个替代方案。 42 | 43 | 1. 使用 `tsc --noEmit --pretty false` 来获取没有美化过的报错信息。 44 | 2. 提取出 stdout 然后解析成结构化的每个文件的错误信息数据。 45 | 3. 使用 [inquirer-file-tree-selection-prompt](https://www.npmjs.com/package/inquirer-file-tree-selection-prompt) 来显示一个每个目录包含其错误数的文件树。 46 | 47 | 48 | ## License 49 | 50 | [MIT](./LICENSE) License © 2022 [ShenQingchuan](https://github.com/ShenQingchuan) 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tsc-err-dirs [![npm](https://img.shields.io/npm/v/@slackoff/tsc-err-dirs.svg)](https://npmjs.com/package/@slackoff/tsc-err-dirs) 2 | 3 | [中文文档](./README-CN.md) 4 | 5 | Display tsc errors count on file tree, can hot update when you change those files. 6 | 7 | ## Screeshot 8 | 9 | image 10 | 11 | ## Requirement 12 | 13 | - node version: >=16 14 | - tsc version: >=4.5.5 15 | - Installed [Nerd Font](https://github.com/ryanoasis/nerd-fonts) 16 | 17 | > **Warning**: We recommend you to use this CLI app in Mac OS or Linux, 18 | since it's using a lot of shell features which may not have good support in Windows. 19 | 20 | ## Install 21 | 22 | ```bash 23 | npm i -g @slackoff/tsc-err-dirs 24 | ``` 25 | 26 | ## Usage 27 | 28 | ```bash 29 | # the project root path MUST contains `tsconfig.json` 30 | tsc-err-dirs 31 | ``` 32 | 33 | ## Options 34 | 35 | - `--engine` (shorthand: `-e`) 36 | 37 | **Type:** `'tsc' | 'vue-tsc'` 38 | 39 | Select which tsc to be executed. 40 | 41 | ## Internal 42 | 43 | Since `tsc` doesn't provide a way to get the errors count of each file, we have to use a trick to get it. 44 | 45 | 1. Use `tsc --noEmit --pretty false` to get all the errors of each file which are not prettified format. 46 | 2. Extract stdout and parse it to get the errors info of each file. 47 | 3. Use [inquirer-file-tree-selection-prompt](https://www.npmjs.com/package/inquirer-file-tree-selection-prompt) to display the errors count on file tree. 48 | 49 | 50 | ## License 51 | 52 | [MIT](./LICENSE) License © 2022 [ShenQingchuan](https://github.com/ShenQingchuan) 53 | -------------------------------------------------------------------------------- /src/show-console-print.ts: -------------------------------------------------------------------------------- 1 | import chalk from 'chalk' 2 | import fetch from 'node-fetch' 3 | import packageJSON from '../package.json' 4 | 5 | export function showAppHeader() { 6 | const localVersion = packageJSON.version 7 | console.log( 8 | `\n${chalk.bold.blue(` 9 | _ _ _ 10 | | |_ ___ ___ ___ _ __ _ __ __| (_)_ __ ___ 11 | | __/ __|/ __| / _ \\ '__| '__| / _\` | | '__/ __| 12 | | |_\\__ \\ (__ | __/ | | | | (_| | | | \\__ \\ 13 | \\__|___/\\___| \\___|_| |_| \\__,_|_|_| |___/ ${chalk.cyanBright( 14 | `[version: v${localVersion}]` 15 | )} 16 | `)}` 17 | ) 18 | 19 | // Tips for latest version check 20 | fetch('https://registry.npmjs.org/-/package/@slackoff/tsc-err-dirs/dist-tags') 21 | .then((resp) => resp.json()) 22 | .then((respJson: any) => { 23 | const respJsonLatest = respJson.latest 24 | if (respJsonLatest && respJsonLatest !== localVersion) { 25 | console.log( 26 | `\n💡 Latest version is ${chalk.bold.yellow( 27 | String(respJsonLatest) 28 | )},\n` + 29 | ` we recommend you to update by \`npm i -g @slackoff/tsc-err-dirs@latest\`` 30 | ) 31 | } 32 | }) 33 | } 34 | export function showFirstTscCompilePathInfo({ 35 | cmd, 36 | rootAbsPath, 37 | }: { 38 | cmd: string 39 | rootAbsPath: string 40 | }) { 41 | console.log( 42 | `\n$ ${chalk.yellowBright(rootAbsPath)}\n ${chalk.bold.gray( 43 | `tsc running for the first time ...` 44 | )}\n ${chalk.green('▷')} ${chalk.grey(` ${cmd}`)}\n` 45 | ) 46 | } 47 | export function showTscReCompilePathInfo(rootAbsPath: string) { 48 | console.log( 49 | `${chalk.bold.gray( 50 | `Start re-run tsc on ${chalk.bold.blue(rootAbsPath)} ...` 51 | )}\n` 52 | ) 53 | } 54 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@slackoff/tsc-err-dirs", 3 | "version": "0.0.23", 4 | "packageManager": "pnpm@7.9.5", 5 | "description": "Show tsc errors by directories.", 6 | "type": "module", 7 | "license": "MIT", 8 | "repository": { 9 | "type": "Git", 10 | "url": "https://github.com/ShenQingchuan/tsc-err-dirs" 11 | }, 12 | "author": { 13 | "name": "ShenQingchuan" 14 | }, 15 | "files": [ 16 | "dist" 17 | ], 18 | "main": "./dist/index.js", 19 | "module": "./dist/index.js", 20 | "types": "./dist/index.d.ts", 21 | "exports": { 22 | "require": "./dist/index.js", 23 | "import": "./dist/index.js" 24 | }, 25 | "bin": { 26 | "tsc-err-dirs": "./dist/index.js" 27 | }, 28 | "publishConfig": { 29 | "access": "public" 30 | }, 31 | "scripts": { 32 | "lint": "eslint . --ext .vue,.js,.ts,.jsx,.tsx,.json,.md", 33 | "lint:fix": "pnpm run lint --fix", 34 | "build": "tsup", 35 | "dev": "tsx ./src/index.ts", 36 | "test": "vitest", 37 | "release": "bumpp && pnpm publish", 38 | "prepublishOnly": "pnpm run build" 39 | }, 40 | "dependencies": { 41 | "bin-version": "^6.0.0", 42 | "cac": "^6.7.14", 43 | "chalk": "^5.0.1", 44 | "chokidar": "^3.5.3", 45 | "cli-cursor": "^4.0.0", 46 | "execa": "^6.1.0", 47 | "figures": "^5.0.0", 48 | "inquirer": "^9.1.1", 49 | "jsonc-parser": "^3.2.0", 50 | "node-fetch": "^3.2.10", 51 | "ora": "^6.1.2", 52 | "rxjs": "^7.5.6", 53 | "semver": "^7.3.7", 54 | "semver-truncate": "^3.0.0" 55 | }, 56 | "devDependencies": { 57 | "@sxzz/eslint-config-prettier": "^2.4.1", 58 | "@sxzz/eslint-config-ts": "^2.4.1", 59 | "@types/inquirer": "^9.0.1", 60 | "@types/node": "*", 61 | "@types/semver": "^7.3.12", 62 | "bumpp": "^8.2.1", 63 | "eslint": "^8.23.0", 64 | "eslint-define-config": "^1.6.0", 65 | "fast-glob": "^3.2.11", 66 | "prettier": "^2.7.1", 67 | "tsup": "^6.2.3", 68 | "tsx": "^3.8.2", 69 | "typescript": "^4.8.2", 70 | "vitest": "^0.22.1" 71 | }, 72 | "engines": { 73 | "node": ">=16" 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import readline from 'node:readline' 3 | import fs from 'node:fs' 4 | import type { CollectLineNumbers, CollectLines, RawErrsMap } from './types' 5 | 6 | export function getRawErrsSumCount(rawErrsMap: RawErrsMap) { 7 | return [...rawErrsMap.values()].reduce((prev, next) => { 8 | return (prev += next.length) 9 | }, 0) 10 | } 11 | export function getTargetDir(dirArg: string): string { 12 | if (!dirArg) { 13 | throw new Error("You didn't give a directory path") 14 | } 15 | const targetDir = dirArg.startsWith('.') 16 | ? path.join(process.cwd(), dirArg) 17 | : dirArg.startsWith('/') 18 | ? dirArg 19 | : (() => { 20 | throw new Error('invalid directory path') 21 | })() 22 | 23 | return targetDir 24 | } 25 | export function isFilePath(absPath: string) { 26 | return (absPath.split(path.sep).pop()?.split('.').length ?? 0) > 1 27 | } 28 | 29 | function createOutOfRangeError(filePath: string, lineIndex: number) { 30 | return new RangeError( 31 | `Line with index ${lineIndex} does not exist in '${filePath}'.` 32 | ) 33 | } 34 | 35 | export function getLineByIndexesFromFile( 36 | filePath: string, 37 | lineIndexes: CollectLineNumbers 38 | ): Promise { 39 | const linesCollect: Partial = {} 40 | return new Promise((resolve, reject) => { 41 | if ( 42 | Object.values(lineIndexes).some( 43 | (lineIndex) => lineIndex <= 0 || lineIndex % 1 !== 0 44 | ) 45 | ) 46 | return reject(new RangeError(`Invalid line number`)) 47 | 48 | let cursor = 1 49 | const input = fs.createReadStream(filePath) 50 | const rl = readline.createInterface({ input }) 51 | 52 | function read(line: string) { 53 | if (cursor === lineIndexes.next) { 54 | // the last index 55 | rl.close() 56 | input.close() 57 | linesCollect.next = line 58 | resolve(linesCollect as CollectLines) 59 | } else if (cursor === lineIndexes.target) { 60 | linesCollect.target = line 61 | } else if (cursor === lineIndexes.prev) { 62 | linesCollect.prev = line 63 | } 64 | cursor++ 65 | } 66 | 67 | rl.on('line', (line) => read(line)) 68 | rl.on('error', reject) 69 | 70 | input.on('end', () => { 71 | read('') 72 | reject(createOutOfRangeError(filePath, lineIndexes.target)) 73 | }) 74 | }) 75 | } 76 | -------------------------------------------------------------------------------- /src/ts-errs-map.ts: -------------------------------------------------------------------------------- 1 | import path from 'node:path' 2 | import url from 'node:url' 3 | import { readFile, rm, writeFile } from 'node:fs/promises' 4 | import jsonc from 'jsonc-parser' 5 | import chalk from 'chalk' 6 | import ora from 'ora' 7 | import { execaCommand } from 'execa' 8 | import { 9 | showFirstTscCompilePathInfo, 10 | showTscReCompilePathInfo, 11 | } from './show-console-print' 12 | import { getLineByIndexesFromFile, getRawErrsSumCount } from './utils' 13 | import type { 14 | CollectLineNumbers, 15 | Context, 16 | RawErrsMap, 17 | TscErrorInfo, 18 | } from './types' 19 | 20 | const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) 21 | const newLineRegExp = /\r?\n/ 22 | const errCodeRegExp = /error TS(?\d+)/ 23 | const tscSpinner = ora(chalk.yellow('Start tsc compiling ...')) 24 | 25 | function guardErrsMapNotEmpty(rawErrsMap: RawErrsMap) { 26 | const errsCount = getRawErrsSumCount(rawErrsMap) 27 | if (errsCount === 0) { 28 | console.log(`\n🎉 ${chalk.bold.greenBright('Found 0 Errors.')}\n`) 29 | process.exit() 30 | } 31 | } 32 | 33 | async function getErrPreviewLineByIndexFromFile( 34 | filePath: string, 35 | line: number, 36 | errMsg: string 37 | ) { 38 | const lineNumbers: CollectLineNumbers = { 39 | prev: line - 1 < 0 ? undefined : line - 1, 40 | target: line, 41 | next: line + 1, 42 | } 43 | const { target, next, prev } = await getLineByIndexesFromFile( 44 | filePath, 45 | lineNumbers 46 | ) 47 | return `${errMsg} 48 | 49 | ${prev && `${chalk.gray(`${String(line - 1)} ┆`)}${prev}`} 50 | ${chalk.bold.red(`${String(line)} ┆`)}${chalk.bold.underline(target)} 51 | ${chalk.gray(`${String(line + 1)} ┆`)}${next}` 52 | } 53 | 54 | async function makeTscErrorInfo( 55 | errInfo: string, 56 | rootAbsPath: string 57 | ): Promise<[string, TscErrorInfo]> { 58 | const panicMsg = 'failed to parsing error info.' 59 | const [errFilePathPos = '', ...errMsgRawArr] = errInfo.split(':') 60 | if ( 61 | !errFilePathPos || 62 | errMsgRawArr.length === 0 || 63 | errMsgRawArr.join('').length === 0 64 | ) { 65 | throw new Error(`${panicMsg} (on first split)`) 66 | } 67 | const errMsgRaw = errMsgRawArr.join('').trim() 68 | 69 | // get filePath, line, col 70 | const [errFilePath, errPos] = errFilePathPos 71 | .slice(0, -1) // removes the ')' 72 | .split('(') 73 | if (!errFilePath || !errPos) { 74 | throw new Error(`${panicMsg} (on \`errFilePath\` or \`errPos\`)`) 75 | } 76 | 77 | const [errLine, errCol] = errPos.split(',') 78 | if (!errLine || !errCol) { 79 | throw new Error(`${panicMsg} (on \`errLine\` or \`errCol\`)`) 80 | } 81 | 82 | // get errCode, errMsg 83 | const execArr = errCodeRegExp.exec(errMsgRaw) 84 | if (!execArr) { 85 | throw new Error(`${panicMsg} (on \`errMsgRegExp.exec\`)`) 86 | } 87 | 88 | const errCodeStr = execArr.groups?.errCode ?? '' 89 | if (!errCodeStr) { 90 | throw new Error(`${panicMsg} (on \`errCode\`)`) 91 | } 92 | 93 | const line = Number(errLine), 94 | col = Number(errCol), 95 | errCode = Number(errCodeStr) 96 | const errMsg = await getErrPreviewLineByIndexFromFile( 97 | path.join(rootAbsPath, errFilePath), 98 | line, 99 | errMsgRaw.slice(`error TS${errCode}`.length) 100 | ) 101 | return [ 102 | errFilePath, 103 | { 104 | filePath: errFilePath, 105 | errCode, 106 | line, 107 | col, 108 | errMsg, 109 | }, 110 | ] 111 | } 112 | export async function getTscCompileStdout( 113 | // The `cwd` dir requires an existing `tsconfig.json` file 114 | { root: rootAbsPath = process.cwd(), options }: Context, 115 | isReCompile = false 116 | ) { 117 | const baseConfigPath = path.join(rootAbsPath, 'tsconfig.json') 118 | const baseConfigJSON = jsonc.parse(String(await readFile(baseConfigPath))) 119 | const tmpConfigPath = path.join(rootAbsPath, 'tsconfig.tmp.json') 120 | 121 | // Use a temp tsconfig 122 | try { 123 | const tmpTsConfig: Record = { ...baseConfigJSON } 124 | 125 | // Override some options 126 | if (!tmpTsConfig.compilerOptions) { 127 | tmpTsConfig.compilerOptions = {} 128 | } 129 | tmpTsConfig.compilerOptions.emitDeclarationOnly = false // Avoid conflict with --noEmit 130 | tmpTsConfig.compilerOptions.incremental = true 131 | tmpTsConfig.compilerOptions.tsBuildInfoFile = path.join( 132 | __dirname, 133 | 'tsconfig.tmp.tsbuildinfo' 134 | ) 135 | 136 | const tsconfigFinalContent = JSON.stringify(tmpTsConfig, null, 2) 137 | await writeFile(tmpConfigPath, tsconfigFinalContent) 138 | } catch (err) { 139 | console.log( 140 | `${chalk.red('Failed to process `tsconfig.json`')}\n${chalk.red(err)}` 141 | ) 142 | process.exit() 143 | } 144 | 145 | const tscErrorStdoutChunks: string[] = [] 146 | try { 147 | const cmd = `${options.engine} --noEmit --pretty false ${ 148 | options.engine === 'vue-tsc' ? '' : `-p ${tmpConfigPath}` 149 | }` 150 | isReCompile 151 | ? showTscReCompilePathInfo(rootAbsPath) 152 | : showFirstTscCompilePathInfo({ 153 | cmd, 154 | rootAbsPath, 155 | }) 156 | tscSpinner.start() 157 | const tscProcess = execaCommand(cmd, { 158 | cwd: rootAbsPath, 159 | stdout: 'pipe', 160 | reject: false, 161 | }) 162 | tscProcess.stdout 163 | ?.on('data', (errInfoChunk) => { 164 | tscErrorStdoutChunks.push(String(errInfoChunk)) 165 | }) 166 | .on('end', async () => { 167 | tscSpinner.succeed(chalk.yellow('tsc compiling finished.')) 168 | await rm(tmpConfigPath, { force: true }) 169 | }) 170 | await tscProcess 171 | } catch (err) { 172 | tscSpinner.succeed(chalk.yellow('tsc compiling failed.')) 173 | console.log(chalk.red(`Error: ${err}`)) 174 | } 175 | return tscErrorStdoutChunks.join('') 176 | } 177 | export async function getRawErrsMapFromTsCompile( 178 | ctx: Context, 179 | isReCompile = false 180 | ) { 181 | const { root: rootAbsPath } = ctx 182 | const tscErrorStdout = await getTscCompileStdout(ctx, isReCompile) 183 | const rawErrsMap: RawErrsMap = new Map() 184 | 185 | // Merge details line with main line (i.e. which contains file path) 186 | const infos = await Promise.all( 187 | tscErrorStdout 188 | .split(newLineRegExp) 189 | .reduce((prev, next) => { 190 | if (!next) { 191 | return prev 192 | } else if (!next.startsWith(' ')) { 193 | prev.push(next) 194 | } else { 195 | prev[prev.length - 1] += `\n${next}` 196 | } 197 | return prev 198 | }, []) 199 | .map((errInfoLine) => makeTscErrorInfo(errInfoLine, rootAbsPath)) 200 | ) 201 | infos.forEach(([errFilePath, errInfo]) => { 202 | if (!rawErrsMap.has(errFilePath)) { 203 | rawErrsMap.set(errFilePath, [errInfo]) 204 | } else { 205 | rawErrsMap.get(errFilePath)?.push(errInfo) 206 | } 207 | }) 208 | 209 | guardErrsMapNotEmpty(rawErrsMap) 210 | return rawErrsMap 211 | } 212 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import path from 'node:path' 3 | import chokidar from 'chokidar' 4 | import cac from 'cac' 5 | import chalk from 'chalk' 6 | import inquirer from 'inquirer' 7 | import inquirerFileTreeSelection from '../lib/inquirer-file-tree-selection-prompt' 8 | import ensureTscVersion from './check-tsc-version' 9 | import { showAppHeader } from './show-console-print' 10 | import { getRawErrsSumCount, getTargetDir, isFilePath } from './utils' 11 | import { getRawErrsMapFromTsCompile } from './ts-errs-map' 12 | import { getCliOptionsContext } from './setup-cli-options' 13 | import type { Context, RawErrsMap } from './types' 14 | 15 | inquirer.registerPrompt('file-tree-selection', inquirerFileTreeSelection) 16 | 17 | function showFileErrs(options: { 18 | selectedPath: string 19 | rootAbsPath: string 20 | rawErrsMap: RawErrsMap 21 | }) { 22 | const { selectedPath, rootAbsPath, rawErrsMap } = options 23 | const foundErrsByFilePath = 24 | [...rawErrsMap.entries()].find(([relativeToRoot]) => 25 | path.join(rootAbsPath, relativeToRoot).includes(selectedPath) 26 | )?.[1] ?? [] 27 | const selectedFileErrsStdout = foundErrsByFilePath 28 | .map((errInfo) => { 29 | return ` 30 | ${chalk.bold.red( 31 | `${path.join(rootAbsPath, errInfo.filePath)}(${errInfo.line},${errInfo.col})` 32 | )} 33 | ${chalk.blue(`error TS${errInfo.errCode}`)}: ${errInfo.errMsg} 34 | ` 35 | }) 36 | .join('\n') 37 | console.log(selectedFileErrsStdout) 38 | } 39 | function isOptionPathContained({ 40 | root, 41 | optionPath, 42 | needSepSuffix = false, 43 | }: { 44 | root: string 45 | optionPath: string 46 | needSepSuffix?: boolean 47 | }) { 48 | return (relativeToRoot: string) => { 49 | const absPath = path.join(root, relativeToRoot) 50 | // Appending '/' is aimed to avoid last path unit of a directory is optionPath's sub-string 51 | const isAbsPathIncludeOptionPath = absPath.startsWith( 52 | `${optionPath}${needSepSuffix && !isFilePath(optionPath) ? path.sep : ''}` 53 | ) 54 | return isAbsPathIncludeOptionPath 55 | } 56 | } 57 | function createOptionPathTransformer({ 58 | root, 59 | targetAbsPath, 60 | rawErrsMap, 61 | }: Context) { 62 | return (optionPath: string) => { 63 | const errsCountNumLength = String(getRawErrsSumCount(rawErrsMap)).length 64 | if (optionPath === targetAbsPath) { 65 | return chalk.yellowBright(`root: ${targetAbsPath}`) 66 | } 67 | 68 | const optionPathLastUnit = optionPath.split(path.sep).pop() ?? '' 69 | const optionPathIsFilePath = isFilePath(optionPathLastUnit) 70 | const colorFn = optionPathIsFilePath 71 | ? chalk.blue 72 | : chalk.italic.bold.yellowBright 73 | const errsCountInPath = [...rawErrsMap.keys()] 74 | .filter(isOptionPathContained({ root, optionPath, needSepSuffix: true })) 75 | .reduce((prev, hasErrPath) => { 76 | return prev + (rawErrsMap.get(hasErrPath)?.length ?? 0) 77 | }, 0) 78 | return `${chalk.bold.redBright( 79 | `${String(errsCountInPath).padStart(errsCountNumLength)} errors` 80 | )} ${colorFn( 81 | `${optionPathIsFilePath ? '\uF0F6' : '\uF413'} ${optionPathLastUnit}` 82 | )}` 83 | } 84 | } 85 | function showSelectFilePrompt(ctx: Context) { 86 | const { root, targetAbsPath, rawErrsMap, openedDirs } = ctx 87 | const prompt = inquirer.prompt({ 88 | type: 'file-tree-selection', 89 | name: 'file', 90 | message: 'select file to show error details', 91 | pageSize: 20, 92 | root: targetAbsPath, // this `root` property is different, it's used for display a directory's file tree 93 | // Maybe some tsc errors are out of this root 94 | onlyShowValid: true, 95 | validate: (optionPath: string) => { 96 | const hasErrFilesUnderRoot = [...rawErrsMap.keys()].some( 97 | isOptionPathContained({ root, optionPath }) 98 | ) 99 | return hasErrFilesUnderRoot 100 | }, 101 | transformer: createOptionPathTransformer(ctx), 102 | openedDirs: [...openedDirs], 103 | default: ctx.lastActivePath, 104 | onDirAction: (path, actionType) => { 105 | if (actionType === 'open') { 106 | ctx.openedDirs.add(path) 107 | } else { 108 | ctx.openedDirs.delete(path) 109 | } 110 | }, 111 | }) 112 | return prompt 113 | } 114 | 115 | try { 116 | await ensureTscVersion() 117 | const cli = cac('tsc-err-dirs') 118 | cli.option('-e , --engine ', 'Select tsc execution program', { 119 | default: 'tsc', 120 | }) 121 | 122 | showAppHeader() 123 | 124 | const parsedEnvArgs = cli.parse() 125 | const rootDirArg = parsedEnvArgs.args[0] 126 | const rootAbsPath = getTargetDir(rootDirArg) 127 | if (isFilePath(rootAbsPath)) { 128 | throw new Error("Can't run tsc-err-dirs on single file.") 129 | } 130 | 131 | const ctx: Context = { 132 | root: rootAbsPath, 133 | targetAbsPath: rootAbsPath, 134 | rawErrsMap: new Map(), 135 | openedDirs: new Set(), 136 | options: { 137 | ...getCliOptionsContext(cli), 138 | }, 139 | } 140 | 141 | // Generate a map to store errors info 142 | const _initRawErrsMap = await getRawErrsMapFromTsCompile(ctx) 143 | ctx.rawErrsMap = _initRawErrsMap 144 | 145 | // Watch the `rootAbsPath` for any changes 146 | const rootWatcher = await new Promise((resolve) => { 147 | const watchTarget = `${path.join(rootAbsPath, '**/*.(ts|tsx)')}` 148 | const _watcher = chokidar 149 | .watch(watchTarget, { 150 | awaitWriteFinish: true, 151 | ignored: ['node_modules'], 152 | }) 153 | .on('ready', () => { 154 | console.log( 155 | `${chalk.blue(`[WATCH] ${chalk.white(watchTarget)} is ready`)}\n` 156 | ) 157 | resolve(_watcher) 158 | }) 159 | }) 160 | 161 | // Bind watcher to the selector view 162 | const selectFile = async (ctx: Context) => { 163 | return new Promise((resolveSelectFile, rejectSelectFile) => { 164 | const prompt = showSelectFilePrompt(ctx) 165 | rootWatcher.on('change', (changedPath) => { 166 | // @ts-expect-error: The `close` method is protected in TypeScript 167 | // But we need it to close the selector view 168 | prompt.ui.close() 169 | const fileChangedMsg = `\n${chalk.blue( 170 | `[WATCH] ${chalk.white(changedPath)} has changed ...` 171 | )}` 172 | rejectSelectFile( 173 | new Error(fileChangedMsg) // throw out message for chokidar change event 174 | ) 175 | }) 176 | 177 | prompt.then(({ file: selectedFilePath }) => { 178 | console.log() // start a new line to avoid next line print on the same line 179 | resolveSelectFile(selectedFilePath) 180 | }) 181 | }) 182 | } 183 | 184 | // Show `File-Select` prompt view 185 | let selectedPath = rootAbsPath 186 | do { 187 | // Aggregation by file path and make an interactive view to select 188 | try { 189 | selectedPath = await selectFile({ 190 | ...ctx, 191 | targetAbsPath: selectedPath, 192 | }) 193 | } catch (error) { 194 | // Re-generate a map to store errors info 195 | if (error instanceof Error) { 196 | console.log(error.message) 197 | ctx.rawErrsMap.clear() 198 | ctx.rawErrsMap = await getRawErrsMapFromTsCompile(ctx, true) 199 | continue 200 | } 201 | } 202 | if (!selectedPath) { 203 | throw new Error('failed to select file!') 204 | } 205 | ctx.lastActivePath = selectedPath 206 | if (isFilePath(selectedPath)) { 207 | // show selected file's pretty tsc errors information 208 | showFileErrs({ 209 | selectedPath, 210 | rootAbsPath, 211 | rawErrsMap: ctx.rawErrsMap, 212 | }) 213 | selectedPath = rootAbsPath 214 | } else { 215 | ctx.openedDirs.add(selectedPath) 216 | } 217 | // eslint-disable-next-line no-constant-condition 218 | } while (true) 219 | } catch (err) { 220 | console.log(chalk.red(`\n${err}`)) 221 | } 222 | -------------------------------------------------------------------------------- /lib/inquirer-file-tree-selection-prompt/index.ts: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /** 3 | * `file-tree-slection` type prompt 4 | * 5 | * forked from https://github.com/anc95/inquirer-file-tree-selection 6 | */ 7 | 8 | import path from 'node:path' 9 | import fs from 'node:fs' 10 | import chalk from 'chalk' 11 | import figures from 'figures' 12 | import cliCursor from 'cli-cursor' 13 | import { fromEvent } from 'rxjs' 14 | import { filter, map, share, takeUntil } from 'rxjs/operators' 15 | import observe from 'inquirer/lib/utils/events.js' 16 | import Base from 'inquirer/lib/prompts/base.js' 17 | import Paginator from 'inquirer/lib/utils/paginator.js' 18 | import type { Answers, Question, Transformer } from 'inquirer' 19 | import type { Node } from './types' 20 | 21 | type FileTreeSelectionPromptOptions = Pick< 22 | Question, 23 | 'type' | 'name' | 'message' | 'filter' | 'validate' | 'default' 24 | > & { 25 | transformer?: Transformer 26 | /** 27 | * count of items show in terminal. default: 10 28 | */ 29 | pageSize?: number 30 | /** 31 | * if true, will only show directory. Default: false 32 | */ 33 | onlyShowDir?: boolean 34 | /** 35 | * if true, will only show valid files (if validate is provided). Default: false. 36 | */ 37 | onlyShowValid?: boolean 38 | /** 39 | * if true, will hide children of valid directories (if validate is provided). Default: false. 40 | */ 41 | hideChildrenOfValid?: boolean 42 | /** 43 | * Default to be current process.cwd() 44 | */ 45 | root?: string 46 | /** 47 | * Hide root, Default: false 48 | */ 49 | hideRoot?: boolean 50 | /** 51 | * show `..` in inside root dir, and you the user can press space on it to go upper directory. Default: false 52 | */ 53 | enableGoUpperDirectory?: boolean 54 | /** 55 | * cache opened directories 56 | * () 57 | */ 58 | openedDirs?: string[] 59 | onDirAction?: (path: string, actionType: 'open' | 'close') => void 60 | } 61 | 62 | declare module 'inquirer' { 63 | interface QuestionMap { 64 | fileTreeSelection: Omit, 'type'> & { 65 | type: 'file-tree-selection' 66 | } 67 | } 68 | } 69 | 70 | const isSubPath = (parent: string, child: string) => { 71 | return !path.relative(parent, child).startsWith('.') 72 | } 73 | const getParentDir = (dir: string) => { 74 | return path.dirname(dir) 75 | } 76 | const getUpperDirNode = (dir: string) => { 77 | const parentDir = getParentDir(dir) 78 | 79 | const parentNode: Node = { 80 | name: '..', 81 | path: parentDir, 82 | type: 'directory', 83 | isValid: true, 84 | } 85 | 86 | return parentNode 87 | } 88 | 89 | /** 90 | * type: string 91 | * onlyShowDir: boolean (default: false) 92 | */ 93 | class FileTreeSelectionPrompt extends Base< 94 | FileTreeSelectionPromptOptions & { states: any } 95 | > { 96 | rootNode: Node 97 | firstRender: boolean 98 | shownList: Node[] 99 | paginator: Paginator 100 | done?: (...args: any[]) => void 101 | active?: Node 102 | 103 | get fileTree() { 104 | if (this.opt.hideRoot) { 105 | return this.rootNode 106 | } 107 | 108 | return { 109 | children: [this.rootNode], 110 | } 111 | } 112 | 113 | constructor(questions: any, rl: any, answers: any) { 114 | super(questions, rl, answers) 115 | 116 | const root = path.resolve(process.cwd(), this.opt.root || '.') 117 | const rootNode: Node = { 118 | path: root, 119 | type: 'directory', 120 | name: '.(root directory)', 121 | _rootNode: true, 122 | } 123 | 124 | this.rootNode = rootNode 125 | 126 | this.shownList = [] 127 | 128 | this.firstRender = true 129 | 130 | this.opt = { 131 | ...{ 132 | default: null, 133 | pageSize: 10, 134 | onlyShowDir: false, 135 | }, 136 | ...this.opt, 137 | } 138 | 139 | this.paginator = new Paginator(this.screen) 140 | } 141 | 142 | /** 143 | * Start the Inquiry session 144 | * @param {Function} cb Callback when prompt is done 145 | * @return {this} 146 | */ 147 | 148 | async _run(cb: any) { 149 | this.done = cb 150 | 151 | const events = observe(this.rl) 152 | 153 | const validation = this.handleSubmitEvents( 154 | events.line.pipe(map(() => this.active!.path)) 155 | ) 156 | validation.success.forEach(this.onSubmit.bind(this)) 157 | validation.error.forEach(this.onError.bind(this)) 158 | 159 | events.normalizedUpKey 160 | .pipe(takeUntil(validation.success)) 161 | .forEach(this.onUpKey.bind(this)) 162 | events.normalizedDownKey 163 | .pipe(takeUntil(validation.success)) 164 | .forEach(this.onDownKey.bind(this)) 165 | events.keypress 166 | .pipe( 167 | filter(({ key }) => key.name === 'right'), 168 | share() 169 | ) 170 | .pipe(takeUntil(validation.success)) 171 | .forEach(this.onRigthKey.bind(this)) 172 | events.keypress 173 | .pipe( 174 | filter(({ key }) => key.name === 'left'), 175 | share() 176 | ) 177 | .pipe(takeUntil(validation.success)) 178 | .forEach(this.onLeftKey.bind(this)) 179 | events.keypress 180 | .pipe( 181 | filter(({ key }) => key.name === 'q'), 182 | share() 183 | ) 184 | .pipe(takeUntil(validation.success)) 185 | .forEach(() => { 186 | process.exit(0) 187 | }) 188 | 189 | events.spaceKey 190 | .pipe(takeUntil(validation.success)) 191 | .forEach(this.onSpaceKey.bind(this, false)) 192 | 193 | function normalizeKeypressEvents(value: string, key: any) { 194 | return { value, key: key || {} } 195 | } 196 | fromEvent((this.rl as any).input, 'keypress', normalizeKeypressEvents) 197 | .pipe( 198 | filter(({ key }) => key && key.name === 'tab'), 199 | share() 200 | ) 201 | .pipe(takeUntil(validation.success)) 202 | .forEach(this.onSpaceKey.bind(this, true)) 203 | 204 | cliCursor.hide() 205 | if (this.firstRender) { 206 | const rootNode = this.rootNode 207 | await this.prepareChildren(rootNode) 208 | rootNode.open = true 209 | this.active = this.active || rootNode.children?.[0] 210 | if (this.active) { 211 | await this.prepareChildren(this.active) 212 | } 213 | this.render() 214 | } 215 | 216 | return this 217 | } 218 | 219 | renderFileTree(root = this.fileTree, indent = 2) { 220 | const children = root.children || [] 221 | 222 | let output = '' 223 | const transformer = this.opt.transformer 224 | const isFinal = this.status === 'answered' 225 | let showValue 226 | 227 | children.forEach((itemPath) => { 228 | if (this.opt.onlyShowDir && itemPath.type !== 'directory') { 229 | return 230 | } 231 | 232 | this.shownList.push(itemPath) 233 | const prefix = 234 | itemPath.type === 'directory' 235 | ? itemPath.open 236 | ? `${figures.arrowDown} ` 237 | : `${figures.arrowRight} ` 238 | : itemPath === this.active 239 | ? `${figures.play} ` 240 | : '' 241 | 242 | // when multiple is true, add radio icon at prefix 243 | const safeIndent = 244 | indent - prefix.length + 2 > 0 ? indent - prefix.length + 2 : 0 245 | 246 | if (itemPath.name === '..') { 247 | showValue = `${' '.repeat( 248 | safeIndent 249 | )}${prefix}..(Press \`Space\` to go parent directory)\n` 250 | } else if (transformer) { 251 | const transformedValue = transformer(itemPath.path, this.answers, { 252 | isFinal, 253 | }) 254 | showValue = `${' '.repeat(safeIndent) + prefix + transformedValue}\n` 255 | } else { 256 | showValue = `${ 257 | ' '.repeat(safeIndent) + 258 | prefix + 259 | itemPath.name + 260 | (itemPath.type === 'directory' ? path.sep : '') 261 | }\n` 262 | } 263 | 264 | if (itemPath === this.active && itemPath.isValid) { 265 | output += chalk.bold.cyan(showValue) 266 | } else if (itemPath === this.active && !itemPath.isValid) { 267 | output += chalk.red(showValue) 268 | } else { 269 | output += showValue 270 | } 271 | if (itemPath.open) { 272 | output += this.renderFileTree(itemPath, indent + 2) 273 | } 274 | }) 275 | 276 | return output 277 | } 278 | 279 | getChildrenByPath(_path: string, parentNode: Node): Node[] { 280 | return fs.readdirSync(_path, { withFileTypes: true }).map((item) => { 281 | const childPath = path.resolve(_path, item.name) 282 | return { 283 | parent: parentNode, 284 | type: item.isDirectory() 285 | ? 'directory' 286 | : ('file' as 'directory' | 'file'), 287 | name: item.name, 288 | path: childPath, 289 | } 290 | }) 291 | } 292 | 293 | async prepareChildren(node: Node): Promise { 294 | const parentPath = node.path 295 | 296 | try { 297 | if ( 298 | node.name === '..' || 299 | !fs.lstatSync(parentPath).isDirectory() || 300 | node.children || 301 | node.open === true 302 | ) { 303 | return 304 | } 305 | 306 | const children = this.getChildrenByPath(parentPath, node) 307 | if (this.opt.openedDirs && this.opt.openedDirs.length > 0) { 308 | for (const child of children) { 309 | if (this.opt.openedDirs.includes(child.path)) { 310 | await this.prepareChildren(child) 311 | child.open = true 312 | } 313 | } 314 | } 315 | 316 | node.children = children 317 | } catch { 318 | // maybe for permission denied, we cant read the dir 319 | // do nothing here 320 | } 321 | 322 | const validate = this.opt.validate 323 | const filter = async (val: any) => { 324 | if (!this.opt.filter) { 325 | return val 326 | } 327 | 328 | // eslint-disable-next-line no-return-await, unicorn/no-array-method-this-argument 329 | return await this.opt.filter(val, this.answers) 330 | } 331 | 332 | if (validate) { 333 | const addValidity = async (fileObj: Node) => { 334 | const isValid = await validate(await filter(fileObj.path), this.answers) 335 | fileObj.isValid = false 336 | if (isValid === true) { 337 | if (this.opt.onlyShowDir) { 338 | if (fileObj.type === 'directory') { 339 | fileObj.isValid = true 340 | } 341 | } else { 342 | fileObj.isValid = true 343 | } 344 | } 345 | if (fileObj.children) { 346 | if (this.opt.hideChildrenOfValid && fileObj.isValid) { 347 | fileObj.children.length = 0 348 | } 349 | const children = fileObj.children.map((x: any) => x) 350 | for ( 351 | let index = 0, length = children.length; 352 | index < length; 353 | index++ 354 | ) { 355 | const child = children[index] 356 | await addValidity(child) 357 | if (child.isValid) { 358 | fileObj.hasValidChild = true 359 | } 360 | if ( 361 | this.opt.onlyShowValid && 362 | !child.hasValidChild && 363 | !child.isValid 364 | ) { 365 | const spliceIndex = fileObj.children.indexOf(child) 366 | fileObj.children.splice(spliceIndex, 1) 367 | } 368 | } 369 | } 370 | } 371 | await addValidity(node) 372 | } 373 | 374 | if (this.opt.enableGoUpperDirectory && node === this.rootNode) { 375 | this.rootNode.children?.unshift(getUpperDirNode(this.rootNode.path)) 376 | } 377 | 378 | // When it's single selection and has default value, we should expand to the default file. 379 | if (this.firstRender && this.opt.default) { 380 | const defaultPath = this.opt.default 381 | const founded = node.children?.find((item) => { 382 | if (item.name === '..') { 383 | return false 384 | } 385 | if ( 386 | item.path === defaultPath || 387 | defaultPath.includes(`${item.path}${path.sep}`) 388 | ) { 389 | item.open = true 390 | return true 391 | } 392 | return false 393 | }) 394 | 395 | if (founded) { 396 | if (founded.path === defaultPath) { 397 | this.active = founded 398 | 399 | let parent = founded.parent 400 | 401 | while (parent && !parent._rootNode) { 402 | parent.open = true 403 | parent = parent.parent 404 | } 405 | } else { 406 | // eslint-disable-next-line no-return-await 407 | return await this.prepareChildren(founded) 408 | } 409 | } 410 | } 411 | 412 | !this.firstRender && this.render() 413 | } 414 | 415 | /** 416 | * Render the prompt to screen 417 | * @return {FileTreeSelectionPrompt} self 418 | */ 419 | render(error?: any) { 420 | // Render question 421 | let message = this.getQuestion() 422 | 423 | if (this.firstRender) { 424 | message += chalk.dim('(Use arrow keys, Use space to toggle folder)') 425 | } 426 | 427 | if (this.status === 'answered') { 428 | message += chalk.cyan(this.active?.path ?? '') 429 | } else { 430 | this.shownList = [] 431 | const fileTreeStr = this.renderFileTree() 432 | message += `\n${this.paginator.paginate( 433 | `${fileTreeStr}----------------`, 434 | this.shownList.indexOf(this.active!), 435 | this.opt.pageSize 436 | )}` 437 | } 438 | 439 | const bottomContent = error ? `\n${chalk.red('>> ')}${error}` : '' 440 | 441 | this.firstRender = false 442 | this.screen.render(message, bottomContent) 443 | } 444 | 445 | onEnd(state: { value: any }) { 446 | this.status = 'answered' 447 | // this.answer = state.value; 448 | 449 | // Re-render prompt 450 | this.render() 451 | 452 | this.screen.done() 453 | this.done?.(state.value) 454 | } 455 | 456 | onError(state: { isValid: any }) { 457 | this.render(state.isValid) 458 | } 459 | 460 | /** 461 | * When user press `enter` key 462 | */ 463 | 464 | onSubmit(state: { value: any }) { 465 | this.status = 'answered' 466 | 467 | this.render() 468 | 469 | this.screen.done() 470 | cliCursor.show() 471 | this.done?.(state.value) 472 | } 473 | 474 | moveActive(distance = 0) { 475 | const currentIndex = this.shownList.indexOf(this.active!) 476 | let index = currentIndex + distance 477 | 478 | if (index >= this.shownList.length) { 479 | index = 0 480 | } else if (index < 0) { 481 | index = this.shownList.length - 1 482 | } 483 | 484 | this.active = this.shownList[index] 485 | 486 | if (this.active.name !== '..') { 487 | this.prepareChildren(this.active) 488 | } 489 | 490 | this.render() 491 | } 492 | 493 | /** 494 | * When user press a key 495 | */ 496 | onUpKey() { 497 | this.moveActive(-1) 498 | } 499 | 500 | onDownKey() { 501 | this.moveActive(1) 502 | } 503 | 504 | onLeftKey() { 505 | if (!this.active) return 506 | if ( 507 | (this.active.type === 'file' || !this.active.open) && 508 | this.active.parent 509 | ) { 510 | this.active = this.active.parent 511 | } 512 | this.active.open = false 513 | this.render() 514 | this.opt.onDirAction?.(this.active.path, 'close') 515 | } 516 | 517 | onRigthKey() { 518 | if (!this.active) return 519 | this.active.open = true 520 | this.render() 521 | this.opt.onDirAction?.(this.active.path, 'open') 522 | } 523 | 524 | async onSpaceKey(triggerByTab = false) { 525 | if (!this.active) return 526 | if ( 527 | !triggerByTab && 528 | this.active.name === '..' && 529 | isSubPath(this.active.path, this.rootNode.path) 530 | ) { 531 | this.rootNode = { 532 | ...this.active, 533 | name: path.basename(this.active.path), 534 | } 535 | await this.prepareChildren(this.rootNode) 536 | this.active = this.rootNode.children![0] 537 | this.firstRender = true 538 | this.rootNode.open = true 539 | this.render() 540 | this.firstRender = false 541 | return 542 | } 543 | 544 | if (!triggerByTab) { 545 | if (this.active.isValid === false) { 546 | return 547 | } 548 | 549 | this.render() 550 | return 551 | } 552 | 553 | if (this.active.children && this.active.children.length === 0) { 554 | return 555 | } 556 | 557 | this.active.open = !this.active.open 558 | this.render() 559 | } 560 | } 561 | 562 | export default FileTreeSelectionPrompt 563 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | bin-version: 9 | specifier: ^6.0.0 10 | version: 6.0.0 11 | cac: 12 | specifier: ^6.7.14 13 | version: 6.7.14 14 | chalk: 15 | specifier: ^5.0.1 16 | version: 5.0.1 17 | chokidar: 18 | specifier: ^3.5.3 19 | version: 3.5.3 20 | cli-cursor: 21 | specifier: ^4.0.0 22 | version: 4.0.0 23 | execa: 24 | specifier: ^6.1.0 25 | version: 6.1.0 26 | figures: 27 | specifier: ^5.0.0 28 | version: 5.0.0 29 | inquirer: 30 | specifier: ^9.1.1 31 | version: 9.1.1 32 | jsonc-parser: 33 | specifier: ^3.2.0 34 | version: 3.2.0 35 | node-fetch: 36 | specifier: ^3.2.10 37 | version: 3.2.10 38 | ora: 39 | specifier: ^6.1.2 40 | version: 6.1.2 41 | rxjs: 42 | specifier: ^7.5.6 43 | version: 7.5.6 44 | semver: 45 | specifier: ^7.3.7 46 | version: 7.3.7 47 | semver-truncate: 48 | specifier: ^3.0.0 49 | version: 3.0.0 50 | 51 | devDependencies: 52 | '@sxzz/eslint-config-prettier': 53 | specifier: ^2.4.1 54 | version: 2.4.1(eslint@8.23.0) 55 | '@sxzz/eslint-config-ts': 56 | specifier: ^2.4.1 57 | version: 2.4.1(eslint@8.23.0)(typescript@4.8.2) 58 | '@types/inquirer': 59 | specifier: ^9.0.1 60 | version: 9.0.1 61 | '@types/node': 62 | specifier: '*' 63 | version: 18.6.1 64 | '@types/semver': 65 | specifier: ^7.3.12 66 | version: 7.3.12 67 | bumpp: 68 | specifier: ^8.2.1 69 | version: 8.2.1 70 | eslint: 71 | specifier: ^8.23.0 72 | version: 8.23.0 73 | eslint-define-config: 74 | specifier: ^1.6.0 75 | version: 1.6.0 76 | fast-glob: 77 | specifier: ^3.2.11 78 | version: 3.2.11 79 | prettier: 80 | specifier: ^2.7.1 81 | version: 2.7.1 82 | tsup: 83 | specifier: ^6.2.3 84 | version: 6.2.3(typescript@4.8.2) 85 | tsx: 86 | specifier: ^3.8.2 87 | version: 3.8.2 88 | typescript: 89 | specifier: ^4.8.2 90 | version: 4.8.2 91 | vitest: 92 | specifier: ^0.22.1 93 | version: 0.22.1 94 | 95 | packages: 96 | 97 | /@babel/code-frame@7.18.6: 98 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 99 | engines: {node: '>=6.9.0'} 100 | dependencies: 101 | '@babel/highlight': 7.18.6 102 | dev: true 103 | 104 | /@babel/helper-validator-identifier@7.18.6: 105 | resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} 106 | engines: {node: '>=6.9.0'} 107 | dev: true 108 | 109 | /@babel/highlight@7.18.6: 110 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 111 | engines: {node: '>=6.9.0'} 112 | dependencies: 113 | '@babel/helper-validator-identifier': 7.18.6 114 | chalk: 2.4.2 115 | js-tokens: 4.0.0 116 | dev: true 117 | 118 | /@esbuild-kit/cjs-loader@2.3.3: 119 | resolution: {integrity: sha512-Rt4O1mXlPEDVxvjsHLgbtHVdUXYK9C1/6ThpQnt7FaXIjUOsI6qhHYMgALhNnlIMZffag44lXd6Dqgx3xALbpQ==} 120 | dependencies: 121 | '@esbuild-kit/core-utils': 2.1.0 122 | get-tsconfig: 4.1.0 123 | dev: true 124 | 125 | /@esbuild-kit/core-utils@2.1.0: 126 | resolution: {integrity: sha512-fZirrc2KjeTumVjE4bpleWOk2gD83b7WuGeQqOceKFQL+heNKKkNB5G5pekOUTLzfSBc0hP7hCSBoD9TuR0hLw==} 127 | dependencies: 128 | esbuild: 0.14.50 129 | source-map-support: 0.5.21 130 | dev: true 131 | 132 | /@esbuild-kit/esm-loader@2.4.2: 133 | resolution: {integrity: sha512-N9dPKAj8WOx6djVnStgILWXip4fjDcBk9L7azO0/uQDpu8Ee0eaL78mkN4Acid9BzvNAKWwdYXFJZnsVahNEew==} 134 | dependencies: 135 | '@esbuild-kit/core-utils': 2.1.0 136 | get-tsconfig: 4.1.0 137 | dev: true 138 | 139 | /@esbuild/linux-loong64@0.15.3: 140 | resolution: {integrity: sha512-pe7L+LnITFHUSUnuhSQRyYN2E5Anl0r7x/jW+ufc+4fBcaK3Q51b/3ufFWWhmIiuCkr7oKtmVSpaJ1DxbtSfuw==} 141 | engines: {node: '>=12'} 142 | cpu: [loong64] 143 | os: [linux] 144 | requiresBuild: true 145 | dev: true 146 | optional: true 147 | 148 | /@eslint/eslintrc@1.3.1: 149 | resolution: {integrity: sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==} 150 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 151 | dependencies: 152 | ajv: 6.12.6 153 | debug: 4.3.4 154 | espree: 9.4.0 155 | globals: 13.15.0 156 | ignore: 5.2.0 157 | import-fresh: 3.3.0 158 | js-yaml: 4.1.0 159 | minimatch: 3.1.2 160 | strip-json-comments: 3.1.1 161 | transitivePeerDependencies: 162 | - supports-color 163 | dev: true 164 | 165 | /@humanwhocodes/config-array@0.10.4: 166 | resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} 167 | engines: {node: '>=10.10.0'} 168 | dependencies: 169 | '@humanwhocodes/object-schema': 1.2.1 170 | debug: 4.3.4 171 | minimatch: 3.1.2 172 | transitivePeerDependencies: 173 | - supports-color 174 | dev: true 175 | 176 | /@humanwhocodes/gitignore-to-minimatch@1.0.2: 177 | resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} 178 | dev: true 179 | 180 | /@humanwhocodes/module-importer@1.0.1: 181 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 182 | engines: {node: '>=12.22'} 183 | dev: true 184 | 185 | /@humanwhocodes/object-schema@1.2.1: 186 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 187 | dev: true 188 | 189 | /@jsdevtools/ez-spawn@3.0.4: 190 | resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} 191 | engines: {node: '>=10'} 192 | dependencies: 193 | call-me-maybe: 1.0.1 194 | cross-spawn: 7.0.3 195 | string-argv: 0.3.1 196 | type-detect: 4.0.8 197 | dev: true 198 | 199 | /@nodelib/fs.scandir@2.1.5: 200 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 201 | engines: {node: '>= 8'} 202 | dependencies: 203 | '@nodelib/fs.stat': 2.0.5 204 | run-parallel: 1.2.0 205 | dev: true 206 | 207 | /@nodelib/fs.stat@2.0.5: 208 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 209 | engines: {node: '>= 8'} 210 | dev: true 211 | 212 | /@nodelib/fs.walk@1.2.8: 213 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 214 | engines: {node: '>= 8'} 215 | dependencies: 216 | '@nodelib/fs.scandir': 2.1.5 217 | fastq: 1.13.0 218 | dev: true 219 | 220 | /@sxzz/eslint-config-basic@2.4.1(@typescript-eslint/parser@5.33.0)(eslint@8.23.0): 221 | resolution: {integrity: sha512-6Gq9G8gKOb/d5mcmdQqkTpUFGWKvYFnBPWyldyKQdIrT0Zq9qLx23YCpv7o6VqKGKfbmvNu9JO9ERcHciz/+jA==} 222 | peerDependencies: 223 | eslint: '>=7.4.0' 224 | dependencies: 225 | eslint: 8.23.0 226 | eslint-define-config: 1.6.0 227 | eslint-plugin-eslint-comments: 3.2.0(eslint@8.23.0) 228 | eslint-plugin-html: 7.1.0 229 | eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.33.0)(eslint@8.23.0) 230 | eslint-plugin-jsonc: 2.3.1(eslint@8.23.0) 231 | eslint-plugin-markdown: 3.0.0(eslint@8.23.0) 232 | eslint-plugin-unicorn: 43.0.2(eslint@8.23.0) 233 | eslint-plugin-yml: 1.1.0(eslint@8.23.0) 234 | transitivePeerDependencies: 235 | - '@typescript-eslint/parser' 236 | - eslint-import-resolver-typescript 237 | - eslint-import-resolver-webpack 238 | - supports-color 239 | dev: true 240 | 241 | /@sxzz/eslint-config-prettier@2.4.1(eslint@8.23.0): 242 | resolution: {integrity: sha512-m3fe7BmAmk8cC21s1Kk2Z9Tlds200WQ568A8M0btQZEmDN6TdIRBZWGXTVeVCe8+KK+7fdZQ60OBlbLrIWa+bw==} 243 | peerDependencies: 244 | eslint: '>=7.4.0' 245 | dependencies: 246 | eslint: 8.23.0 247 | eslint-config-prettier: 8.5.0(eslint@8.23.0) 248 | eslint-define-config: 1.6.0 249 | eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.5.0)(eslint@8.23.0)(prettier@2.7.1) 250 | eslint-plugin-yml: 1.1.0(eslint@8.23.0) 251 | prettier: 2.7.1 252 | transitivePeerDependencies: 253 | - supports-color 254 | dev: true 255 | 256 | /@sxzz/eslint-config-ts@2.4.1(eslint@8.23.0)(typescript@4.8.2): 257 | resolution: {integrity: sha512-asR3S0H5kGNdq0ugEjXpkcJ7xxp7VaMi+U1hP+qlX+hUWhhpqu3gdjSJ30Fh+L6oWoXIU91BeVeraEJNZ/MNZw==} 258 | peerDependencies: 259 | eslint: '>=7.4.0' 260 | typescript: '>=3.9' 261 | dependencies: 262 | '@sxzz/eslint-config-basic': 2.4.1(@typescript-eslint/parser@5.33.0)(eslint@8.23.0) 263 | '@typescript-eslint/eslint-plugin': 5.33.0(@typescript-eslint/parser@5.33.0)(eslint@8.23.0)(typescript@4.8.2) 264 | '@typescript-eslint/parser': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 265 | eslint: 8.23.0 266 | eslint-define-config: 1.6.0 267 | typescript: 4.8.2 268 | transitivePeerDependencies: 269 | - eslint-import-resolver-typescript 270 | - eslint-import-resolver-webpack 271 | - supports-color 272 | dev: true 273 | 274 | /@types/chai-subset@1.3.3: 275 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 276 | dependencies: 277 | '@types/chai': 4.3.3 278 | dev: true 279 | 280 | /@types/chai@4.3.3: 281 | resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} 282 | dev: true 283 | 284 | /@types/inquirer@9.0.1: 285 | resolution: {integrity: sha512-I4eZdYXpFHj0pAzMndJFQMu/4hCc6Z340au9lvxHofGJnFmVgckxR/t9jRzsOVviajsOmEL+OABx+e0e28IbNw==} 286 | dependencies: 287 | '@types/through': 0.0.30 288 | rxjs: 7.5.6 289 | dev: true 290 | 291 | /@types/json-schema@7.0.11: 292 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 293 | dev: true 294 | 295 | /@types/json5@0.0.29: 296 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 297 | dev: true 298 | 299 | /@types/mdast@3.0.10: 300 | resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} 301 | dependencies: 302 | '@types/unist': 2.0.6 303 | dev: true 304 | 305 | /@types/node@18.6.1: 306 | resolution: {integrity: sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg==} 307 | dev: true 308 | 309 | /@types/normalize-package-data@2.4.1: 310 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 311 | dev: true 312 | 313 | /@types/semver@7.3.12: 314 | resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} 315 | dev: true 316 | 317 | /@types/through@0.0.30: 318 | resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} 319 | dependencies: 320 | '@types/node': 18.6.1 321 | dev: true 322 | 323 | /@types/unist@2.0.6: 324 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 325 | dev: true 326 | 327 | /@typescript-eslint/eslint-plugin@5.33.0(@typescript-eslint/parser@5.33.0)(eslint@8.23.0)(typescript@4.8.2): 328 | resolution: {integrity: sha512-jHvZNSW2WZ31OPJ3enhLrEKvAZNyAFWZ6rx9tUwaessTc4sx9KmgMNhVcqVAl1ETnT5rU5fpXTLmY9YvC1DCNg==} 329 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 330 | peerDependencies: 331 | '@typescript-eslint/parser': ^5.0.0 332 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 333 | typescript: '*' 334 | peerDependenciesMeta: 335 | typescript: 336 | optional: true 337 | dependencies: 338 | '@typescript-eslint/parser': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 339 | '@typescript-eslint/scope-manager': 5.33.0 340 | '@typescript-eslint/type-utils': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 341 | '@typescript-eslint/utils': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 342 | debug: 4.3.4 343 | eslint: 8.23.0 344 | functional-red-black-tree: 1.0.1 345 | ignore: 5.2.0 346 | regexpp: 3.2.0 347 | semver: 7.3.7 348 | tsutils: 3.21.0(typescript@4.8.2) 349 | typescript: 4.8.2 350 | transitivePeerDependencies: 351 | - supports-color 352 | dev: true 353 | 354 | /@typescript-eslint/parser@5.33.0(eslint@8.23.0)(typescript@4.8.2): 355 | resolution: {integrity: sha512-cgM5cJrWmrDV2KpvlcSkelTBASAs1mgqq+IUGKJvFxWrapHpaRy5EXPQz9YaKF3nZ8KY18ILTiVpUtbIac86/w==} 356 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 357 | peerDependencies: 358 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 359 | typescript: '*' 360 | peerDependenciesMeta: 361 | typescript: 362 | optional: true 363 | dependencies: 364 | '@typescript-eslint/scope-manager': 5.33.0 365 | '@typescript-eslint/types': 5.33.0 366 | '@typescript-eslint/typescript-estree': 5.33.0(typescript@4.8.2) 367 | debug: 4.3.4 368 | eslint: 8.23.0 369 | typescript: 4.8.2 370 | transitivePeerDependencies: 371 | - supports-color 372 | dev: true 373 | 374 | /@typescript-eslint/scope-manager@5.33.0: 375 | resolution: {integrity: sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==} 376 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 377 | dependencies: 378 | '@typescript-eslint/types': 5.33.0 379 | '@typescript-eslint/visitor-keys': 5.33.0 380 | dev: true 381 | 382 | /@typescript-eslint/type-utils@5.33.0(eslint@8.23.0)(typescript@4.8.2): 383 | resolution: {integrity: sha512-2zB8uEn7hEH2pBeyk3NpzX1p3lF9dKrEbnXq1F7YkpZ6hlyqb2yZujqgRGqXgRBTHWIUG3NGx/WeZk224UKlIA==} 384 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 385 | peerDependencies: 386 | eslint: '*' 387 | typescript: '*' 388 | peerDependenciesMeta: 389 | typescript: 390 | optional: true 391 | dependencies: 392 | '@typescript-eslint/utils': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 393 | debug: 4.3.4 394 | eslint: 8.23.0 395 | tsutils: 3.21.0(typescript@4.8.2) 396 | typescript: 4.8.2 397 | transitivePeerDependencies: 398 | - supports-color 399 | dev: true 400 | 401 | /@typescript-eslint/types@5.33.0: 402 | resolution: {integrity: sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==} 403 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 404 | dev: true 405 | 406 | /@typescript-eslint/typescript-estree@5.33.0(typescript@4.8.2): 407 | resolution: {integrity: sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==} 408 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 409 | peerDependencies: 410 | typescript: '*' 411 | peerDependenciesMeta: 412 | typescript: 413 | optional: true 414 | dependencies: 415 | '@typescript-eslint/types': 5.33.0 416 | '@typescript-eslint/visitor-keys': 5.33.0 417 | debug: 4.3.4 418 | globby: 11.1.0 419 | is-glob: 4.0.3 420 | semver: 7.3.7 421 | tsutils: 3.21.0(typescript@4.8.2) 422 | typescript: 4.8.2 423 | transitivePeerDependencies: 424 | - supports-color 425 | dev: true 426 | 427 | /@typescript-eslint/utils@5.33.0(eslint@8.23.0)(typescript@4.8.2): 428 | resolution: {integrity: sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==} 429 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 430 | peerDependencies: 431 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 432 | dependencies: 433 | '@types/json-schema': 7.0.11 434 | '@typescript-eslint/scope-manager': 5.33.0 435 | '@typescript-eslint/types': 5.33.0 436 | '@typescript-eslint/typescript-estree': 5.33.0(typescript@4.8.2) 437 | eslint: 8.23.0 438 | eslint-scope: 5.1.1 439 | eslint-utils: 3.0.0(eslint@8.23.0) 440 | transitivePeerDependencies: 441 | - supports-color 442 | - typescript 443 | dev: true 444 | 445 | /@typescript-eslint/visitor-keys@5.33.0: 446 | resolution: {integrity: sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==} 447 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 448 | dependencies: 449 | '@typescript-eslint/types': 5.33.0 450 | eslint-visitor-keys: 3.3.0 451 | dev: true 452 | 453 | /acorn-jsx@5.3.2(acorn@8.8.0): 454 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 455 | peerDependencies: 456 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 457 | dependencies: 458 | acorn: 8.8.0 459 | dev: true 460 | 461 | /acorn@8.8.0: 462 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} 463 | engines: {node: '>=0.4.0'} 464 | hasBin: true 465 | dev: true 466 | 467 | /ajv@6.12.6: 468 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 469 | dependencies: 470 | fast-deep-equal: 3.1.3 471 | fast-json-stable-stringify: 2.1.0 472 | json-schema-traverse: 0.4.1 473 | uri-js: 4.4.1 474 | dev: true 475 | 476 | /ansi-escapes@5.0.0: 477 | resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} 478 | engines: {node: '>=12'} 479 | dependencies: 480 | type-fest: 1.4.0 481 | dev: false 482 | 483 | /ansi-regex@5.0.1: 484 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 485 | engines: {node: '>=8'} 486 | dev: true 487 | 488 | /ansi-regex@6.0.1: 489 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 490 | engines: {node: '>=12'} 491 | dev: false 492 | 493 | /ansi-styles@3.2.1: 494 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 495 | engines: {node: '>=4'} 496 | dependencies: 497 | color-convert: 1.9.3 498 | dev: true 499 | 500 | /ansi-styles@4.3.0: 501 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 502 | engines: {node: '>=8'} 503 | dependencies: 504 | color-convert: 2.0.1 505 | dev: true 506 | 507 | /ansi-styles@6.1.0: 508 | resolution: {integrity: sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==} 509 | engines: {node: '>=12'} 510 | dev: false 511 | 512 | /any-promise@1.3.0: 513 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 514 | dev: true 515 | 516 | /anymatch@3.1.2: 517 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 518 | engines: {node: '>= 8'} 519 | dependencies: 520 | normalize-path: 3.0.0 521 | picomatch: 2.3.1 522 | 523 | /argparse@2.0.1: 524 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 525 | dev: true 526 | 527 | /array-includes@3.1.5: 528 | resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} 529 | engines: {node: '>= 0.4'} 530 | dependencies: 531 | call-bind: 1.0.2 532 | define-properties: 1.1.4 533 | es-abstract: 1.20.1 534 | get-intrinsic: 1.1.2 535 | is-string: 1.0.7 536 | dev: true 537 | 538 | /array-union@2.1.0: 539 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 540 | engines: {node: '>=8'} 541 | dev: true 542 | 543 | /array.prototype.flat@1.3.0: 544 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 545 | engines: {node: '>= 0.4'} 546 | dependencies: 547 | call-bind: 1.0.2 548 | define-properties: 1.1.4 549 | es-abstract: 1.20.1 550 | es-shim-unscopables: 1.0.0 551 | dev: true 552 | 553 | /assertion-error@1.1.0: 554 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 555 | dev: true 556 | 557 | /balanced-match@1.0.2: 558 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 559 | dev: true 560 | 561 | /base64-js@1.5.1: 562 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 563 | dev: false 564 | 565 | /bin-version@6.0.0: 566 | resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} 567 | engines: {node: '>=12'} 568 | dependencies: 569 | execa: 5.1.1 570 | find-versions: 5.1.0 571 | dev: false 572 | 573 | /binary-extensions@2.2.0: 574 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 575 | engines: {node: '>=8'} 576 | 577 | /bl@5.0.0: 578 | resolution: {integrity: sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==} 579 | dependencies: 580 | buffer: 6.0.3 581 | inherits: 2.0.4 582 | readable-stream: 3.6.0 583 | dev: false 584 | 585 | /brace-expansion@1.1.11: 586 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 587 | dependencies: 588 | balanced-match: 1.0.2 589 | concat-map: 0.0.1 590 | dev: true 591 | 592 | /braces@3.0.2: 593 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 594 | engines: {node: '>=8'} 595 | dependencies: 596 | fill-range: 7.0.1 597 | 598 | /buffer-from@1.1.2: 599 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 600 | dev: true 601 | 602 | /buffer@6.0.3: 603 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 604 | dependencies: 605 | base64-js: 1.5.1 606 | ieee754: 1.2.1 607 | dev: false 608 | 609 | /builtin-modules@3.3.0: 610 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 611 | engines: {node: '>=6'} 612 | dev: true 613 | 614 | /bumpp@8.2.1: 615 | resolution: {integrity: sha512-4tHKsWC2mqHQvdjZ4AXgVhS2xMsz8qQ4zYt87vGRXW5tqAjrYa/UJqy7s/dGYI2OIe9ghBdiFhKpyKEX9SXffg==} 616 | engines: {node: '>=10'} 617 | hasBin: true 618 | dependencies: 619 | '@jsdevtools/ez-spawn': 3.0.4 620 | cac: 6.7.14 621 | fast-glob: 3.2.11 622 | kleur: 4.1.4 623 | prompts: 2.4.2 624 | semver: 7.3.7 625 | dev: true 626 | 627 | /bundle-require@3.1.0(esbuild@0.15.3): 628 | resolution: {integrity: sha512-IIXtAO7fKcwPHNPt9kY/WNVJqy7NDy6YqJvv6ENH0TOZoJ+yjpEsn1w40WKZbR2ibfu5g1rfgJTvmFHpm5aOMA==} 629 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 630 | peerDependencies: 631 | esbuild: '>=0.13' 632 | dependencies: 633 | esbuild: 0.15.3 634 | load-tsconfig: 0.2.3 635 | dev: true 636 | 637 | /cac@6.7.14: 638 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 639 | engines: {node: '>=8'} 640 | 641 | /call-bind@1.0.2: 642 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 643 | dependencies: 644 | function-bind: 1.1.1 645 | get-intrinsic: 1.1.2 646 | dev: true 647 | 648 | /call-me-maybe@1.0.1: 649 | resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==} 650 | dev: true 651 | 652 | /callsites@3.1.0: 653 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 654 | engines: {node: '>=6'} 655 | dev: true 656 | 657 | /chai@4.3.6: 658 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 659 | engines: {node: '>=4'} 660 | dependencies: 661 | assertion-error: 1.1.0 662 | check-error: 1.0.2 663 | deep-eql: 3.0.1 664 | get-func-name: 2.0.0 665 | loupe: 2.3.4 666 | pathval: 1.1.1 667 | type-detect: 4.0.8 668 | dev: true 669 | 670 | /chalk@2.4.2: 671 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 672 | engines: {node: '>=4'} 673 | dependencies: 674 | ansi-styles: 3.2.1 675 | escape-string-regexp: 1.0.5 676 | supports-color: 5.5.0 677 | dev: true 678 | 679 | /chalk@4.1.2: 680 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 681 | engines: {node: '>=10'} 682 | dependencies: 683 | ansi-styles: 4.3.0 684 | supports-color: 7.2.0 685 | dev: true 686 | 687 | /chalk@5.0.1: 688 | resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} 689 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 690 | dev: false 691 | 692 | /character-entities-legacy@1.1.4: 693 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 694 | dev: true 695 | 696 | /character-entities@1.2.4: 697 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 698 | dev: true 699 | 700 | /character-reference-invalid@1.1.4: 701 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 702 | dev: true 703 | 704 | /chardet@0.7.0: 705 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 706 | dev: false 707 | 708 | /check-error@1.0.2: 709 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 710 | dev: true 711 | 712 | /chokidar@3.5.3: 713 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 714 | engines: {node: '>= 8.10.0'} 715 | dependencies: 716 | anymatch: 3.1.2 717 | braces: 3.0.2 718 | glob-parent: 5.1.2 719 | is-binary-path: 2.1.0 720 | is-glob: 4.0.3 721 | normalize-path: 3.0.0 722 | readdirp: 3.6.0 723 | optionalDependencies: 724 | fsevents: 2.3.2 725 | 726 | /ci-info@3.3.2: 727 | resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} 728 | dev: true 729 | 730 | /clean-regexp@1.0.0: 731 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 732 | engines: {node: '>=4'} 733 | dependencies: 734 | escape-string-regexp: 1.0.5 735 | dev: true 736 | 737 | /cli-cursor@4.0.0: 738 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} 739 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 740 | dependencies: 741 | restore-cursor: 4.0.0 742 | dev: false 743 | 744 | /cli-spinners@2.7.0: 745 | resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} 746 | engines: {node: '>=6'} 747 | dev: false 748 | 749 | /cli-width@4.0.0: 750 | resolution: {integrity: sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==} 751 | engines: {node: '>= 12'} 752 | dev: false 753 | 754 | /clone@1.0.4: 755 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 756 | engines: {node: '>=0.8'} 757 | dev: false 758 | 759 | /color-convert@1.9.3: 760 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 761 | dependencies: 762 | color-name: 1.1.3 763 | dev: true 764 | 765 | /color-convert@2.0.1: 766 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 767 | engines: {node: '>=7.0.0'} 768 | dependencies: 769 | color-name: 1.1.4 770 | dev: true 771 | 772 | /color-name@1.1.3: 773 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 774 | dev: true 775 | 776 | /color-name@1.1.4: 777 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 778 | dev: true 779 | 780 | /commander@4.1.1: 781 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 782 | engines: {node: '>= 6'} 783 | dev: true 784 | 785 | /concat-map@0.0.1: 786 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 787 | dev: true 788 | 789 | /cross-spawn@7.0.3: 790 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 791 | engines: {node: '>= 8'} 792 | dependencies: 793 | path-key: 3.1.1 794 | shebang-command: 2.0.0 795 | which: 2.0.2 796 | 797 | /data-uri-to-buffer@4.0.0: 798 | resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} 799 | engines: {node: '>= 12'} 800 | dev: false 801 | 802 | /debug@2.6.9: 803 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 804 | peerDependencies: 805 | supports-color: '*' 806 | peerDependenciesMeta: 807 | supports-color: 808 | optional: true 809 | dependencies: 810 | ms: 2.0.0 811 | dev: true 812 | 813 | /debug@3.2.7: 814 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 815 | peerDependencies: 816 | supports-color: '*' 817 | peerDependenciesMeta: 818 | supports-color: 819 | optional: true 820 | dependencies: 821 | ms: 2.1.3 822 | dev: true 823 | 824 | /debug@4.3.4: 825 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 826 | engines: {node: '>=6.0'} 827 | peerDependencies: 828 | supports-color: '*' 829 | peerDependenciesMeta: 830 | supports-color: 831 | optional: true 832 | dependencies: 833 | ms: 2.1.2 834 | dev: true 835 | 836 | /deep-eql@3.0.1: 837 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 838 | engines: {node: '>=0.12'} 839 | dependencies: 840 | type-detect: 4.0.8 841 | dev: true 842 | 843 | /deep-is@0.1.4: 844 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 845 | dev: true 846 | 847 | /defaults@1.0.3: 848 | resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} 849 | dependencies: 850 | clone: 1.0.4 851 | dev: false 852 | 853 | /define-properties@1.1.4: 854 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 855 | engines: {node: '>= 0.4'} 856 | dependencies: 857 | has-property-descriptors: 1.0.0 858 | object-keys: 1.1.1 859 | dev: true 860 | 861 | /dir-glob@3.0.1: 862 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 863 | engines: {node: '>=8'} 864 | dependencies: 865 | path-type: 4.0.0 866 | dev: true 867 | 868 | /doctrine@2.1.0: 869 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 870 | engines: {node: '>=0.10.0'} 871 | dependencies: 872 | esutils: 2.0.3 873 | dev: true 874 | 875 | /doctrine@3.0.0: 876 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 877 | engines: {node: '>=6.0.0'} 878 | dependencies: 879 | esutils: 2.0.3 880 | dev: true 881 | 882 | /dom-serializer@2.0.0: 883 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 884 | dependencies: 885 | domelementtype: 2.3.0 886 | domhandler: 5.0.3 887 | entities: 4.3.1 888 | dev: true 889 | 890 | /domelementtype@2.3.0: 891 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 892 | dev: true 893 | 894 | /domhandler@5.0.3: 895 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 896 | engines: {node: '>= 4'} 897 | dependencies: 898 | domelementtype: 2.3.0 899 | dev: true 900 | 901 | /domutils@3.0.1: 902 | resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} 903 | dependencies: 904 | dom-serializer: 2.0.0 905 | domelementtype: 2.3.0 906 | domhandler: 5.0.3 907 | dev: true 908 | 909 | /eastasianwidth@0.2.0: 910 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 911 | dev: false 912 | 913 | /emoji-regex@9.2.2: 914 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 915 | dev: false 916 | 917 | /entities@4.3.1: 918 | resolution: {integrity: sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==} 919 | engines: {node: '>=0.12'} 920 | dev: true 921 | 922 | /error-ex@1.3.2: 923 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 924 | dependencies: 925 | is-arrayish: 0.2.1 926 | dev: true 927 | 928 | /es-abstract@1.20.1: 929 | resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} 930 | engines: {node: '>= 0.4'} 931 | dependencies: 932 | call-bind: 1.0.2 933 | es-to-primitive: 1.2.1 934 | function-bind: 1.1.1 935 | function.prototype.name: 1.1.5 936 | get-intrinsic: 1.1.2 937 | get-symbol-description: 1.0.0 938 | has: 1.0.3 939 | has-property-descriptors: 1.0.0 940 | has-symbols: 1.0.3 941 | internal-slot: 1.0.3 942 | is-callable: 1.2.4 943 | is-negative-zero: 2.0.2 944 | is-regex: 1.1.4 945 | is-shared-array-buffer: 1.0.2 946 | is-string: 1.0.7 947 | is-weakref: 1.0.2 948 | object-inspect: 1.12.2 949 | object-keys: 1.1.1 950 | object.assign: 4.1.2 951 | regexp.prototype.flags: 1.4.3 952 | string.prototype.trimend: 1.0.5 953 | string.prototype.trimstart: 1.0.5 954 | unbox-primitive: 1.0.2 955 | dev: true 956 | 957 | /es-shim-unscopables@1.0.0: 958 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 959 | dependencies: 960 | has: 1.0.3 961 | dev: true 962 | 963 | /es-to-primitive@1.2.1: 964 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 965 | engines: {node: '>= 0.4'} 966 | dependencies: 967 | is-callable: 1.2.4 968 | is-date-object: 1.0.5 969 | is-symbol: 1.0.4 970 | dev: true 971 | 972 | /esbuild-android-64@0.14.50: 973 | resolution: {integrity: sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==} 974 | engines: {node: '>=12'} 975 | cpu: [x64] 976 | os: [android] 977 | requiresBuild: true 978 | dev: true 979 | optional: true 980 | 981 | /esbuild-android-64@0.15.3: 982 | resolution: {integrity: sha512-sHGQ50Bb80ow+DZ8s6mabWn/j+vgfsNDMhipv4v410O++C6gpEcR9A5jR9bTkMsVbr46Id0MMhUGpBasq8H92A==} 983 | engines: {node: '>=12'} 984 | cpu: [x64] 985 | os: [android] 986 | requiresBuild: true 987 | dev: true 988 | optional: true 989 | 990 | /esbuild-android-arm64@0.14.50: 991 | resolution: {integrity: sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==} 992 | engines: {node: '>=12'} 993 | cpu: [arm64] 994 | os: [android] 995 | requiresBuild: true 996 | dev: true 997 | optional: true 998 | 999 | /esbuild-android-arm64@0.15.3: 1000 | resolution: {integrity: sha512-+Oiwzgp7HTyeNkgpQySGLCq3zFmvVVyBiNz8bO+7Tc6tlnxSYf8jjQBThRTUsy6vrrjG91h9vZNlYkiikzzWUg==} 1001 | engines: {node: '>=12'} 1002 | cpu: [arm64] 1003 | os: [android] 1004 | requiresBuild: true 1005 | dev: true 1006 | optional: true 1007 | 1008 | /esbuild-darwin-64@0.14.50: 1009 | resolution: {integrity: sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==} 1010 | engines: {node: '>=12'} 1011 | cpu: [x64] 1012 | os: [darwin] 1013 | requiresBuild: true 1014 | dev: true 1015 | optional: true 1016 | 1017 | /esbuild-darwin-64@0.15.3: 1018 | resolution: {integrity: sha512-n2BkxzCPHv6OOOs9gxp4AYsccawuw9bDeW9rpSASHao0zQ/u0kP6bjD4ATf2G4A3cml8HGwp18aROl4ws+4Ytg==} 1019 | engines: {node: '>=12'} 1020 | cpu: [x64] 1021 | os: [darwin] 1022 | requiresBuild: true 1023 | dev: true 1024 | optional: true 1025 | 1026 | /esbuild-darwin-arm64@0.14.50: 1027 | resolution: {integrity: sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==} 1028 | engines: {node: '>=12'} 1029 | cpu: [arm64] 1030 | os: [darwin] 1031 | requiresBuild: true 1032 | dev: true 1033 | optional: true 1034 | 1035 | /esbuild-darwin-arm64@0.15.3: 1036 | resolution: {integrity: sha512-fSk5M1vQ+y48csVJ4QxweT//DdDytDAb0AvU1gYITqZGA1kL1/i4C5fjKDNZMjB7dkg2a+rfkMyrpZUli+To/w==} 1037 | engines: {node: '>=12'} 1038 | cpu: [arm64] 1039 | os: [darwin] 1040 | requiresBuild: true 1041 | dev: true 1042 | optional: true 1043 | 1044 | /esbuild-freebsd-64@0.14.50: 1045 | resolution: {integrity: sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==} 1046 | engines: {node: '>=12'} 1047 | cpu: [x64] 1048 | os: [freebsd] 1049 | requiresBuild: true 1050 | dev: true 1051 | optional: true 1052 | 1053 | /esbuild-freebsd-64@0.15.3: 1054 | resolution: {integrity: sha512-b21XfM0Wrxu0CzFQN7B4xuAMGUNLT3F3J2NMeLxbUq6lcl2N3Isho1q2AF5bOCpCXVM04k1+PgoQLwNzGYtnjw==} 1055 | engines: {node: '>=12'} 1056 | cpu: [x64] 1057 | os: [freebsd] 1058 | requiresBuild: true 1059 | dev: true 1060 | optional: true 1061 | 1062 | /esbuild-freebsd-arm64@0.14.50: 1063 | resolution: {integrity: sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==} 1064 | engines: {node: '>=12'} 1065 | cpu: [arm64] 1066 | os: [freebsd] 1067 | requiresBuild: true 1068 | dev: true 1069 | optional: true 1070 | 1071 | /esbuild-freebsd-arm64@0.15.3: 1072 | resolution: {integrity: sha512-E0LkWSz7Ch1B2WFXbGvfN3q9uUlQCahBi3S7wTSJO2T41x0BPnIFHw79/RuGKVyA17mX/I7RVOSRnrla2D4tag==} 1073 | engines: {node: '>=12'} 1074 | cpu: [arm64] 1075 | os: [freebsd] 1076 | requiresBuild: true 1077 | dev: true 1078 | optional: true 1079 | 1080 | /esbuild-linux-32@0.14.50: 1081 | resolution: {integrity: sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==} 1082 | engines: {node: '>=12'} 1083 | cpu: [ia32] 1084 | os: [linux] 1085 | requiresBuild: true 1086 | dev: true 1087 | optional: true 1088 | 1089 | /esbuild-linux-32@0.15.3: 1090 | resolution: {integrity: sha512-af7BhXXKwzXL83bfJX8vkxsyDbOr9T5auxyBJnBfkd2w7VwXC1heDT2TQ1cWCWyjqVatyKudW5RCSAySDKDW2Q==} 1091 | engines: {node: '>=12'} 1092 | cpu: [ia32] 1093 | os: [linux] 1094 | requiresBuild: true 1095 | dev: true 1096 | optional: true 1097 | 1098 | /esbuild-linux-64@0.14.50: 1099 | resolution: {integrity: sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==} 1100 | engines: {node: '>=12'} 1101 | cpu: [x64] 1102 | os: [linux] 1103 | requiresBuild: true 1104 | dev: true 1105 | optional: true 1106 | 1107 | /esbuild-linux-64@0.15.3: 1108 | resolution: {integrity: sha512-Wwq+5ZF2IPE/6W2kJLPnh7eXqtz5XtdPBRB77nhm02my6PsZR3aa/q/fRkJhwO6ExM+t9l3kFhWL4pMwk3wREA==} 1109 | engines: {node: '>=12'} 1110 | cpu: [x64] 1111 | os: [linux] 1112 | requiresBuild: true 1113 | dev: true 1114 | optional: true 1115 | 1116 | /esbuild-linux-arm64@0.14.50: 1117 | resolution: {integrity: sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==} 1118 | engines: {node: '>=12'} 1119 | cpu: [arm64] 1120 | os: [linux] 1121 | requiresBuild: true 1122 | dev: true 1123 | optional: true 1124 | 1125 | /esbuild-linux-arm64@0.15.3: 1126 | resolution: {integrity: sha512-qNvYyYjNm4JPXJcCJv7gXEnyqw2k9W+SeYMoG7RiwWHWv1cMX6xlxPLGz5yIxjH9+VBXkA1nrY/YohaiKq2O3g==} 1127 | engines: {node: '>=12'} 1128 | cpu: [arm64] 1129 | os: [linux] 1130 | requiresBuild: true 1131 | dev: true 1132 | optional: true 1133 | 1134 | /esbuild-linux-arm@0.14.50: 1135 | resolution: {integrity: sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==} 1136 | engines: {node: '>=12'} 1137 | cpu: [arm] 1138 | os: [linux] 1139 | requiresBuild: true 1140 | dev: true 1141 | optional: true 1142 | 1143 | /esbuild-linux-arm@0.15.3: 1144 | resolution: {integrity: sha512-88ycpH4GrbOzaZIIXIzljbeCUkzoaJ5luP6+LATa5hk/Wl+OHkAieDfjAHdH8KuHkGYTojKE1npQq9gll9efUA==} 1145 | engines: {node: '>=12'} 1146 | cpu: [arm] 1147 | os: [linux] 1148 | requiresBuild: true 1149 | dev: true 1150 | optional: true 1151 | 1152 | /esbuild-linux-mips64le@0.14.50: 1153 | resolution: {integrity: sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==} 1154 | engines: {node: '>=12'} 1155 | cpu: [mips64el] 1156 | os: [linux] 1157 | requiresBuild: true 1158 | dev: true 1159 | optional: true 1160 | 1161 | /esbuild-linux-mips64le@0.15.3: 1162 | resolution: {integrity: sha512-t5TXW6Cw8S9Lts7SDZ8rlx/dqPJx8hndYKL6xEgA2vdlrE60eIYTAYWJqsGN0dgePtFC1RPyH6To15l7s9WdYA==} 1163 | engines: {node: '>=12'} 1164 | cpu: [mips64el] 1165 | os: [linux] 1166 | requiresBuild: true 1167 | dev: true 1168 | optional: true 1169 | 1170 | /esbuild-linux-ppc64le@0.14.50: 1171 | resolution: {integrity: sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==} 1172 | engines: {node: '>=12'} 1173 | cpu: [ppc64] 1174 | os: [linux] 1175 | requiresBuild: true 1176 | dev: true 1177 | optional: true 1178 | 1179 | /esbuild-linux-ppc64le@0.15.3: 1180 | resolution: {integrity: sha512-TXxPgEWOPCY4F6ZMf7+915+H0eOB6AlcZBwjeBs+78ULpzvcmMzZ2ujF2IejKZXYWuMTORPNoG+MuVGBuyUysA==} 1181 | engines: {node: '>=12'} 1182 | cpu: [ppc64] 1183 | os: [linux] 1184 | requiresBuild: true 1185 | dev: true 1186 | optional: true 1187 | 1188 | /esbuild-linux-riscv64@0.14.50: 1189 | resolution: {integrity: sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==} 1190 | engines: {node: '>=12'} 1191 | cpu: [riscv64] 1192 | os: [linux] 1193 | requiresBuild: true 1194 | dev: true 1195 | optional: true 1196 | 1197 | /esbuild-linux-riscv64@0.15.3: 1198 | resolution: {integrity: sha512-04tvrbHA83N+tg+qQeJmUQ3jWStUP7+rw+v/l2h3PsNGbcH3WmsgR0Tf0e1ext09asV4x2PX2b2Nm/gBIOrpqg==} 1199 | engines: {node: '>=12'} 1200 | cpu: [riscv64] 1201 | os: [linux] 1202 | requiresBuild: true 1203 | dev: true 1204 | optional: true 1205 | 1206 | /esbuild-linux-s390x@0.14.50: 1207 | resolution: {integrity: sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==} 1208 | engines: {node: '>=12'} 1209 | cpu: [s390x] 1210 | os: [linux] 1211 | requiresBuild: true 1212 | dev: true 1213 | optional: true 1214 | 1215 | /esbuild-linux-s390x@0.15.3: 1216 | resolution: {integrity: sha512-LHxnvvFMhA/uy9CSrnlCtPZnTfWahR9NPLKwXBgfg16YqpKbRHty+mek1o7l+2G5qLeFEEvhB0a7c+hYgbW/3w==} 1217 | engines: {node: '>=12'} 1218 | cpu: [s390x] 1219 | os: [linux] 1220 | requiresBuild: true 1221 | dev: true 1222 | optional: true 1223 | 1224 | /esbuild-netbsd-64@0.14.50: 1225 | resolution: {integrity: sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==} 1226 | engines: {node: '>=12'} 1227 | cpu: [x64] 1228 | os: [netbsd] 1229 | requiresBuild: true 1230 | dev: true 1231 | optional: true 1232 | 1233 | /esbuild-netbsd-64@0.15.3: 1234 | resolution: {integrity: sha512-8W0UxNuNsgBBa1SLjwqbbDLJF9mf+lvytaYPt5kXbBrz0DI4mKYFlujLQrxLKh8tvs2zRdFNy9HVqmMdbZ1OIQ==} 1235 | engines: {node: '>=12'} 1236 | cpu: [x64] 1237 | os: [netbsd] 1238 | requiresBuild: true 1239 | dev: true 1240 | optional: true 1241 | 1242 | /esbuild-openbsd-64@0.14.50: 1243 | resolution: {integrity: sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==} 1244 | engines: {node: '>=12'} 1245 | cpu: [x64] 1246 | os: [openbsd] 1247 | requiresBuild: true 1248 | dev: true 1249 | optional: true 1250 | 1251 | /esbuild-openbsd-64@0.15.3: 1252 | resolution: {integrity: sha512-QL7xYQ4noukuqh8UGnsrk1m+ShPMYIXjOnAQl3siA7VV6cjuUoCxx6cThgcUDzih8iL5u2xgsGRhsviQIMsUuA==} 1253 | engines: {node: '>=12'} 1254 | cpu: [x64] 1255 | os: [openbsd] 1256 | requiresBuild: true 1257 | dev: true 1258 | optional: true 1259 | 1260 | /esbuild-sunos-64@0.14.50: 1261 | resolution: {integrity: sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==} 1262 | engines: {node: '>=12'} 1263 | cpu: [x64] 1264 | os: [sunos] 1265 | requiresBuild: true 1266 | dev: true 1267 | optional: true 1268 | 1269 | /esbuild-sunos-64@0.15.3: 1270 | resolution: {integrity: sha512-vID32ZCZahWDqlEoq9W7OAZDtofAY8aW0V58V5l+kXEvaKvR0m99FLNRuGGY3IDNwjUoOkvoFiMMiy+ONnN7GA==} 1271 | engines: {node: '>=12'} 1272 | cpu: [x64] 1273 | os: [sunos] 1274 | requiresBuild: true 1275 | dev: true 1276 | optional: true 1277 | 1278 | /esbuild-windows-32@0.14.50: 1279 | resolution: {integrity: sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==} 1280 | engines: {node: '>=12'} 1281 | cpu: [ia32] 1282 | os: [win32] 1283 | requiresBuild: true 1284 | dev: true 1285 | optional: true 1286 | 1287 | /esbuild-windows-32@0.15.3: 1288 | resolution: {integrity: sha512-dnrlwu6T85QU9fO0a35HAzgAXm3vVqg+3Kr9EXkmnf5PHv9t7hT/EYW6g/8YYu91DDyGTk9JSyN32YzQ3OS9Lw==} 1289 | engines: {node: '>=12'} 1290 | cpu: [ia32] 1291 | os: [win32] 1292 | requiresBuild: true 1293 | dev: true 1294 | optional: true 1295 | 1296 | /esbuild-windows-64@0.14.50: 1297 | resolution: {integrity: sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==} 1298 | engines: {node: '>=12'} 1299 | cpu: [x64] 1300 | os: [win32] 1301 | requiresBuild: true 1302 | dev: true 1303 | optional: true 1304 | 1305 | /esbuild-windows-64@0.15.3: 1306 | resolution: {integrity: sha512-HUSlVCpTtOnIKeIn05zz0McNCfZhnu5UgUypmpNrv4Ff1XTvl6vBpQwIZ49eIAkY9zI6oe1Mu6N5ZG7u6X4s7A==} 1307 | engines: {node: '>=12'} 1308 | cpu: [x64] 1309 | os: [win32] 1310 | requiresBuild: true 1311 | dev: true 1312 | optional: true 1313 | 1314 | /esbuild-windows-arm64@0.14.50: 1315 | resolution: {integrity: sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==} 1316 | engines: {node: '>=12'} 1317 | cpu: [arm64] 1318 | os: [win32] 1319 | requiresBuild: true 1320 | dev: true 1321 | optional: true 1322 | 1323 | /esbuild-windows-arm64@0.15.3: 1324 | resolution: {integrity: sha512-sk6fVXCzGB0uW089+8LdeanZkQUZ+3/xdbWshgLGRawV0NyjSFH4sZPIy+DJnhEnT0pPt1DabZtqrq2DT0FWNw==} 1325 | engines: {node: '>=12'} 1326 | cpu: [arm64] 1327 | os: [win32] 1328 | requiresBuild: true 1329 | dev: true 1330 | optional: true 1331 | 1332 | /esbuild@0.14.50: 1333 | resolution: {integrity: sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==} 1334 | engines: {node: '>=12'} 1335 | hasBin: true 1336 | requiresBuild: true 1337 | optionalDependencies: 1338 | esbuild-android-64: 0.14.50 1339 | esbuild-android-arm64: 0.14.50 1340 | esbuild-darwin-64: 0.14.50 1341 | esbuild-darwin-arm64: 0.14.50 1342 | esbuild-freebsd-64: 0.14.50 1343 | esbuild-freebsd-arm64: 0.14.50 1344 | esbuild-linux-32: 0.14.50 1345 | esbuild-linux-64: 0.14.50 1346 | esbuild-linux-arm: 0.14.50 1347 | esbuild-linux-arm64: 0.14.50 1348 | esbuild-linux-mips64le: 0.14.50 1349 | esbuild-linux-ppc64le: 0.14.50 1350 | esbuild-linux-riscv64: 0.14.50 1351 | esbuild-linux-s390x: 0.14.50 1352 | esbuild-netbsd-64: 0.14.50 1353 | esbuild-openbsd-64: 0.14.50 1354 | esbuild-sunos-64: 0.14.50 1355 | esbuild-windows-32: 0.14.50 1356 | esbuild-windows-64: 0.14.50 1357 | esbuild-windows-arm64: 0.14.50 1358 | dev: true 1359 | 1360 | /esbuild@0.15.3: 1361 | resolution: {integrity: sha512-D1qLizJTYlGIOK5m/1ckH8vR2U573eLMMA57qvWg/9jj8jPIhjpafv4kxb6ra2eeTlVq8tISxjsyRKbTaeF6PA==} 1362 | engines: {node: '>=12'} 1363 | hasBin: true 1364 | requiresBuild: true 1365 | optionalDependencies: 1366 | '@esbuild/linux-loong64': 0.15.3 1367 | esbuild-android-64: 0.15.3 1368 | esbuild-android-arm64: 0.15.3 1369 | esbuild-darwin-64: 0.15.3 1370 | esbuild-darwin-arm64: 0.15.3 1371 | esbuild-freebsd-64: 0.15.3 1372 | esbuild-freebsd-arm64: 0.15.3 1373 | esbuild-linux-32: 0.15.3 1374 | esbuild-linux-64: 0.15.3 1375 | esbuild-linux-arm: 0.15.3 1376 | esbuild-linux-arm64: 0.15.3 1377 | esbuild-linux-mips64le: 0.15.3 1378 | esbuild-linux-ppc64le: 0.15.3 1379 | esbuild-linux-riscv64: 0.15.3 1380 | esbuild-linux-s390x: 0.15.3 1381 | esbuild-netbsd-64: 0.15.3 1382 | esbuild-openbsd-64: 0.15.3 1383 | esbuild-sunos-64: 0.15.3 1384 | esbuild-windows-32: 0.15.3 1385 | esbuild-windows-64: 0.15.3 1386 | esbuild-windows-arm64: 0.15.3 1387 | dev: true 1388 | 1389 | /escape-string-regexp@1.0.5: 1390 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1391 | engines: {node: '>=0.8.0'} 1392 | dev: true 1393 | 1394 | /escape-string-regexp@4.0.0: 1395 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1396 | engines: {node: '>=10'} 1397 | dev: true 1398 | 1399 | /escape-string-regexp@5.0.0: 1400 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1401 | engines: {node: '>=12'} 1402 | dev: false 1403 | 1404 | /eslint-config-prettier@8.5.0(eslint@8.23.0): 1405 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} 1406 | hasBin: true 1407 | peerDependencies: 1408 | eslint: '>=7.0.0' 1409 | dependencies: 1410 | eslint: 8.23.0 1411 | dev: true 1412 | 1413 | /eslint-define-config@1.6.0: 1414 | resolution: {integrity: sha512-3qulYnwDRGYQHXHGdXBSRcfpI7m37ilBoERzTUYI8fBUoK/46yfUVNkGwM9cF/aoBrGgIDcBSz/HyPQJTHI/+w==} 1415 | engines: {node: '>= 14.6.0', npm: '>= 6.0.0', pnpm: '>= 7.0.0'} 1416 | dev: true 1417 | 1418 | /eslint-import-resolver-node@0.3.6: 1419 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 1420 | dependencies: 1421 | debug: 3.2.7 1422 | resolve: 1.22.1 1423 | transitivePeerDependencies: 1424 | - supports-color 1425 | dev: true 1426 | 1427 | /eslint-module-utils@2.7.3(@typescript-eslint/parser@5.33.0)(eslint-import-resolver-node@0.3.6): 1428 | resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} 1429 | engines: {node: '>=4'} 1430 | peerDependencies: 1431 | '@typescript-eslint/parser': '*' 1432 | eslint-import-resolver-node: '*' 1433 | eslint-import-resolver-typescript: '*' 1434 | eslint-import-resolver-webpack: '*' 1435 | peerDependenciesMeta: 1436 | '@typescript-eslint/parser': 1437 | optional: true 1438 | eslint-import-resolver-node: 1439 | optional: true 1440 | eslint-import-resolver-typescript: 1441 | optional: true 1442 | eslint-import-resolver-webpack: 1443 | optional: true 1444 | dependencies: 1445 | '@typescript-eslint/parser': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 1446 | debug: 3.2.7 1447 | eslint-import-resolver-node: 0.3.6 1448 | find-up: 2.1.0 1449 | transitivePeerDependencies: 1450 | - supports-color 1451 | dev: true 1452 | 1453 | /eslint-plugin-eslint-comments@3.2.0(eslint@8.23.0): 1454 | resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} 1455 | engines: {node: '>=6.5.0'} 1456 | peerDependencies: 1457 | eslint: '>=4.19.1' 1458 | dependencies: 1459 | escape-string-regexp: 1.0.5 1460 | eslint: 8.23.0 1461 | ignore: 5.2.0 1462 | dev: true 1463 | 1464 | /eslint-plugin-html@7.1.0: 1465 | resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} 1466 | dependencies: 1467 | htmlparser2: 8.0.1 1468 | dev: true 1469 | 1470 | /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.33.0)(eslint@8.23.0): 1471 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 1472 | engines: {node: '>=4'} 1473 | peerDependencies: 1474 | '@typescript-eslint/parser': '*' 1475 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1476 | peerDependenciesMeta: 1477 | '@typescript-eslint/parser': 1478 | optional: true 1479 | dependencies: 1480 | '@typescript-eslint/parser': 5.33.0(eslint@8.23.0)(typescript@4.8.2) 1481 | array-includes: 3.1.5 1482 | array.prototype.flat: 1.3.0 1483 | debug: 2.6.9 1484 | doctrine: 2.1.0 1485 | eslint: 8.23.0 1486 | eslint-import-resolver-node: 0.3.6 1487 | eslint-module-utils: 2.7.3(@typescript-eslint/parser@5.33.0)(eslint-import-resolver-node@0.3.6) 1488 | has: 1.0.3 1489 | is-core-module: 2.9.0 1490 | is-glob: 4.0.3 1491 | minimatch: 3.1.2 1492 | object.values: 1.1.5 1493 | resolve: 1.22.1 1494 | tsconfig-paths: 3.14.1 1495 | transitivePeerDependencies: 1496 | - eslint-import-resolver-typescript 1497 | - eslint-import-resolver-webpack 1498 | - supports-color 1499 | dev: true 1500 | 1501 | /eslint-plugin-jsonc@2.3.1(eslint@8.23.0): 1502 | resolution: {integrity: sha512-8sgWGWiVRMFL6xGawRymrE4RjZJgiU0rXYgFFb71wvdwuUkPgWSvfFtc8jfwcgjjqFjis8vzCUFsg7SciMEDWw==} 1503 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1504 | peerDependencies: 1505 | eslint: '>=6.0.0' 1506 | dependencies: 1507 | eslint: 8.23.0 1508 | eslint-utils: 3.0.0(eslint@8.23.0) 1509 | jsonc-eslint-parser: 2.1.0 1510 | natural-compare: 1.4.0 1511 | dev: true 1512 | 1513 | /eslint-plugin-markdown@3.0.0(eslint@8.23.0): 1514 | resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} 1515 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1516 | peerDependencies: 1517 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 1518 | dependencies: 1519 | eslint: 8.23.0 1520 | mdast-util-from-markdown: 0.8.5 1521 | transitivePeerDependencies: 1522 | - supports-color 1523 | dev: true 1524 | 1525 | /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.5.0)(eslint@8.23.0)(prettier@2.7.1): 1526 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} 1527 | engines: {node: '>=12.0.0'} 1528 | peerDependencies: 1529 | eslint: '>=7.28.0' 1530 | eslint-config-prettier: '*' 1531 | prettier: '>=2.0.0' 1532 | peerDependenciesMeta: 1533 | eslint-config-prettier: 1534 | optional: true 1535 | dependencies: 1536 | eslint: 8.23.0 1537 | eslint-config-prettier: 8.5.0(eslint@8.23.0) 1538 | prettier: 2.7.1 1539 | prettier-linter-helpers: 1.0.0 1540 | dev: true 1541 | 1542 | /eslint-plugin-unicorn@43.0.2(eslint@8.23.0): 1543 | resolution: {integrity: sha512-DtqZ5mf/GMlfWoz1abIjq5jZfaFuHzGBZYIeuJfEoKKGWRHr2JiJR+ea+BF7Wx2N1PPRoT/2fwgiK1NnmNE3Hg==} 1544 | engines: {node: '>=14.18'} 1545 | peerDependencies: 1546 | eslint: '>=8.18.0' 1547 | dependencies: 1548 | '@babel/helper-validator-identifier': 7.18.6 1549 | ci-info: 3.3.2 1550 | clean-regexp: 1.0.0 1551 | eslint: 8.23.0 1552 | eslint-utils: 3.0.0(eslint@8.23.0) 1553 | esquery: 1.4.0 1554 | indent-string: 4.0.0 1555 | is-builtin-module: 3.1.0 1556 | lodash: 4.17.21 1557 | pluralize: 8.0.0 1558 | read-pkg-up: 7.0.1 1559 | regexp-tree: 0.1.24 1560 | safe-regex: 2.1.1 1561 | semver: 7.3.7 1562 | strip-indent: 3.0.0 1563 | dev: true 1564 | 1565 | /eslint-plugin-yml@1.1.0(eslint@8.23.0): 1566 | resolution: {integrity: sha512-64g3vWwolk9d+FykuqxXGLn3oGEK2ZecIAyfIEsyuSHBQkR8utp5h8e75R6tGph1IRggoGl27QQ2oi2M1IF1Vw==} 1567 | engines: {node: ^14.17.0 || >=16.0.0} 1568 | peerDependencies: 1569 | eslint: '>=6.0.0' 1570 | dependencies: 1571 | debug: 4.3.4 1572 | eslint: 8.23.0 1573 | lodash: 4.17.21 1574 | natural-compare: 1.4.0 1575 | yaml-eslint-parser: 1.1.0 1576 | transitivePeerDependencies: 1577 | - supports-color 1578 | dev: true 1579 | 1580 | /eslint-scope@5.1.1: 1581 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1582 | engines: {node: '>=8.0.0'} 1583 | dependencies: 1584 | esrecurse: 4.3.0 1585 | estraverse: 4.3.0 1586 | dev: true 1587 | 1588 | /eslint-scope@7.1.1: 1589 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1590 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1591 | dependencies: 1592 | esrecurse: 4.3.0 1593 | estraverse: 5.3.0 1594 | dev: true 1595 | 1596 | /eslint-utils@3.0.0(eslint@8.23.0): 1597 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1598 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1599 | peerDependencies: 1600 | eslint: '>=5' 1601 | dependencies: 1602 | eslint: 8.23.0 1603 | eslint-visitor-keys: 2.1.0 1604 | dev: true 1605 | 1606 | /eslint-visitor-keys@2.1.0: 1607 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1608 | engines: {node: '>=10'} 1609 | dev: true 1610 | 1611 | /eslint-visitor-keys@3.3.0: 1612 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1613 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1614 | dev: true 1615 | 1616 | /eslint@8.23.0: 1617 | resolution: {integrity: sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==} 1618 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1619 | hasBin: true 1620 | dependencies: 1621 | '@eslint/eslintrc': 1.3.1 1622 | '@humanwhocodes/config-array': 0.10.4 1623 | '@humanwhocodes/gitignore-to-minimatch': 1.0.2 1624 | '@humanwhocodes/module-importer': 1.0.1 1625 | ajv: 6.12.6 1626 | chalk: 4.1.2 1627 | cross-spawn: 7.0.3 1628 | debug: 4.3.4 1629 | doctrine: 3.0.0 1630 | escape-string-regexp: 4.0.0 1631 | eslint-scope: 7.1.1 1632 | eslint-utils: 3.0.0(eslint@8.23.0) 1633 | eslint-visitor-keys: 3.3.0 1634 | espree: 9.4.0 1635 | esquery: 1.4.0 1636 | esutils: 2.0.3 1637 | fast-deep-equal: 3.1.3 1638 | file-entry-cache: 6.0.1 1639 | find-up: 5.0.0 1640 | functional-red-black-tree: 1.0.1 1641 | glob-parent: 6.0.2 1642 | globals: 13.15.0 1643 | globby: 11.1.0 1644 | grapheme-splitter: 1.0.4 1645 | ignore: 5.2.0 1646 | import-fresh: 3.3.0 1647 | imurmurhash: 0.1.4 1648 | is-glob: 4.0.3 1649 | js-yaml: 4.1.0 1650 | json-stable-stringify-without-jsonify: 1.0.1 1651 | levn: 0.4.1 1652 | lodash.merge: 4.6.2 1653 | minimatch: 3.1.2 1654 | natural-compare: 1.4.0 1655 | optionator: 0.9.1 1656 | regexpp: 3.2.0 1657 | strip-ansi: 6.0.1 1658 | strip-json-comments: 3.1.1 1659 | text-table: 0.2.0 1660 | transitivePeerDependencies: 1661 | - supports-color 1662 | dev: true 1663 | 1664 | /espree@9.4.0: 1665 | resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} 1666 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1667 | dependencies: 1668 | acorn: 8.8.0 1669 | acorn-jsx: 5.3.2(acorn@8.8.0) 1670 | eslint-visitor-keys: 3.3.0 1671 | dev: true 1672 | 1673 | /esquery@1.4.0: 1674 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1675 | engines: {node: '>=0.10'} 1676 | dependencies: 1677 | estraverse: 5.3.0 1678 | dev: true 1679 | 1680 | /esrecurse@4.3.0: 1681 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1682 | engines: {node: '>=4.0'} 1683 | dependencies: 1684 | estraverse: 5.3.0 1685 | dev: true 1686 | 1687 | /estraverse@4.3.0: 1688 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1689 | engines: {node: '>=4.0'} 1690 | dev: true 1691 | 1692 | /estraverse@5.3.0: 1693 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1694 | engines: {node: '>=4.0'} 1695 | dev: true 1696 | 1697 | /esutils@2.0.3: 1698 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1699 | engines: {node: '>=0.10.0'} 1700 | dev: true 1701 | 1702 | /execa@5.1.1: 1703 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1704 | engines: {node: '>=10'} 1705 | dependencies: 1706 | cross-spawn: 7.0.3 1707 | get-stream: 6.0.1 1708 | human-signals: 2.1.0 1709 | is-stream: 2.0.1 1710 | merge-stream: 2.0.0 1711 | npm-run-path: 4.0.1 1712 | onetime: 5.1.2 1713 | signal-exit: 3.0.7 1714 | strip-final-newline: 2.0.0 1715 | 1716 | /execa@6.1.0: 1717 | resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} 1718 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1719 | dependencies: 1720 | cross-spawn: 7.0.3 1721 | get-stream: 6.0.1 1722 | human-signals: 3.0.1 1723 | is-stream: 3.0.0 1724 | merge-stream: 2.0.0 1725 | npm-run-path: 5.1.0 1726 | onetime: 6.0.0 1727 | signal-exit: 3.0.7 1728 | strip-final-newline: 3.0.0 1729 | dev: false 1730 | 1731 | /external-editor@3.1.0: 1732 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1733 | engines: {node: '>=4'} 1734 | dependencies: 1735 | chardet: 0.7.0 1736 | iconv-lite: 0.4.24 1737 | tmp: 0.0.33 1738 | dev: false 1739 | 1740 | /fast-deep-equal@3.1.3: 1741 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1742 | dev: true 1743 | 1744 | /fast-diff@1.2.0: 1745 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 1746 | dev: true 1747 | 1748 | /fast-glob@3.2.11: 1749 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1750 | engines: {node: '>=8.6.0'} 1751 | dependencies: 1752 | '@nodelib/fs.stat': 2.0.5 1753 | '@nodelib/fs.walk': 1.2.8 1754 | glob-parent: 5.1.2 1755 | merge2: 1.4.1 1756 | micromatch: 4.0.5 1757 | dev: true 1758 | 1759 | /fast-json-stable-stringify@2.1.0: 1760 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1761 | dev: true 1762 | 1763 | /fast-levenshtein@2.0.6: 1764 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1765 | dev: true 1766 | 1767 | /fastq@1.13.0: 1768 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1769 | dependencies: 1770 | reusify: 1.0.4 1771 | dev: true 1772 | 1773 | /fetch-blob@3.2.0: 1774 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 1775 | engines: {node: ^12.20 || >= 14.13} 1776 | dependencies: 1777 | node-domexception: 1.0.0 1778 | web-streams-polyfill: 3.2.1 1779 | dev: false 1780 | 1781 | /figures@5.0.0: 1782 | resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} 1783 | engines: {node: '>=14'} 1784 | dependencies: 1785 | escape-string-regexp: 5.0.0 1786 | is-unicode-supported: 1.2.0 1787 | dev: false 1788 | 1789 | /file-entry-cache@6.0.1: 1790 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1791 | engines: {node: ^10.12.0 || >=12.0.0} 1792 | dependencies: 1793 | flat-cache: 3.0.4 1794 | dev: true 1795 | 1796 | /fill-range@7.0.1: 1797 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1798 | engines: {node: '>=8'} 1799 | dependencies: 1800 | to-regex-range: 5.0.1 1801 | 1802 | /find-up@2.1.0: 1803 | resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} 1804 | engines: {node: '>=4'} 1805 | dependencies: 1806 | locate-path: 2.0.0 1807 | dev: true 1808 | 1809 | /find-up@4.1.0: 1810 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1811 | engines: {node: '>=8'} 1812 | dependencies: 1813 | locate-path: 5.0.0 1814 | path-exists: 4.0.0 1815 | dev: true 1816 | 1817 | /find-up@5.0.0: 1818 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1819 | engines: {node: '>=10'} 1820 | dependencies: 1821 | locate-path: 6.0.0 1822 | path-exists: 4.0.0 1823 | dev: true 1824 | 1825 | /find-versions@5.1.0: 1826 | resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} 1827 | engines: {node: '>=12'} 1828 | dependencies: 1829 | semver-regex: 4.0.5 1830 | dev: false 1831 | 1832 | /flat-cache@3.0.4: 1833 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1834 | engines: {node: ^10.12.0 || >=12.0.0} 1835 | dependencies: 1836 | flatted: 3.2.5 1837 | rimraf: 3.0.2 1838 | dev: true 1839 | 1840 | /flatted@3.2.5: 1841 | resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} 1842 | dev: true 1843 | 1844 | /formdata-polyfill@4.0.10: 1845 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 1846 | engines: {node: '>=12.20.0'} 1847 | dependencies: 1848 | fetch-blob: 3.2.0 1849 | dev: false 1850 | 1851 | /fs.realpath@1.0.0: 1852 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1853 | dev: true 1854 | 1855 | /fsevents@2.3.2: 1856 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1857 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1858 | os: [darwin] 1859 | requiresBuild: true 1860 | optional: true 1861 | 1862 | /function-bind@1.1.1: 1863 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1864 | dev: true 1865 | 1866 | /function.prototype.name@1.1.5: 1867 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1868 | engines: {node: '>= 0.4'} 1869 | dependencies: 1870 | call-bind: 1.0.2 1871 | define-properties: 1.1.4 1872 | es-abstract: 1.20.1 1873 | functions-have-names: 1.2.3 1874 | dev: true 1875 | 1876 | /functional-red-black-tree@1.0.1: 1877 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} 1878 | dev: true 1879 | 1880 | /functions-have-names@1.2.3: 1881 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1882 | dev: true 1883 | 1884 | /get-func-name@2.0.0: 1885 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1886 | dev: true 1887 | 1888 | /get-intrinsic@1.1.2: 1889 | resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} 1890 | dependencies: 1891 | function-bind: 1.1.1 1892 | has: 1.0.3 1893 | has-symbols: 1.0.3 1894 | dev: true 1895 | 1896 | /get-stream@6.0.1: 1897 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1898 | engines: {node: '>=10'} 1899 | 1900 | /get-symbol-description@1.0.0: 1901 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1902 | engines: {node: '>= 0.4'} 1903 | dependencies: 1904 | call-bind: 1.0.2 1905 | get-intrinsic: 1.1.2 1906 | dev: true 1907 | 1908 | /get-tsconfig@4.1.0: 1909 | resolution: {integrity: sha512-bhshxJhpfmeQ8x4fAvDqJV2VfGp5TfHdLpmBpNZZhMoVyfIrOippBW4mayC3DT9Sxuhcyl56Efw61qL28hG4EQ==} 1910 | dev: true 1911 | 1912 | /glob-parent@5.1.2: 1913 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1914 | engines: {node: '>= 6'} 1915 | dependencies: 1916 | is-glob: 4.0.3 1917 | 1918 | /glob-parent@6.0.2: 1919 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1920 | engines: {node: '>=10.13.0'} 1921 | dependencies: 1922 | is-glob: 4.0.3 1923 | dev: true 1924 | 1925 | /glob@7.1.6: 1926 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1927 | dependencies: 1928 | fs.realpath: 1.0.0 1929 | inflight: 1.0.6 1930 | inherits: 2.0.4 1931 | minimatch: 3.1.2 1932 | once: 1.4.0 1933 | path-is-absolute: 1.0.1 1934 | dev: true 1935 | 1936 | /glob@7.2.3: 1937 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1938 | dependencies: 1939 | fs.realpath: 1.0.0 1940 | inflight: 1.0.6 1941 | inherits: 2.0.4 1942 | minimatch: 3.1.2 1943 | once: 1.4.0 1944 | path-is-absolute: 1.0.1 1945 | dev: true 1946 | 1947 | /globals@13.15.0: 1948 | resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} 1949 | engines: {node: '>=8'} 1950 | dependencies: 1951 | type-fest: 0.20.2 1952 | dev: true 1953 | 1954 | /globby@11.1.0: 1955 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1956 | engines: {node: '>=10'} 1957 | dependencies: 1958 | array-union: 2.1.0 1959 | dir-glob: 3.0.1 1960 | fast-glob: 3.2.11 1961 | ignore: 5.2.0 1962 | merge2: 1.4.1 1963 | slash: 3.0.0 1964 | dev: true 1965 | 1966 | /grapheme-splitter@1.0.4: 1967 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1968 | dev: true 1969 | 1970 | /has-bigints@1.0.2: 1971 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1972 | dev: true 1973 | 1974 | /has-flag@3.0.0: 1975 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1976 | engines: {node: '>=4'} 1977 | dev: true 1978 | 1979 | /has-flag@4.0.0: 1980 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1981 | engines: {node: '>=8'} 1982 | dev: true 1983 | 1984 | /has-property-descriptors@1.0.0: 1985 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1986 | dependencies: 1987 | get-intrinsic: 1.1.2 1988 | dev: true 1989 | 1990 | /has-symbols@1.0.3: 1991 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1992 | engines: {node: '>= 0.4'} 1993 | dev: true 1994 | 1995 | /has-tostringtag@1.0.0: 1996 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1997 | engines: {node: '>= 0.4'} 1998 | dependencies: 1999 | has-symbols: 1.0.3 2000 | dev: true 2001 | 2002 | /has@1.0.3: 2003 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2004 | engines: {node: '>= 0.4.0'} 2005 | dependencies: 2006 | function-bind: 1.1.1 2007 | dev: true 2008 | 2009 | /hosted-git-info@2.8.9: 2010 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 2011 | dev: true 2012 | 2013 | /htmlparser2@8.0.1: 2014 | resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} 2015 | dependencies: 2016 | domelementtype: 2.3.0 2017 | domhandler: 5.0.3 2018 | domutils: 3.0.1 2019 | entities: 4.3.1 2020 | dev: true 2021 | 2022 | /human-signals@2.1.0: 2023 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 2024 | engines: {node: '>=10.17.0'} 2025 | 2026 | /human-signals@3.0.1: 2027 | resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} 2028 | engines: {node: '>=12.20.0'} 2029 | dev: false 2030 | 2031 | /iconv-lite@0.4.24: 2032 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2033 | engines: {node: '>=0.10.0'} 2034 | dependencies: 2035 | safer-buffer: 2.1.2 2036 | dev: false 2037 | 2038 | /ieee754@1.2.1: 2039 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2040 | dev: false 2041 | 2042 | /ignore@5.2.0: 2043 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 2044 | engines: {node: '>= 4'} 2045 | dev: true 2046 | 2047 | /import-fresh@3.3.0: 2048 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2049 | engines: {node: '>=6'} 2050 | dependencies: 2051 | parent-module: 1.0.1 2052 | resolve-from: 4.0.0 2053 | dev: true 2054 | 2055 | /imurmurhash@0.1.4: 2056 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2057 | engines: {node: '>=0.8.19'} 2058 | dev: true 2059 | 2060 | /indent-string@4.0.0: 2061 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 2062 | engines: {node: '>=8'} 2063 | dev: true 2064 | 2065 | /inflight@1.0.6: 2066 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2067 | dependencies: 2068 | once: 1.4.0 2069 | wrappy: 1.0.2 2070 | dev: true 2071 | 2072 | /inherits@2.0.4: 2073 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2074 | 2075 | /inquirer@9.1.1: 2076 | resolution: {integrity: sha512-hfS9EJ1pVkGNbYKqzdGwMj0Dqosd36Qvxd5pFy4657QT23gmtFTSqoYBisZR75DReeSMWPNa8J0Lf6TQCz8PvA==} 2077 | engines: {node: '>=12.0.0'} 2078 | dependencies: 2079 | ansi-escapes: 5.0.0 2080 | chalk: 5.0.1 2081 | cli-cursor: 4.0.0 2082 | cli-width: 4.0.0 2083 | external-editor: 3.1.0 2084 | figures: 5.0.0 2085 | lodash: 4.17.21 2086 | mute-stream: 0.0.8 2087 | ora: 6.1.2 2088 | run-async: 2.4.1 2089 | rxjs: 7.5.6 2090 | string-width: 5.1.2 2091 | strip-ansi: 7.0.1 2092 | through: 2.3.8 2093 | wrap-ansi: 8.0.1 2094 | dev: false 2095 | 2096 | /internal-slot@1.0.3: 2097 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 2098 | engines: {node: '>= 0.4'} 2099 | dependencies: 2100 | get-intrinsic: 1.1.2 2101 | has: 1.0.3 2102 | side-channel: 1.0.4 2103 | dev: true 2104 | 2105 | /is-alphabetical@1.0.4: 2106 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 2107 | dev: true 2108 | 2109 | /is-alphanumerical@1.0.4: 2110 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 2111 | dependencies: 2112 | is-alphabetical: 1.0.4 2113 | is-decimal: 1.0.4 2114 | dev: true 2115 | 2116 | /is-arrayish@0.2.1: 2117 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 2118 | dev: true 2119 | 2120 | /is-bigint@1.0.4: 2121 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2122 | dependencies: 2123 | has-bigints: 1.0.2 2124 | dev: true 2125 | 2126 | /is-binary-path@2.1.0: 2127 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2128 | engines: {node: '>=8'} 2129 | dependencies: 2130 | binary-extensions: 2.2.0 2131 | 2132 | /is-boolean-object@1.1.2: 2133 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2134 | engines: {node: '>= 0.4'} 2135 | dependencies: 2136 | call-bind: 1.0.2 2137 | has-tostringtag: 1.0.0 2138 | dev: true 2139 | 2140 | /is-builtin-module@3.1.0: 2141 | resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} 2142 | engines: {node: '>=6'} 2143 | dependencies: 2144 | builtin-modules: 3.3.0 2145 | dev: true 2146 | 2147 | /is-callable@1.2.4: 2148 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 2149 | engines: {node: '>= 0.4'} 2150 | dev: true 2151 | 2152 | /is-core-module@2.9.0: 2153 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 2154 | dependencies: 2155 | has: 1.0.3 2156 | dev: true 2157 | 2158 | /is-date-object@1.0.5: 2159 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2160 | engines: {node: '>= 0.4'} 2161 | dependencies: 2162 | has-tostringtag: 1.0.0 2163 | dev: true 2164 | 2165 | /is-decimal@1.0.4: 2166 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 2167 | dev: true 2168 | 2169 | /is-extglob@2.1.1: 2170 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2171 | engines: {node: '>=0.10.0'} 2172 | 2173 | /is-glob@4.0.3: 2174 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2175 | engines: {node: '>=0.10.0'} 2176 | dependencies: 2177 | is-extglob: 2.1.1 2178 | 2179 | /is-hexadecimal@1.0.4: 2180 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 2181 | dev: true 2182 | 2183 | /is-interactive@2.0.0: 2184 | resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} 2185 | engines: {node: '>=12'} 2186 | dev: false 2187 | 2188 | /is-negative-zero@2.0.2: 2189 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2190 | engines: {node: '>= 0.4'} 2191 | dev: true 2192 | 2193 | /is-number-object@1.0.7: 2194 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2195 | engines: {node: '>= 0.4'} 2196 | dependencies: 2197 | has-tostringtag: 1.0.0 2198 | dev: true 2199 | 2200 | /is-number@7.0.0: 2201 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2202 | engines: {node: '>=0.12.0'} 2203 | 2204 | /is-regex@1.1.4: 2205 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2206 | engines: {node: '>= 0.4'} 2207 | dependencies: 2208 | call-bind: 1.0.2 2209 | has-tostringtag: 1.0.0 2210 | dev: true 2211 | 2212 | /is-shared-array-buffer@1.0.2: 2213 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2214 | dependencies: 2215 | call-bind: 1.0.2 2216 | dev: true 2217 | 2218 | /is-stream@2.0.1: 2219 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 2220 | engines: {node: '>=8'} 2221 | 2222 | /is-stream@3.0.0: 2223 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 2224 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2225 | dev: false 2226 | 2227 | /is-string@1.0.7: 2228 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2229 | engines: {node: '>= 0.4'} 2230 | dependencies: 2231 | has-tostringtag: 1.0.0 2232 | dev: true 2233 | 2234 | /is-symbol@1.0.4: 2235 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2236 | engines: {node: '>= 0.4'} 2237 | dependencies: 2238 | has-symbols: 1.0.3 2239 | dev: true 2240 | 2241 | /is-unicode-supported@1.2.0: 2242 | resolution: {integrity: sha512-wH+U77omcRzevfIG8dDhTS0V9zZyweakfD01FULl97+0EHiJTTZtJqxPSkIIo/SDPv/i07k/C9jAPY+jwLLeUQ==} 2243 | engines: {node: '>=12'} 2244 | dev: false 2245 | 2246 | /is-weakref@1.0.2: 2247 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2248 | dependencies: 2249 | call-bind: 1.0.2 2250 | dev: true 2251 | 2252 | /isexe@2.0.0: 2253 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2254 | 2255 | /joycon@3.1.1: 2256 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 2257 | engines: {node: '>=10'} 2258 | dev: true 2259 | 2260 | /js-tokens@4.0.0: 2261 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2262 | dev: true 2263 | 2264 | /js-yaml@4.1.0: 2265 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2266 | hasBin: true 2267 | dependencies: 2268 | argparse: 2.0.1 2269 | dev: true 2270 | 2271 | /json-parse-even-better-errors@2.3.1: 2272 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2273 | dev: true 2274 | 2275 | /json-schema-traverse@0.4.1: 2276 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2277 | dev: true 2278 | 2279 | /json-stable-stringify-without-jsonify@1.0.1: 2280 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2281 | dev: true 2282 | 2283 | /json5@1.0.1: 2284 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 2285 | hasBin: true 2286 | dependencies: 2287 | minimist: 1.2.6 2288 | dev: true 2289 | 2290 | /jsonc-eslint-parser@2.1.0: 2291 | resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} 2292 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2293 | dependencies: 2294 | acorn: 8.8.0 2295 | eslint-visitor-keys: 3.3.0 2296 | espree: 9.4.0 2297 | semver: 7.3.7 2298 | dev: true 2299 | 2300 | /jsonc-parser@3.2.0: 2301 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 2302 | dev: false 2303 | 2304 | /kleur@3.0.3: 2305 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2306 | engines: {node: '>=6'} 2307 | dev: true 2308 | 2309 | /kleur@4.1.4: 2310 | resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} 2311 | engines: {node: '>=6'} 2312 | dev: true 2313 | 2314 | /levn@0.4.1: 2315 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2316 | engines: {node: '>= 0.8.0'} 2317 | dependencies: 2318 | prelude-ls: 1.2.1 2319 | type-check: 0.4.0 2320 | dev: true 2321 | 2322 | /lilconfig@2.0.5: 2323 | resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} 2324 | engines: {node: '>=10'} 2325 | dev: true 2326 | 2327 | /lines-and-columns@1.2.4: 2328 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2329 | dev: true 2330 | 2331 | /load-tsconfig@0.2.3: 2332 | resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} 2333 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2334 | dev: true 2335 | 2336 | /local-pkg@0.4.2: 2337 | resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} 2338 | engines: {node: '>=14'} 2339 | dev: true 2340 | 2341 | /locate-path@2.0.0: 2342 | resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} 2343 | engines: {node: '>=4'} 2344 | dependencies: 2345 | p-locate: 2.0.0 2346 | path-exists: 3.0.0 2347 | dev: true 2348 | 2349 | /locate-path@5.0.0: 2350 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2351 | engines: {node: '>=8'} 2352 | dependencies: 2353 | p-locate: 4.1.0 2354 | dev: true 2355 | 2356 | /locate-path@6.0.0: 2357 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2358 | engines: {node: '>=10'} 2359 | dependencies: 2360 | p-locate: 5.0.0 2361 | dev: true 2362 | 2363 | /lodash.merge@4.6.2: 2364 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2365 | dev: true 2366 | 2367 | /lodash.sortby@4.7.0: 2368 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 2369 | dev: true 2370 | 2371 | /lodash@4.17.21: 2372 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2373 | 2374 | /log-symbols@5.1.0: 2375 | resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} 2376 | engines: {node: '>=12'} 2377 | dependencies: 2378 | chalk: 5.0.1 2379 | is-unicode-supported: 1.2.0 2380 | dev: false 2381 | 2382 | /loupe@2.3.4: 2383 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} 2384 | dependencies: 2385 | get-func-name: 2.0.0 2386 | dev: true 2387 | 2388 | /lru-cache@6.0.0: 2389 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2390 | engines: {node: '>=10'} 2391 | dependencies: 2392 | yallist: 4.0.0 2393 | 2394 | /mdast-util-from-markdown@0.8.5: 2395 | resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} 2396 | dependencies: 2397 | '@types/mdast': 3.0.10 2398 | mdast-util-to-string: 2.0.0 2399 | micromark: 2.11.4 2400 | parse-entities: 2.0.0 2401 | unist-util-stringify-position: 2.0.3 2402 | transitivePeerDependencies: 2403 | - supports-color 2404 | dev: true 2405 | 2406 | /mdast-util-to-string@2.0.0: 2407 | resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} 2408 | dev: true 2409 | 2410 | /merge-stream@2.0.0: 2411 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2412 | 2413 | /merge2@1.4.1: 2414 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2415 | engines: {node: '>= 8'} 2416 | dev: true 2417 | 2418 | /micromark@2.11.4: 2419 | resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} 2420 | dependencies: 2421 | debug: 4.3.4 2422 | parse-entities: 2.0.0 2423 | transitivePeerDependencies: 2424 | - supports-color 2425 | dev: true 2426 | 2427 | /micromatch@4.0.5: 2428 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2429 | engines: {node: '>=8.6'} 2430 | dependencies: 2431 | braces: 3.0.2 2432 | picomatch: 2.3.1 2433 | dev: true 2434 | 2435 | /mimic-fn@2.1.0: 2436 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2437 | engines: {node: '>=6'} 2438 | 2439 | /mimic-fn@4.0.0: 2440 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2441 | engines: {node: '>=12'} 2442 | dev: false 2443 | 2444 | /min-indent@1.0.1: 2445 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2446 | engines: {node: '>=4'} 2447 | dev: true 2448 | 2449 | /minimatch@3.1.2: 2450 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2451 | dependencies: 2452 | brace-expansion: 1.1.11 2453 | dev: true 2454 | 2455 | /minimist@1.2.6: 2456 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2457 | dev: true 2458 | 2459 | /ms@2.0.0: 2460 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2461 | dev: true 2462 | 2463 | /ms@2.1.2: 2464 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2465 | dev: true 2466 | 2467 | /ms@2.1.3: 2468 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2469 | dev: true 2470 | 2471 | /mute-stream@0.0.8: 2472 | resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} 2473 | dev: false 2474 | 2475 | /mz@2.7.0: 2476 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2477 | dependencies: 2478 | any-promise: 1.3.0 2479 | object-assign: 4.1.1 2480 | thenify-all: 1.6.0 2481 | dev: true 2482 | 2483 | /nanoid@3.3.4: 2484 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 2485 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2486 | hasBin: true 2487 | dev: true 2488 | 2489 | /natural-compare@1.4.0: 2490 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2491 | dev: true 2492 | 2493 | /node-domexception@1.0.0: 2494 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2495 | engines: {node: '>=10.5.0'} 2496 | dev: false 2497 | 2498 | /node-fetch@3.2.10: 2499 | resolution: {integrity: sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==} 2500 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2501 | dependencies: 2502 | data-uri-to-buffer: 4.0.0 2503 | fetch-blob: 3.2.0 2504 | formdata-polyfill: 4.0.10 2505 | dev: false 2506 | 2507 | /normalize-package-data@2.5.0: 2508 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 2509 | dependencies: 2510 | hosted-git-info: 2.8.9 2511 | resolve: 1.22.1 2512 | semver: 5.7.1 2513 | validate-npm-package-license: 3.0.4 2514 | dev: true 2515 | 2516 | /normalize-path@3.0.0: 2517 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2518 | engines: {node: '>=0.10.0'} 2519 | 2520 | /npm-run-path@4.0.1: 2521 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2522 | engines: {node: '>=8'} 2523 | dependencies: 2524 | path-key: 3.1.1 2525 | 2526 | /npm-run-path@5.1.0: 2527 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 2528 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2529 | dependencies: 2530 | path-key: 4.0.0 2531 | dev: false 2532 | 2533 | /object-assign@4.1.1: 2534 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2535 | engines: {node: '>=0.10.0'} 2536 | dev: true 2537 | 2538 | /object-inspect@1.12.2: 2539 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 2540 | dev: true 2541 | 2542 | /object-keys@1.1.1: 2543 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2544 | engines: {node: '>= 0.4'} 2545 | dev: true 2546 | 2547 | /object.assign@4.1.2: 2548 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 2549 | engines: {node: '>= 0.4'} 2550 | dependencies: 2551 | call-bind: 1.0.2 2552 | define-properties: 1.1.4 2553 | has-symbols: 1.0.3 2554 | object-keys: 1.1.1 2555 | dev: true 2556 | 2557 | /object.values@1.1.5: 2558 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 2559 | engines: {node: '>= 0.4'} 2560 | dependencies: 2561 | call-bind: 1.0.2 2562 | define-properties: 1.1.4 2563 | es-abstract: 1.20.1 2564 | dev: true 2565 | 2566 | /once@1.4.0: 2567 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2568 | dependencies: 2569 | wrappy: 1.0.2 2570 | dev: true 2571 | 2572 | /onetime@5.1.2: 2573 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2574 | engines: {node: '>=6'} 2575 | dependencies: 2576 | mimic-fn: 2.1.0 2577 | 2578 | /onetime@6.0.0: 2579 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2580 | engines: {node: '>=12'} 2581 | dependencies: 2582 | mimic-fn: 4.0.0 2583 | dev: false 2584 | 2585 | /optionator@0.9.1: 2586 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2587 | engines: {node: '>= 0.8.0'} 2588 | dependencies: 2589 | deep-is: 0.1.4 2590 | fast-levenshtein: 2.0.6 2591 | levn: 0.4.1 2592 | prelude-ls: 1.2.1 2593 | type-check: 0.4.0 2594 | word-wrap: 1.2.3 2595 | dev: true 2596 | 2597 | /ora@6.1.2: 2598 | resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} 2599 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2600 | dependencies: 2601 | bl: 5.0.0 2602 | chalk: 5.0.1 2603 | cli-cursor: 4.0.0 2604 | cli-spinners: 2.7.0 2605 | is-interactive: 2.0.0 2606 | is-unicode-supported: 1.2.0 2607 | log-symbols: 5.1.0 2608 | strip-ansi: 7.0.1 2609 | wcwidth: 1.0.1 2610 | dev: false 2611 | 2612 | /os-tmpdir@1.0.2: 2613 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 2614 | engines: {node: '>=0.10.0'} 2615 | dev: false 2616 | 2617 | /p-limit@1.3.0: 2618 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 2619 | engines: {node: '>=4'} 2620 | dependencies: 2621 | p-try: 1.0.0 2622 | dev: true 2623 | 2624 | /p-limit@2.3.0: 2625 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2626 | engines: {node: '>=6'} 2627 | dependencies: 2628 | p-try: 2.2.0 2629 | dev: true 2630 | 2631 | /p-limit@3.1.0: 2632 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2633 | engines: {node: '>=10'} 2634 | dependencies: 2635 | yocto-queue: 0.1.0 2636 | dev: true 2637 | 2638 | /p-locate@2.0.0: 2639 | resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} 2640 | engines: {node: '>=4'} 2641 | dependencies: 2642 | p-limit: 1.3.0 2643 | dev: true 2644 | 2645 | /p-locate@4.1.0: 2646 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2647 | engines: {node: '>=8'} 2648 | dependencies: 2649 | p-limit: 2.3.0 2650 | dev: true 2651 | 2652 | /p-locate@5.0.0: 2653 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2654 | engines: {node: '>=10'} 2655 | dependencies: 2656 | p-limit: 3.1.0 2657 | dev: true 2658 | 2659 | /p-try@1.0.0: 2660 | resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} 2661 | engines: {node: '>=4'} 2662 | dev: true 2663 | 2664 | /p-try@2.2.0: 2665 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2666 | engines: {node: '>=6'} 2667 | dev: true 2668 | 2669 | /parent-module@1.0.1: 2670 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2671 | engines: {node: '>=6'} 2672 | dependencies: 2673 | callsites: 3.1.0 2674 | dev: true 2675 | 2676 | /parse-entities@2.0.0: 2677 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 2678 | dependencies: 2679 | character-entities: 1.2.4 2680 | character-entities-legacy: 1.1.4 2681 | character-reference-invalid: 1.1.4 2682 | is-alphanumerical: 1.0.4 2683 | is-decimal: 1.0.4 2684 | is-hexadecimal: 1.0.4 2685 | dev: true 2686 | 2687 | /parse-json@5.2.0: 2688 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2689 | engines: {node: '>=8'} 2690 | dependencies: 2691 | '@babel/code-frame': 7.18.6 2692 | error-ex: 1.3.2 2693 | json-parse-even-better-errors: 2.3.1 2694 | lines-and-columns: 1.2.4 2695 | dev: true 2696 | 2697 | /path-exists@3.0.0: 2698 | resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} 2699 | engines: {node: '>=4'} 2700 | dev: true 2701 | 2702 | /path-exists@4.0.0: 2703 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2704 | engines: {node: '>=8'} 2705 | dev: true 2706 | 2707 | /path-is-absolute@1.0.1: 2708 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2709 | engines: {node: '>=0.10.0'} 2710 | dev: true 2711 | 2712 | /path-key@3.1.1: 2713 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2714 | engines: {node: '>=8'} 2715 | 2716 | /path-key@4.0.0: 2717 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2718 | engines: {node: '>=12'} 2719 | dev: false 2720 | 2721 | /path-parse@1.0.7: 2722 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2723 | dev: true 2724 | 2725 | /path-type@4.0.0: 2726 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2727 | engines: {node: '>=8'} 2728 | dev: true 2729 | 2730 | /pathval@1.1.1: 2731 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 2732 | dev: true 2733 | 2734 | /picocolors@1.0.0: 2735 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2736 | dev: true 2737 | 2738 | /picomatch@2.3.1: 2739 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2740 | engines: {node: '>=8.6'} 2741 | 2742 | /pirates@4.0.5: 2743 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2744 | engines: {node: '>= 6'} 2745 | dev: true 2746 | 2747 | /pluralize@8.0.0: 2748 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 2749 | engines: {node: '>=4'} 2750 | dev: true 2751 | 2752 | /postcss-load-config@3.1.4: 2753 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 2754 | engines: {node: '>= 10'} 2755 | peerDependencies: 2756 | postcss: '>=8.0.9' 2757 | ts-node: '>=9.0.0' 2758 | peerDependenciesMeta: 2759 | postcss: 2760 | optional: true 2761 | ts-node: 2762 | optional: true 2763 | dependencies: 2764 | lilconfig: 2.0.5 2765 | yaml: 1.10.2 2766 | dev: true 2767 | 2768 | /postcss@8.4.14: 2769 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 2770 | engines: {node: ^10 || ^12 || >=14} 2771 | dependencies: 2772 | nanoid: 3.3.4 2773 | picocolors: 1.0.0 2774 | source-map-js: 1.0.2 2775 | dev: true 2776 | 2777 | /prelude-ls@1.2.1: 2778 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2779 | engines: {node: '>= 0.8.0'} 2780 | dev: true 2781 | 2782 | /prettier-linter-helpers@1.0.0: 2783 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 2784 | engines: {node: '>=6.0.0'} 2785 | dependencies: 2786 | fast-diff: 1.2.0 2787 | dev: true 2788 | 2789 | /prettier@2.7.1: 2790 | resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} 2791 | engines: {node: '>=10.13.0'} 2792 | hasBin: true 2793 | dev: true 2794 | 2795 | /prompts@2.4.2: 2796 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 2797 | engines: {node: '>= 6'} 2798 | dependencies: 2799 | kleur: 3.0.3 2800 | sisteransi: 1.0.5 2801 | dev: true 2802 | 2803 | /punycode@2.1.1: 2804 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2805 | engines: {node: '>=6'} 2806 | dev: true 2807 | 2808 | /queue-microtask@1.2.3: 2809 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2810 | dev: true 2811 | 2812 | /read-pkg-up@7.0.1: 2813 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 2814 | engines: {node: '>=8'} 2815 | dependencies: 2816 | find-up: 4.1.0 2817 | read-pkg: 5.2.0 2818 | type-fest: 0.8.1 2819 | dev: true 2820 | 2821 | /read-pkg@5.2.0: 2822 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 2823 | engines: {node: '>=8'} 2824 | dependencies: 2825 | '@types/normalize-package-data': 2.4.1 2826 | normalize-package-data: 2.5.0 2827 | parse-json: 5.2.0 2828 | type-fest: 0.6.0 2829 | dev: true 2830 | 2831 | /readable-stream@3.6.0: 2832 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 2833 | engines: {node: '>= 6'} 2834 | dependencies: 2835 | inherits: 2.0.4 2836 | string_decoder: 1.3.0 2837 | util-deprecate: 1.0.2 2838 | dev: false 2839 | 2840 | /readdirp@3.6.0: 2841 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2842 | engines: {node: '>=8.10.0'} 2843 | dependencies: 2844 | picomatch: 2.3.1 2845 | 2846 | /regexp-tree@0.1.24: 2847 | resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} 2848 | hasBin: true 2849 | dev: true 2850 | 2851 | /regexp.prototype.flags@1.4.3: 2852 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2853 | engines: {node: '>= 0.4'} 2854 | dependencies: 2855 | call-bind: 1.0.2 2856 | define-properties: 1.1.4 2857 | functions-have-names: 1.2.3 2858 | dev: true 2859 | 2860 | /regexpp@3.2.0: 2861 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2862 | engines: {node: '>=8'} 2863 | dev: true 2864 | 2865 | /resolve-from@4.0.0: 2866 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2867 | engines: {node: '>=4'} 2868 | dev: true 2869 | 2870 | /resolve-from@5.0.0: 2871 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2872 | engines: {node: '>=8'} 2873 | dev: true 2874 | 2875 | /resolve@1.22.1: 2876 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2877 | hasBin: true 2878 | dependencies: 2879 | is-core-module: 2.9.0 2880 | path-parse: 1.0.7 2881 | supports-preserve-symlinks-flag: 1.0.0 2882 | dev: true 2883 | 2884 | /restore-cursor@4.0.0: 2885 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} 2886 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2887 | dependencies: 2888 | onetime: 5.1.2 2889 | signal-exit: 3.0.7 2890 | dev: false 2891 | 2892 | /reusify@1.0.4: 2893 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2894 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2895 | dev: true 2896 | 2897 | /rimraf@3.0.2: 2898 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2899 | hasBin: true 2900 | dependencies: 2901 | glob: 7.2.3 2902 | dev: true 2903 | 2904 | /rollup@2.77.0: 2905 | resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} 2906 | engines: {node: '>=10.0.0'} 2907 | hasBin: true 2908 | optionalDependencies: 2909 | fsevents: 2.3.2 2910 | dev: true 2911 | 2912 | /run-async@2.4.1: 2913 | resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} 2914 | engines: {node: '>=0.12.0'} 2915 | dev: false 2916 | 2917 | /run-parallel@1.2.0: 2918 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2919 | dependencies: 2920 | queue-microtask: 1.2.3 2921 | dev: true 2922 | 2923 | /rxjs@7.5.6: 2924 | resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} 2925 | dependencies: 2926 | tslib: 2.4.0 2927 | 2928 | /safe-buffer@5.2.1: 2929 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2930 | dev: false 2931 | 2932 | /safe-regex@2.1.1: 2933 | resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} 2934 | dependencies: 2935 | regexp-tree: 0.1.24 2936 | dev: true 2937 | 2938 | /safer-buffer@2.1.2: 2939 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2940 | dev: false 2941 | 2942 | /semver-regex@4.0.5: 2943 | resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} 2944 | engines: {node: '>=12'} 2945 | dev: false 2946 | 2947 | /semver-truncate@3.0.0: 2948 | resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} 2949 | engines: {node: '>=12'} 2950 | dependencies: 2951 | semver: 7.3.7 2952 | dev: false 2953 | 2954 | /semver@5.7.1: 2955 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2956 | hasBin: true 2957 | dev: true 2958 | 2959 | /semver@7.3.7: 2960 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 2961 | engines: {node: '>=10'} 2962 | hasBin: true 2963 | dependencies: 2964 | lru-cache: 6.0.0 2965 | 2966 | /shebang-command@2.0.0: 2967 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2968 | engines: {node: '>=8'} 2969 | dependencies: 2970 | shebang-regex: 3.0.0 2971 | 2972 | /shebang-regex@3.0.0: 2973 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2974 | engines: {node: '>=8'} 2975 | 2976 | /side-channel@1.0.4: 2977 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2978 | dependencies: 2979 | call-bind: 1.0.2 2980 | get-intrinsic: 1.1.2 2981 | object-inspect: 1.12.2 2982 | dev: true 2983 | 2984 | /signal-exit@3.0.7: 2985 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2986 | 2987 | /sisteransi@1.0.5: 2988 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2989 | dev: true 2990 | 2991 | /slash@3.0.0: 2992 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2993 | engines: {node: '>=8'} 2994 | dev: true 2995 | 2996 | /source-map-js@1.0.2: 2997 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2998 | engines: {node: '>=0.10.0'} 2999 | dev: true 3000 | 3001 | /source-map-support@0.5.21: 3002 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3003 | dependencies: 3004 | buffer-from: 1.1.2 3005 | source-map: 0.6.1 3006 | dev: true 3007 | 3008 | /source-map@0.6.1: 3009 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3010 | engines: {node: '>=0.10.0'} 3011 | dev: true 3012 | 3013 | /source-map@0.8.0-beta.0: 3014 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 3015 | engines: {node: '>= 8'} 3016 | dependencies: 3017 | whatwg-url: 7.1.0 3018 | dev: true 3019 | 3020 | /spdx-correct@3.1.1: 3021 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 3022 | dependencies: 3023 | spdx-expression-parse: 3.0.1 3024 | spdx-license-ids: 3.0.11 3025 | dev: true 3026 | 3027 | /spdx-exceptions@2.3.0: 3028 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 3029 | dev: true 3030 | 3031 | /spdx-expression-parse@3.0.1: 3032 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 3033 | dependencies: 3034 | spdx-exceptions: 2.3.0 3035 | spdx-license-ids: 3.0.11 3036 | dev: true 3037 | 3038 | /spdx-license-ids@3.0.11: 3039 | resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} 3040 | dev: true 3041 | 3042 | /string-argv@0.3.1: 3043 | resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} 3044 | engines: {node: '>=0.6.19'} 3045 | dev: true 3046 | 3047 | /string-width@5.1.2: 3048 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3049 | engines: {node: '>=12'} 3050 | dependencies: 3051 | eastasianwidth: 0.2.0 3052 | emoji-regex: 9.2.2 3053 | strip-ansi: 7.0.1 3054 | dev: false 3055 | 3056 | /string.prototype.trimend@1.0.5: 3057 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} 3058 | dependencies: 3059 | call-bind: 1.0.2 3060 | define-properties: 1.1.4 3061 | es-abstract: 1.20.1 3062 | dev: true 3063 | 3064 | /string.prototype.trimstart@1.0.5: 3065 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} 3066 | dependencies: 3067 | call-bind: 1.0.2 3068 | define-properties: 1.1.4 3069 | es-abstract: 1.20.1 3070 | dev: true 3071 | 3072 | /string_decoder@1.3.0: 3073 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 3074 | dependencies: 3075 | safe-buffer: 5.2.1 3076 | dev: false 3077 | 3078 | /strip-ansi@6.0.1: 3079 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3080 | engines: {node: '>=8'} 3081 | dependencies: 3082 | ansi-regex: 5.0.1 3083 | dev: true 3084 | 3085 | /strip-ansi@7.0.1: 3086 | resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} 3087 | engines: {node: '>=12'} 3088 | dependencies: 3089 | ansi-regex: 6.0.1 3090 | dev: false 3091 | 3092 | /strip-bom@3.0.0: 3093 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3094 | engines: {node: '>=4'} 3095 | dev: true 3096 | 3097 | /strip-final-newline@2.0.0: 3098 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 3099 | engines: {node: '>=6'} 3100 | 3101 | /strip-final-newline@3.0.0: 3102 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 3103 | engines: {node: '>=12'} 3104 | dev: false 3105 | 3106 | /strip-indent@3.0.0: 3107 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 3108 | engines: {node: '>=8'} 3109 | dependencies: 3110 | min-indent: 1.0.1 3111 | dev: true 3112 | 3113 | /strip-json-comments@3.1.1: 3114 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3115 | engines: {node: '>=8'} 3116 | dev: true 3117 | 3118 | /sucrase@3.21.0: 3119 | resolution: {integrity: sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ==} 3120 | engines: {node: '>=8'} 3121 | hasBin: true 3122 | dependencies: 3123 | commander: 4.1.1 3124 | glob: 7.1.6 3125 | lines-and-columns: 1.2.4 3126 | mz: 2.7.0 3127 | pirates: 4.0.5 3128 | ts-interface-checker: 0.1.13 3129 | dev: true 3130 | 3131 | /supports-color@5.5.0: 3132 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3133 | engines: {node: '>=4'} 3134 | dependencies: 3135 | has-flag: 3.0.0 3136 | dev: true 3137 | 3138 | /supports-color@7.2.0: 3139 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3140 | engines: {node: '>=8'} 3141 | dependencies: 3142 | has-flag: 4.0.0 3143 | dev: true 3144 | 3145 | /supports-preserve-symlinks-flag@1.0.0: 3146 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3147 | engines: {node: '>= 0.4'} 3148 | dev: true 3149 | 3150 | /text-table@0.2.0: 3151 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3152 | dev: true 3153 | 3154 | /thenify-all@1.6.0: 3155 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3156 | engines: {node: '>=0.8'} 3157 | dependencies: 3158 | thenify: 3.3.1 3159 | dev: true 3160 | 3161 | /thenify@3.3.1: 3162 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3163 | dependencies: 3164 | any-promise: 1.3.0 3165 | dev: true 3166 | 3167 | /through@2.3.8: 3168 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 3169 | dev: false 3170 | 3171 | /tinypool@0.2.4: 3172 | resolution: {integrity: sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==} 3173 | engines: {node: '>=14.0.0'} 3174 | dev: true 3175 | 3176 | /tinyspy@1.0.2: 3177 | resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} 3178 | engines: {node: '>=14.0.0'} 3179 | dev: true 3180 | 3181 | /tmp@0.0.33: 3182 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 3183 | engines: {node: '>=0.6.0'} 3184 | dependencies: 3185 | os-tmpdir: 1.0.2 3186 | dev: false 3187 | 3188 | /to-regex-range@5.0.1: 3189 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3190 | engines: {node: '>=8.0'} 3191 | dependencies: 3192 | is-number: 7.0.0 3193 | 3194 | /tr46@1.0.1: 3195 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 3196 | dependencies: 3197 | punycode: 2.1.1 3198 | dev: true 3199 | 3200 | /tree-kill@1.2.2: 3201 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 3202 | hasBin: true 3203 | dev: true 3204 | 3205 | /ts-interface-checker@0.1.13: 3206 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3207 | dev: true 3208 | 3209 | /tsconfig-paths@3.14.1: 3210 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 3211 | dependencies: 3212 | '@types/json5': 0.0.29 3213 | json5: 1.0.1 3214 | minimist: 1.2.6 3215 | strip-bom: 3.0.0 3216 | dev: true 3217 | 3218 | /tslib@1.14.1: 3219 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3220 | dev: true 3221 | 3222 | /tslib@2.4.0: 3223 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 3224 | 3225 | /tsup@6.2.3(typescript@4.8.2): 3226 | resolution: {integrity: sha512-J5Pu2Dx0E1wlpIEsVFv9ryzP1pZ1OYsJ2cBHZ7GrKteytNdzaSz5hmLX7/nAxtypq+jVkVvA79d7S83ETgHQ5w==} 3227 | engines: {node: '>=14'} 3228 | hasBin: true 3229 | peerDependencies: 3230 | '@swc/core': ^1 3231 | postcss: ^8.4.12 3232 | typescript: ^4.1.0 3233 | peerDependenciesMeta: 3234 | '@swc/core': 3235 | optional: true 3236 | postcss: 3237 | optional: true 3238 | typescript: 3239 | optional: true 3240 | dependencies: 3241 | bundle-require: 3.1.0(esbuild@0.15.3) 3242 | cac: 6.7.14 3243 | chokidar: 3.5.3 3244 | debug: 4.3.4 3245 | esbuild: 0.15.3 3246 | execa: 5.1.1 3247 | globby: 11.1.0 3248 | joycon: 3.1.1 3249 | postcss-load-config: 3.1.4 3250 | resolve-from: 5.0.0 3251 | rollup: 2.77.0 3252 | source-map: 0.8.0-beta.0 3253 | sucrase: 3.21.0 3254 | tree-kill: 1.2.2 3255 | typescript: 4.8.2 3256 | transitivePeerDependencies: 3257 | - supports-color 3258 | - ts-node 3259 | dev: true 3260 | 3261 | /tsutils@3.21.0(typescript@4.8.2): 3262 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 3263 | engines: {node: '>= 6'} 3264 | peerDependencies: 3265 | 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' 3266 | dependencies: 3267 | tslib: 1.14.1 3268 | typescript: 4.8.2 3269 | dev: true 3270 | 3271 | /tsx@3.8.2: 3272 | resolution: {integrity: sha512-Jf9izq3Youry5aEarspf6Gm+v/IE2A2xP7YVhtNH1VSCpM0jjACg7C3oD5rIoLBfXWGJSZj4KKC2bwE0TgLb2Q==} 3273 | hasBin: true 3274 | dependencies: 3275 | '@esbuild-kit/cjs-loader': 2.3.3 3276 | '@esbuild-kit/core-utils': 2.1.0 3277 | '@esbuild-kit/esm-loader': 2.4.2 3278 | optionalDependencies: 3279 | fsevents: 2.3.2 3280 | dev: true 3281 | 3282 | /type-check@0.4.0: 3283 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3284 | engines: {node: '>= 0.8.0'} 3285 | dependencies: 3286 | prelude-ls: 1.2.1 3287 | dev: true 3288 | 3289 | /type-detect@4.0.8: 3290 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3291 | engines: {node: '>=4'} 3292 | dev: true 3293 | 3294 | /type-fest@0.20.2: 3295 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3296 | engines: {node: '>=10'} 3297 | dev: true 3298 | 3299 | /type-fest@0.6.0: 3300 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 3301 | engines: {node: '>=8'} 3302 | dev: true 3303 | 3304 | /type-fest@0.8.1: 3305 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 3306 | engines: {node: '>=8'} 3307 | dev: true 3308 | 3309 | /type-fest@1.4.0: 3310 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} 3311 | engines: {node: '>=10'} 3312 | dev: false 3313 | 3314 | /typescript@4.8.2: 3315 | resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} 3316 | engines: {node: '>=4.2.0'} 3317 | hasBin: true 3318 | dev: true 3319 | 3320 | /unbox-primitive@1.0.2: 3321 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3322 | dependencies: 3323 | call-bind: 1.0.2 3324 | has-bigints: 1.0.2 3325 | has-symbols: 1.0.3 3326 | which-boxed-primitive: 1.0.2 3327 | dev: true 3328 | 3329 | /unist-util-stringify-position@2.0.3: 3330 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 3331 | dependencies: 3332 | '@types/unist': 2.0.6 3333 | dev: true 3334 | 3335 | /uri-js@4.4.1: 3336 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3337 | dependencies: 3338 | punycode: 2.1.1 3339 | dev: true 3340 | 3341 | /util-deprecate@1.0.2: 3342 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3343 | dev: false 3344 | 3345 | /validate-npm-package-license@3.0.4: 3346 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 3347 | dependencies: 3348 | spdx-correct: 3.1.1 3349 | spdx-expression-parse: 3.0.1 3350 | dev: true 3351 | 3352 | /vite@3.0.3: 3353 | resolution: {integrity: sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==} 3354 | engines: {node: ^14.18.0 || >=16.0.0} 3355 | hasBin: true 3356 | peerDependencies: 3357 | less: '*' 3358 | sass: '*' 3359 | stylus: '*' 3360 | terser: ^5.4.0 3361 | peerDependenciesMeta: 3362 | less: 3363 | optional: true 3364 | sass: 3365 | optional: true 3366 | stylus: 3367 | optional: true 3368 | terser: 3369 | optional: true 3370 | dependencies: 3371 | esbuild: 0.14.50 3372 | postcss: 8.4.14 3373 | resolve: 1.22.1 3374 | rollup: 2.77.0 3375 | optionalDependencies: 3376 | fsevents: 2.3.2 3377 | dev: true 3378 | 3379 | /vitest@0.22.1: 3380 | resolution: {integrity: sha512-+x28YTnSLth4KbXg7MCzoDAzPJlJex7YgiZbUh6YLp0/4PqVZ7q7/zyfdL0OaPtKTpNiQFPpMC8Y2MSzk8F7dw==} 3381 | engines: {node: '>=v14.16.0'} 3382 | hasBin: true 3383 | peerDependencies: 3384 | '@edge-runtime/vm': '*' 3385 | '@vitest/browser': '*' 3386 | '@vitest/ui': '*' 3387 | happy-dom: '*' 3388 | jsdom: '*' 3389 | peerDependenciesMeta: 3390 | '@edge-runtime/vm': 3391 | optional: true 3392 | '@vitest/browser': 3393 | optional: true 3394 | '@vitest/ui': 3395 | optional: true 3396 | happy-dom: 3397 | optional: true 3398 | jsdom: 3399 | optional: true 3400 | dependencies: 3401 | '@types/chai': 4.3.3 3402 | '@types/chai-subset': 1.3.3 3403 | '@types/node': 18.6.1 3404 | chai: 4.3.6 3405 | debug: 4.3.4 3406 | local-pkg: 0.4.2 3407 | tinypool: 0.2.4 3408 | tinyspy: 1.0.2 3409 | vite: 3.0.3 3410 | transitivePeerDependencies: 3411 | - less 3412 | - sass 3413 | - stylus 3414 | - supports-color 3415 | - terser 3416 | dev: true 3417 | 3418 | /wcwidth@1.0.1: 3419 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 3420 | dependencies: 3421 | defaults: 1.0.3 3422 | dev: false 3423 | 3424 | /web-streams-polyfill@3.2.1: 3425 | resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} 3426 | engines: {node: '>= 8'} 3427 | dev: false 3428 | 3429 | /webidl-conversions@4.0.2: 3430 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 3431 | dev: true 3432 | 3433 | /whatwg-url@7.1.0: 3434 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 3435 | dependencies: 3436 | lodash.sortby: 4.7.0 3437 | tr46: 1.0.1 3438 | webidl-conversions: 4.0.2 3439 | dev: true 3440 | 3441 | /which-boxed-primitive@1.0.2: 3442 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3443 | dependencies: 3444 | is-bigint: 1.0.4 3445 | is-boolean-object: 1.1.2 3446 | is-number-object: 1.0.7 3447 | is-string: 1.0.7 3448 | is-symbol: 1.0.4 3449 | dev: true 3450 | 3451 | /which@2.0.2: 3452 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3453 | engines: {node: '>= 8'} 3454 | hasBin: true 3455 | dependencies: 3456 | isexe: 2.0.0 3457 | 3458 | /word-wrap@1.2.3: 3459 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3460 | engines: {node: '>=0.10.0'} 3461 | dev: true 3462 | 3463 | /wrap-ansi@8.0.1: 3464 | resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} 3465 | engines: {node: '>=12'} 3466 | dependencies: 3467 | ansi-styles: 6.1.0 3468 | string-width: 5.1.2 3469 | strip-ansi: 7.0.1 3470 | dev: false 3471 | 3472 | /wrappy@1.0.2: 3473 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3474 | dev: true 3475 | 3476 | /yallist@4.0.0: 3477 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3478 | 3479 | /yaml-eslint-parser@1.1.0: 3480 | resolution: {integrity: sha512-b464Q1fYiX1oYx2kE8k4mEp6S9Prk+tfDsY/IPxQ0FCjEuj3AKko5Skf3/yQJeYTTDyjDE+aWIJemnv29HvEWQ==} 3481 | engines: {node: ^14.17.0 || >=16.0.0} 3482 | dependencies: 3483 | eslint-visitor-keys: 3.3.0 3484 | lodash: 4.17.21 3485 | yaml: 2.1.1 3486 | dev: true 3487 | 3488 | /yaml@1.10.2: 3489 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 3490 | engines: {node: '>= 6'} 3491 | dev: true 3492 | 3493 | /yaml@2.1.1: 3494 | resolution: {integrity: sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==} 3495 | engines: {node: '>= 14'} 3496 | dev: true 3497 | 3498 | /yocto-queue@0.1.0: 3499 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3500 | engines: {node: '>=10'} 3501 | dev: true 3502 | --------------------------------------------------------------------------------